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

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"

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)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.