既存のラスターの空間投影に基づいてシェープファイルレイヤーを作成しようとしています。(最終的に、これはgdal.Polygonizeで使用され、ラスターデータから形状を取得します。)ただし、CreateLayerを使用しようとすると、エラーが発生します。
- raster_uri-シェープファイルにしたいラスターファイルの場所。私はこれが存在することを知っています。
- out_uri-場所新しいシェープファイルを印刷する場所。
- layer_name-文字列のレイヤー名入力。
- filed_name-文字列フィールド名入力。
これは私が使っていたコードです。
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)
次のエラーメッセージが表示されます。
TypeError: in method 'DataSource_CreateLayer', argument 2 of type 'char const *'
spat_refのタイプの出力が表示される<class 'osgeo.osr.SpatialReference'>
ので、どのchar const *が不満を言っているのかわかりません。
興味深いことに、同じファイルを使用してpythonシェルからこれをすべて実行しようとすると、レイヤーは正常に作成されます。何が問題になるのかについてのアイデアはありますか?