-3.4e + 38 nodata değeri ile ne yapmalı?


17

Http://www.worldclim.org/current (bioclim set) adresinden indirilebilen bazı biyoklimatik tarama dosyalarını işlemeye çalışıyorum . QGIS'e -3.4e+38göre ayarlanmış nodata değerleri var gibi görünüyor (gdalinfo'nun çıktısına bakarak, bu -3.39999999999999996e+38).

Görünüşe göre gdal araçları bu nodata değeriyle başa çıkamıyor ve qgis de bunu tanıyamıyor gibi görünüyor. Katman stilinde,% 100 şeffaf olarak ayarlanmış -3.4e + 38 için bir giriş vardır, ancak "Özellikleri tanımla" seçici -3.4e + 38 değerine sahip olduğunu gösterse de yine de bu değerleri görüntüler.

Nodata değerlerini -9999 yerine dönüştürmek için bir vrt oluşturmayı denedim, ama bu da işe yaramadı.

Bu tür dosyaları kullanılabilir nodata değerlerine sahip olmak için nasıl işleyebilirim?

dosyadan alınan nodata değerleri saydamlık ayarının bir etkisi yoktur


Sözde yeni sürüm qgis çok daha iyi nodata desteği var. 1.8 ile birçok "nodata" sorunum vardı (özellikle bir alandaki histogramı veya araçları hesaplamaya çalıştığımda).
nickves

Yanıtlar:


4

GDAL olabilir bu değerleri işlemek. Aslında GDAL'ın varsayılan NoData değeri sizinkiyle hemen hemen aynıdır. Sorun QGIS olsa bir kayan nokta hatası olduğunu düşünüyorum. Kayan nokta NoData değerleri ile aynı sorun var.

Eğer GDAL Kullanabileceğin kullanarak nodata değerini değiştirmek isterseniz gdalwarp veya belki gdal_translate ve nodata değerini oradan bir tamsayıya ayarlayabilirsiniz (sırasıyla -dstnodata ve -a_nodata). İnastance için, NoData değeri -999 geçmişte bir 64bit float raster ayarlama başarılı oldu. Bununla birlikte, bu konuda bir kayan nokta sorunu tespit ettiğimiz göz önüne alındığında, bunun her durumda işe yarayacağını garanti etmek istemem.


Cevabınız için teşekkürler Sylvester. Hile yaptım gdal_translate -a_nodata -9999 input.tif output.tifrağmen gdal_translate kullanarak çalışmak için alamadım gdalwarp -dstnodata -9999 input.tif output.tif. 9 MB'lık bir giriş dosyasından yaklaşımım 26 MB'lık bir dosya ile sonuçlanırken, gdalwarp 52 MB'lık bir çıktı dosyası ile sonuçlandı. Ancak, raster float değerleri içeriyorsa, yaklaşımım bunun olacağı yerde çalışmaz.
rudivonstaden

Bunun için QGIS hata izleyicide açık bir bilet olup olmadığını kontrol ettiniz mi?
underdark

1
Veri şişmesi, daha büyük bir piksel derinliği (63 bit'e karşı 16 bit, örneğin) kullanmasından kaynaklanabilir veya orijinalin bir JPEG olması ve yeni sonucunuzun bir TIFF olması olabilir. @underdark - Üzgünüm! Hayır, açık bir bilet olup olmadığını kontrol etmedim.
MappaGnosis

@underdark Buna uyan bir bilet bulamadım, bu yüzden bir hata raporu ekledim ( hub.qgis.org/issues/6786 ).
rudivonstaden

1
Daha küçük dosya boyutu için eklemeniz yeterlidir -co COMPRESS=LZW.
j08lue

11

Float32'den veri formatını Int16'ya dönüştürerek bu soruna geçici bir çözüm bulmayı başardım. Minimum değer -32768'dir ve bir nodata değeri olarak işlenebilir. Aşağıdaki komut hile yaptı:

gdal_translate -ot Int16 -a_nodata -32768 input.tif output.tif

Muhtemelen daha iyi bir çözüm var, ama bu en azından acil sorunumu çözüyor.

nodata doğru şekilde alındı



0

gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NODataValue = 0'ı deneyebilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.