0

ラスター ファイルとポリゴン シェープファイルがあります。ポリゴンがカバーする領域のラスター ファイルの平均値を取得するのが好きです。私はこれを python スタンドアロン スクリプトで行うのが好きです。そのため、QGIS と Starspan は機能しません。また、Arcpy は使用できません。私はGDALを使用するのが好きです。どの Python パッケージ? これを行う方法はお勧めできますか?

4

1 に答える 1

2

ベクターレイヤーをラスタライズできる gdal.RasterizeLayer 関数があります。いくつかの欠点があります。ラスタライズする出力データセットが必要です。さらに、ジオメトリが重複している場合は、最初に各ジオメトリを個別のベクター レイヤーに分離する必要があります。つまり、すべてのジオメトリをループする必要があります。

gdal を使用すると、MEM ドライバーを使用してメモリ内ファイルを作成できます。これにより少し簡単になりますが、データセット作成のオーバーヘッドは依然として多くあります。

ジオメトリごとに、手順は多かれ少なかれ次のようになります。

driver = gdal.GetDriverByName('MEM')
outds = driver.Create('', pixelxsize, pixelysize, 1, GDT_Byte)
outds.SetProjection(target_proj)
outds.SetGeoTransform(target_gt)

gdal.RasterizeLayer(outds, [1], vectorlayer, burn_values=[1])

現在、outds にはジオメトリのマスクが含まれており、たとえば np.masked_where で使用すると、ジオメトリ内のピクセルを分離できます。

それほど便利ではありませんが、マスクされたポリゴンの配列があれば、numpy/scipy を使用して統計を取得するのは非常に簡単です。

編集: より詳細な例については、このスクリプトを参照してください: http://svn.osgeo.org/gdal/trunk/autotest/alg/rasterize.py

于 2013-03-13T10:26:02.300 に答える