1

私は基本的にこの質問の反対を達成しようとしています。

私は、gdal python バインディングを介して geotiff に書き込みたい (または単に gdal データセットに追加したい) WGS84 座標系に緯度と経度の座標 (値を含む) のセットを持っています。

たとえば、私の開始データは次のようになります。

lat = np.array([45.345,56.267,23.425])
lon = np.array([134.689,128.774,111.956])
value = np.array([3.0,6.2,2.5])

どうすればこれを行うことができますか?ありがとう!

4

2 に答える 2

2

あなたの質問にはありませんが、緯度/経度データを WGS84 データムから UTM 投影に投影する必要があるようです。これは、2 つのオプション(ターゲット SRID)を使用して、GDAL からogr2ogrコマンド ラインを使用することができます。-a_srs 4326 -t_srs ????GDAL の OGR モジュールを使用して Python で内部的に行うこともできます。使用例です

ポイント データからラスターを取得するには、2 つの独立した方法があります。1 つ目は、データ内の値を補間して、値が領域 (または場合によっては凸包のみ) にあふれるようにすることです。2D で値を補間するための多くの方法とツールがあります。GDAL では、コマンドライン ツールgdal_gridがこの目的に役立ちますが、Python からは使用できないと思います。おそらく最も簡単なのはscipy.interpolateを使用することです。2D NumPy 配列を取得したら、GDAL/Pythonを使用してラスター ファイルを簡単に作成できます。

ポイントをラスターに変換する 2 つ目の方法は、ポイントの位置をラスター上のピクセルに焼き付けることです。最初の方法とは異なり、ポイントがある場所のみに値があり、値はラスター内の他の場所では内挿されません。ベクターをラスターにラスタライズまたは焼き付けるには、GDAL コマンド ライン ツールgdal_rasterizeを使用します。GDAL/Python を使用して内部的に実行することもできます。例を次に示します。

于 2013-02-11T19:59:55.757 に答える
1

Python から gdal_grid を使用することができます。私はそれを使用しています。必要なことは、コマンド ラインから使用しているかのようにコマンドを作成し、subprocess.call(com, shell=True) 内に配置することだけです。最初に subprocess モジュールをインポートする必要があります。

これは実際に私がそれを使用している方法です:

pcall= "gdal_grid  --config 'NUM_THREADS=ALL_CPUS GDAL_CACHEMAX=2000'\
       -overwrite -a invdist:power=2.0:smoothing=2.0:radius1=360.0:radius2=360.0\
       -ot UInt16 -of GTiff -outsize %d %d -l %s -zfield 'Z' %s %s "%(npx, npy,\
       lname,ptshapefile,interprasterfile)

subprocess.call(pcall, shell= True)

NUM_THREADS オプションは gdal 1.10+ から利用可能です

于 2015-01-29T17:16:07.520 に答える