Saya mencoba membuat layer shapefile berdasarkan proyeksi spasial dari raster yang sudah ada. (Pada akhirnya, ini akan digunakan di gdal.Polygonize untuk mendapatkan bentuk dari data raster saya.) Namun, saya menghadapi kesalahan ketika mencoba menggunakan CreateLayer.
- raster_uri- lokasi file raster yang ingin saya buat menjadi shapefile. Saya tahu ini ada.
- out_uri- Lokasi Saya ingin cetakan baru untuk dicetak.
- layer_name- Input nama lapisan.
- diajukan_name- Masukan nama bidang string.
Ini adalah kode yang saya gunakan.
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)
Ini menghasilkan pesan kesalahan ini:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
Mengeluarkan tipe spat_ref muncul <class 'osgeo.osr.SpatialReference'>
jadi saya tidak yakin apa yang dikeluhkan oleh char const *.
Menariknya, jika saya mencoba melakukan ini semua dari shell python menggunakan file yang sama, layer akan baik-baik saja. Ada ide tentang apa yang mungkin menjadi masalah?