Tôi đang cố gắng tạo một lớp shapefile dựa trên hình chiếu không gian của một raster đã tồn tại. (Cuối cùng, điều này sẽ được sử dụng trong gdal.Polygonize để lấy hình từ dữ liệu raster của tôi.) Tuy nhiên, tôi gặp phải một lỗi khi cố gắng sử dụng CreatLayer.
- raster_uri- vị trí của tệp raster mà tôi muốn tạo thành một shapefile. Tôi biết điều này tồn tại.
- out_uri- Vị trí tôi muốn shapefile mới in.
- layer_name- Nhập tên lớp chuỗi.
- tệp_name- Nhập tên trường chuỗi.
Đây là mã mà tôi đang sử dụng.
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)
Nó mang lại thông báo lỗi này:
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
Xuất ra loại spat numf xuất hiện vì <class 'osgeo.osr.SpatialReference'>
vậy tôi không chắc chắn char char * nó đang phàn nàn về điều gì.
Thật thú vị, nếu tôi cố gắng làm tất cả điều này từ một vỏ python bằng cùng một tệp, lớp sẽ tạo ra tốt. Bất kỳ ý tưởng về những gì có thể là vấn đề?