Dalam dokumentasi untuk gdal_calc dinyatakan kalkulator raster baris perintah dengan sintaks numpy . Kemudian ada beberapa contoh di mana di salah satunya:
gdal_calc.py -A input.tif --outfile = result.tif --calc = "A * (A> 0)" --NoDataValue = 0 - berarti menetapkan nilai nol dan di bawah menjadi nol
Sayangnya tidak ada contoh pada operator logis seperti:
--calc = "A * (A> 0 dan A> B)" - berarti menjaga A jika A lebih besar nol dan lebih besar B dan mengatur sisanya menjadi nol
Berdasarkan fungsi logika Numpy / Scipy saya berharap untuk menulis operator logis sebagai:
--calc = "A * logical_and (A> 0, A> B)"
Saya mencoba ini dan tampaknya berhasil tetapi saya ingin diyakinkan bahwa itu benar.
Dengan cara yang sama jika Anda ingin minimum A dan B:
--calc = "A * (A <= B) + B * (A> B)"
Anda bisa menulis:
--calc = "minimum (A, B)"
Masalah saya adalah saya tidak dapat menemukan buku masak untuk memastikan saya mendapatkan ini dengan benar. Apakah ada beberapa buku masak yang bagus dengan contoh lanjutan tentang apa yang bisa dan tidak mungkin dengan gdal_calc?
Sebagai lanjutan dari jawaban Benjamin, Anda dapat menggunakan logical_or () atau logical_and (). Lihat http://docs.scipy.org/doc/numpy/reference/routines.logic.html . Contoh berikut ini bekerja dengan baik untuk saya. Ini menetapkan semua nilai antara 177 dan 185 (inklusif) ke 0, yang kemudian diperlakukan sebagai nodata.
sumber
Saya memiliki raster di mana nilai berkisar antara -1 dan 3 di mana nol adalah angka yang valid. Saya punya beberapa masalah dalam membuat ekspresi gdal_calc jadi buat solusi yang cepat dan ganas ini.
sumber