PythonでPolygonize関数を使用すると問題が発生します。このためのクックブックの例はここにあります。
私のコードの関連部分は次のとおりです。
sourceRaster = gdal.Open('myraster.tif')
band = sourceRaster.GetRasterBand(1)
bandArray = band.ReadAsArray()
outShapefile = "polygonized"
driver = ogr.GetDriverByName("ESRI Shapefile")
if os.path.exists(outShapefile+".shp"):
driver.DeleteDataSource(outShapefile+".shp")
outDatasource = driver.CreateDataSource(outShapefile+ ".shp")
outLayer = outDatasource.CreateLayer("polygonized", srs=None)
gdal.Polygonize( band, None, outLayer, -1, [], callback=None )
outDatasource.Destroy()
sourceRaster = None
私はバンドに関連情報があることを知っています、ここにスニペットがありbandArray
ます:
array([[ 4., 4., 3., 3., 3., 2., 2., 2., 2., 3., 3., 3., 3.,
3., 3., 3., 3., 4., 4., 4., 4., 4., 4., 4., 4., 4.,
4., 4., 4., 4.],
QGISで属性テーブルを開くと、空です:
編集:
変換は、ラスター->変換->ポリゴン化ツールを使用してQGISでうまく機能します
ポリゴン化するラスターのスクリーンショット:
そして、QGISツールからの変換結果のスクリーンショット:
Windows 7、GDALバージョン1.10.0-3でEnthoughtディストリビューションを使用しています
問題は、GDALとクックブックの例を使用してPythonでラスターをポリゴン化できないことです。QGISGUIでは問題なくこの同じラスターをポリゴン化できます
ラスターはどのように見えますか?本当にポリゴンが含まれていますか?代わりにgdal_polygonize.pyを使用すると動作しますか?
—
BradHards 14
QGISの作業プロセスのスクリーンショットを追加するために編集
—
camdenl 14
ここで実際の問題は何ですか?
—
フェスター
追加されました特定の問題
—
camdenl
同様の問題(空のシェープファイルが作成されている)があり、フィールドを作成しても役に立ちませんでした。私が間違っていたことは、polygonizeを呼び出す前に、コード内でシェープファイルを閉じていなかったことです。あなたはあなたの例でそれを閉じます、私はこれを他の人の参考のために投稿しています。
—
ステファニー