Estou tentando criar uma camada de shapefile com base na projeção espacial de uma varredura já existente. (Por fim, isso será usado no gdal.Polygonize para obter uma forma dos meus dados de varredura.) No entanto, estou encontrando um erro ao tentar usar o CreateLayer.
- raster_uri- local do arquivo raster que eu quero transformar em um shapefile. Eu sei que isso existe.
- out_uri- Location Quero que o novo shapefile seja impresso.
- layer_name - Entrada do nome da camada de string.
- filename_name- String nome do campo de entrada.
Este é o código que eu estava usando.
raster = gdal.Open(raster_uri)
driver = ogr.GetDriverByName("ESRI Shapefile")
ds = driver.CreateDataSource(out_uri)
spat_ref = osr.SpatialReference()
proj = raster.GetProjectionRef()
spat_ref.ImportFromWkt(proj)
layer = ds.CreateLayer(layer_name, spat_ref, ogr.wkbPolygon)
Ele gera esta mensagem de erro:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
A saída do tipo de spat_ref aparece <class 'osgeo.osr.SpatialReference'>
assim, não tenho certeza do que caractere const * está reclamando.
Curiosamente, se eu tentar fazer tudo isso a partir de um shell python usando o mesmo arquivo, a camada cria muito bem. Alguma idéia sobre qual pode ser o problema?