Saya memiliki gambar yang saya klip dengan poligon AOI. Area kontur ditetapkan ke nilai piksel = 0 dan saya memiliki nilai nodata -32768. Saya ingin mendefinisikan kembali nilai nodata menjadi nol. Saya biasa melakukan ini dengan ArcMap dengan mudah di kalkulator raster, tetapi di QGIS saya tidak melihat bagaimana saya bisa melakukannya. Ada ide?
7
Jawaban:
Di QGIS, Anda dapat menggunakan Kalkulator Raster dengan perhitungan berikut:
Dengan perhitungan ini, jika nilai sel -32768 Anda akan mendapatkan 0 di sel itu dan jika berbeda dari -32768 sel akan menyimpan nilai yang dimilikinya.
sumber
Saya menemukan solusi untuk ini. Pertama saya mengonversi gambar menjadi lapisan vrt (gdalbuildvrt) dengan -srcnodata 0, kemudian saya menerjemahkannya kembali menjadi file tif dengan gdal_translate -a_nodata. Bekerja dengan baik! :)
sumber
Satu langkah paling sederhana dan, IMO, solusi yang paling dapat diandalkan secara konsisten untuk mengklasifikasi NoData ke nol adalah dengan menggunakan alat Reklasifikasi Nilai Grid (SAGA) dalam kotak peralatan pemrosesan.
Setelah memilih raster untuk direklasifikasi, cukup gulir ke bagian bawah dialog, pastikan kotak
replace no data values
kotak dicentang. Nilai defaultnya adalah nol (tapi tentu saja Anda bisa mengganti yang lain). Kemudian hapus centang padareplace other values
kotak dan biarkan semua bidang lain sendirian (jadi semua yang Anda lakukan adalah memastikan satu kotak dicentang dan tidak mencentang yang lain - tidak diperlukan pengaturan lain).sumber
Saya kira Anda bisa melakukannya dengan kalkulator raster .
Jika tidak dengan bantuan plugin GRASS dan r.null Anda akan melakukannya dengan mudah. Opsi itu berarti Anda harus terlebih dahulu membuat mapset GRASS untuk mengimpor raster Anda.
sumber
r.null
melakukannya untukku.Memiliki masalah yang sama, pada akhirnya saya menggunakan Python secara langsung - Anda mungkin harus menyesuaikan numpy.where untuk tujuan spesifik Anda. Dalam kasus di bawah ini, nilai-nilai piksel dijaga sebagaimana adanya jika mereka adalah> = 0, semua piksel lainnya - dalam hal ini hanya yang memiliki nilai tanpa data - yang disetel ke "0"
sumber
Saya telah mencoba menggunakan plugin rastercalc dan Raster Calculator dan tidak berhasil - Kesalahan sintaksis. Apa yang berhasil adalah alat Warp dan menentukan nilai nodata sumber dan tujuan (lihat jawaban underdark untuk pertanyaan serupa Bagaimana mengecualikan nilai yang hilang dari lapisan raster? )
sumber
Apa yang berhasil bagi saya adalah mengekspor raster sebagai file .asc, kemudian membuka editor teks dan menggunakan find and replace untuk mengganti nilai NoData lama dengan nilai yang saya inginkan.
sumber
Dalam kasus saya, itu adalah citra satelit yang perlu saya konversikan menjadi 8 bit dan terus menghasilkan nilai data saat menggunakan -scale di gdal_translate.
Saya dapat menyelesaikan masalah ini dengan mengekspor raster (lapisan klik kanan -> ekspor -> simpan lapisan sebagai ...) ke file baru sebagai data yang diberikan (centang di bagian atas jendela dialog).
sumber
Untuk skrip python Anda dapat menggunakan baris berikut sebelum WriteArray.
sumber