Estoy tratando de crear una capa de shapefile basada en la proyección espacial de un ráster ya existente. (En última instancia, esto se utilizará en gdal.Polygonize para obtener una forma de mis datos ráster). Sin embargo, me encuentro con un error al intentar usar CreateLayer.
- raster_uri- ubicación del archivo ráster que quiero convertir en un archivo de forma. Sé que esto existe.
- out_uri- Ubicación Quiero que se imprima el nuevo shapefile.
- layer_name- Cadena de entrada de nombre de capa.
- nombre_archivo- Entrada de nombre de campo de cadena.
Este es el código que estaba 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)
Produce este mensaje de error:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
La salida del tipo de spat_ref aparece <class 'osgeo.osr.SpatialReference'>
así que no estoy seguro de qué char const * se está quejando.
Curiosamente, si trato de hacer todo esto desde un shell de Python usando el mismo archivo, la capa se crea muy bien. ¿Alguna idea sobre cuál podría ser el problema?