Saya memiliki seperangkat raster (.vrt) dengan data kelembaban tanah harian. Saya ingin menjumlahkan piksel semua raster untuk mengukur berdasarkan bulan. Namun, seluruh dunia tidak tercakup setiap hari, yang menghasilkan nilai nodata di tempat-tempat di mana ada langkah-langkah untuk hari-hari lainnya.
Yang ingin saya lakukan, adalah menjumlahkan nilai-nilai setiap raster. Namun, tampaknya setiap kali sebuah pixel nodata ada dalam penjumlahan, pixel yang dihasilkan langsung dikategorikan sebagai nodata. Saya ingin memiliki yang sebaliknya: mengabaikan semua nilai nodata dan menjumlahkan sisanya.
Saya memikirkan 2 cara untuk memecahkan masalah:
- menjumlahkan raster mengabaikan nilai-nilai nodata
- mengubah piksel nodata menjadi nilai 0, lalu jumlah semua raster
Sayangnya, saya tidak dapat menemukan alat apa pun untuk melakukan ini.
Ada yang bisa bantu saya?
Jawaban:
Jika Anda memiliki akses ke ArcGIS maka alat Statistik Sel memiliki opsi untuk mengabaikan nodata yang Anda jumlah \ mean \ min \ maks raster Anda.
sumber
Pertama, Anda dapat menggunakan gdal_calc.py untuk mengubah semua -9999 menjadi 0 dan mengatur nilai NoData ke 0.
Contohnya:
Kemudian, Anda dapat mengabaikan nilai NoData menggunakan gdal_translate dengan opsi -a_nodata diikuti oleh tidak ada .
Contoh:
sumber
gdal_translate -a_nodata none ...
. Misalnya:gdal_calc.py -A input.tif --outfile=input_with_NoData.tif --type=Int16 --calc="A+9999*(A==-9999)" --NoDataValue=0
cd
perintah dan coba lagi hanya untuk memilikinya-A test.tif
.Dalam R:
sumber
s
, dengan argumen yangna.rm=TRUE
mengakibatkanNA
nilai-nilai diabaikan. Objek outputss
adalahraster
objek yang dapat diekspor denganwriteRaster
(lihat?writeRaster
). (@RobertH adalah penciptaraster
paket R. )Alat Bersyarat dalam Analis Tata Ruang adalah cara mudah untuk mengkonversi nilai nol ke nol. Maka mengambil jumlah harus mudah.
sumber
Saya memiliki masalah yang sama beberapa waktu lalu dan saya berhasil menyelesaikannya.
Sama seperti catatan tentang tampilan nilai nodata di QGIS: nilai nodata selalu ditampilkan sebagai nilai nodata di jendela peta dan ketika menggunakan alat "informasi objek", tidak masalah jika mereka benar-benar memiliki nilai -9999, 0, NULL dll Jadi setelah reklasifikasi nilai nodata ke 0, jika Anda masuk dalam pengaturan layer Anda akan menemukan di Metadata bahwa nodata memiliki nilai 0.
Saya akhirnya menemukan alat yang sempurna untuk pencarian, GRASS
r.series
. Dengan pengaturan "operasi agregat" "maksimum" dan "propagate NULLs" tidak dicentang, alat akan membuat Layer yang sesuai dengan kebutuhan Anda.sumber
Saya ingat memiliki masalah ini beberapa waktu lalu. Sebagai solusi, saya pikir saya memberi +1 ke semua sel dalam raster, menambahkan raster bersama, lalu melakukan pengurangan akhir (dari banyaknya +1 yang Anda tambahkan). Ini sangat kasar tetapi jika itu menyelesaikan pekerjaan ...!
Atau, gunakan 'Reklasifikasi nilai kisi' di kotak alat Pemrosesan di QGIS untuk mengonversi nilai nol Anda menjadi nol.
sumber