Mengklasifikasi ulang raster menggunakan GDAL?

Jawaban:

8

gdal_calc dapat digunakan untuk klasifikasi ulang banyak kelas.

Misalnya, Anda dapat mengubah nilai di bawah (dan sama) 12 menjadi 10, nilai 20, 30, 40, 50 tetap sama, dan nilai di atas 50 dan 62 diubah menjadi 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
Jot eN
sumber
Perhatikan bahwa dokumentasi GDAL ( gdal.org/gdal_calc.html ) menyiratkan bahwa gdal_calc.py akan berfungsi dengan beberapa raster, karena Anda dapat memilih huruf besar dari alfabet. Saya tidak dapat menjalankannya dengan lebih dari dua input sekaligus. Itu menerima lebih banyak input tanpa menghasilkan kesalahan, tetapi pengujian saya menunjukkan bahwa hanya dua yang pertama digunakan.
David A
7

gdal_reclassify adalah alat Python tidak resmi, berdasarkan binding Python GDAL, mampu mengklasifikasikan berdasarkan beberapa kelas nilai.

Persyaratan:

python
numpy
gdal binaries
python-gdal bindings

Contoh:

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"
Antonio Falciano
sumber
3

Jika Anda bekerja dalam skrip python, gunakan .ReadAsArraymetode ini. Anda kemudian dapat mereklasifikasi menggunakan 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)
RoperMaps
sumber
1
Kelemahan dari ini adalah bahwa seluruh raster harus sesuai dengan memori. Dengan membaca gdal_calc.py raster dalam potongan yang lebih kecil ditangani untuk Anda.
Iamlukesky