Saya mencoba memproses beberapa file raster bioklimatik, seperti dapat diunduh dari http://www.worldclim.org/current (set bioclim). Mereka tampaknya memiliki nilai nodata yang diatur -3.4e+38
menurut QGIS (melihat output dari gdalinfo, itu -3.39999999999999996e+38
).
Tampaknya alat gdal tidak dapat menangani nilai nodata ini, dan qgis tampaknya tidak dapat mengenalinya juga. Dalam style layer, ada entri untuk -3.4e + 38 yang diatur ke 100% transparan, tetapi masih menampilkan nilai-nilai tersebut, meskipun pemilih "Identifikasi fitur" menunjukkan mereka memiliki nilai -3.4e + 38.
Saya telah mencoba membuat vrt untuk mengubah nilai nodata ke -9999, tetapi itu tidak berhasil.
Bagaimana saya bisa memproses file tersebut untuk memiliki nilai nodata yang dapat digunakan?
Jawaban:
GDAL dapat menangani nilai-nilai ini. Faktanya, nilai NoData default GDAL hampir sama dengan nilai Anda. Saya pikir masalahnya adalah kesalahan floating point di QGIS. Saya memiliki masalah yang sama dengan nilai-nilai NoData floating point.
Jika Anda ingin mengubah nilai NoData menggunakan GDAL Anda bisa menggunakan gdalwarp atau mungkin gdal_translate dan mengatur nilai nodata ke integer dari sana (masing-masing -dstnodata dan -a_nodata). Sebagai contoh, saya telah berhasil menetapkan Nilai NoData saya menjadi -999 dalam raster float 64bit di masa lalu. Namun, mengingat bahwa kami telah menetapkan ada masalah titik mengambang dalam hal ini, saya tidak ingin menjamin ini akan berhasil dalam semua kasus.
sumber
gdal_translate -a_nodata -9999 input.tif output.tif
meskipungdalwarp -dstnodata -9999 input.tif output.tif
melakukan trik. Dari file input 9MB, pendekatan saya menghasilkan file 26MB, sedangkan gdalwarp menghasilkan file output 52MB. Namun, jika raster berisi nilai float, pendekatan saya tidak akan berfungsi di mana yang ini.-co COMPRESS=LZW
.Saya berhasil menemukan solusi untuk masalah ini dengan mengubah format data ke Int16 dari Float32. Nilai minimumnya adalah -32768 dan dapat diproses sebagai nilai nodata. Perintah berikut melakukan trik:
Mungkin ada solusi yang lebih baik, tetapi ini setidaknya memecahkan masalah saya segera.
sumber
Jawaban untuk pertanyaan ini mungkin juga akan memecahkan masalah ini: Mengubah piksel nodata -3,40282347e + 38 ke nomor yang berbeda di QGIS
Singkatnya, Anda bisa menggunakan r.null dari kotak alat pemrosesan untuk mengubah nilai.
sumber
Anda dapat mencoba gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0
sumber