GDALを使用してラスターを再分類しますか?


回答:


8

gdal_calc 多くのクラスの再分類に使用できます。

たとえば、12〜10以下の値を変更でき、20、30、40、50の値は同じままで、50〜62の値は60に変更されます。

  python gdal_calc.py -A input.tif --outfile=output.file --calc="10*(A<=12)+20*(A==20)+30*(A==30)+40*(A==40)+50*(A==50)+60*((A>50)*(A<=62))" --NoDataValue=0

GDALのドキュメント(gdal.org/gdal_calc.html)は、大文字のアルファベットを選択できるため、gdal_calc.pyが複数のラスターで機能することを示しています。一度に3つ以上の入力で動作させることができませんでした。エラーを発生させることなく、より多くの入力を受け入れましたが、私のテストでは、最初の2つだけが使用されたことが示されました。
デビッドA

7

gdal_reclassifyは、Python GDALバインディングに基づく非公式のPythonツールで、いくつかの値のクラスに従って再分類できます。

要件:

python
numpy
gdal binaries
python-gdal bindings

例:

python gdal_reclassify.py source_dataset.tif destination_dataset.tif -c "<30, <50, <80, ==130, <210" -r "1, 2, 3, 4, 5" -d 0 -n true -p "COMPRESS=LZW"

3

Pythonスクリプトで作業している場合は、.ReadAsArrayメソッドを使用します。その後、numpyを使用して再分類できます。

import numpy as np
sample = np.random.randint(low = 0, high = 9, size =(5,5))
print(sample)
sample[sample == 4] = 40
sample[sample <= 2] = -20
print(sample)

1
これの欠点は、ラスタ全体がメモリに収まる必要があることです。gdal_calc.pyを使用すると、小さいチャンクでラスターを読み取ることが処理されます。
Iamlukesky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.