Estoy intentando crear una capa shapefile basada en la proyección espacial de un raster ya existente. (En última instancia, esto se utilizará en gdal.Polygonize para obtener una forma de mis datos raster). Sin embargo, me encuentro con un error al intentar utilizar CreateLayer.
- raster_uri- ubicación del archivo raster que quiero convertir en un shapefile. Sé que esto existe.
- out_uri- Lugar donde quiero que se imprima el nuevo shapefile.
- layer_name- Cadena de entrada del nombre de la capa.
- filed_name- Cadena de entrada del nombre del campo.
Este es el código que estaba utilizando.
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)
El resultado es este mensaje de error:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
La salida del tipo de spat_ref aparece como <class 'osgeo.osr.SpatialReference'>
por lo que no sé de qué char const * se está quejando.
Curiosamente, si trato de hacer todo esto desde un shell de python utilizando el mismo archivo, la capa crea sin problemas. ¿Alguna idea sobre lo que podría ser el problema?