Ich versuche, eine Shapefile-Ebene basierend auf der räumlichen Projektion eines bereits vorhandenen Rasters zu erstellen. (Letztendlich wird dies in gdal.Polygonize verwendet, um eine Form aus meinen Rasterdaten zu erhalten.) Beim Versuch, CreateLayer zu verwenden, tritt jedoch ein Fehler auf.
- raster_uri- Speicherort der Rasterdatei, die ich in ein Shapefile umwandeln möchte. Ich weiß, dass es das gibt.
- out_uri- Speicherort Ich möchte, dass das neue Shapefile gedruckt wird.
- Layername - Eingabe des String-Layernamens.
- file_name- Eingabe des String-Feldnamens.
Dies ist der Code, den ich verwendet habe.
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)
Es wird folgende Fehlermeldung angezeigt:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
Die Ausgabe des Typs spat_ref wird <class 'osgeo.osr.SpatialReference'>
so angezeigt, dass ich nicht sicher bin, über welches char const * es sich beschwert.
Interessanterweise wird die Ebene einwandfrei erstellt, wenn ich versuche, dies alles über eine Python-Shell mit derselben Datei zu tun. Irgendwelche Ideen, was das Problem sein könnte?