-3.4e + 38 nodata值怎么办?


17

我正在尝试处理一些生物气候栅格文件,例如可以从http://www.worldclim.org/current(bioclim set)下载的文件。他们似乎没有-3.4e+38根据QGIS 设置的无数据值(查看gdalinfo的输出是-3.39999999999999996e+38)。

似乎gdal工具无法处理此nodata值,而qgis似乎也无法识别它。在图层样式中,有一个-3.4e + 38项设置为100%透明,但是即使“识别要素”选择器将其显示为值-3.4e + 38,它仍然显示此类值。

我试图创建一个vrt来将nodata值转换为-9999,但这还是行不通的。

如何处理此类文件以具有可用的nodata值?

从文件中获取nodata值 设置透明度无效


据说在新版本中qgis具有更好的nodata支持。我在1.8中遇到了许多“ nodata”问题(尤其是当我尝试计算区域内的直方图或均值时)。
尼克

Answers:


4

GDAL 可以处理这些值。实际上,GDAL的默认NoData值与您的默认值几乎相同。我认为问题是QGIS中的浮点错误。我对浮点NoData值有同样的问题。

如果要使用GDAL更改NoData值,则可以使用gdalwarpgdal_translate,然后从此处将nodata值设置为整数(分别为-dstnodata和-a_nodata)。为方便起见,我过去曾在64位浮动栅格中成功将我的NoData值设置为-999。但是,鉴于我们已经确定了这方面的浮点问题,因此,我不保证在所有情况下都可以使用。


谢谢您的回答,西尔维斯特。gdal_translate -a_nodata -9999 input.tif output.tif尽管gdalwarp -dstnodata -9999 input.tif output.tif成功了,但我无法使用gdal_translate来工作。从一个9MB的输入文件中,我的方法生成了26MB的文件,而gdalwarp生成了52MB的输出文件。但是,如果栅格中包含浮点值,那么我的方法将无法在该方法上工作。
rudivonstaden 2012年

您是否检查过QGIS Bug跟踪器中是否有开放的票证?
黑暗

1
数据膨胀可能是由于使用了更大的像素深度(例如63位与16位),也可能仅仅是由于原始图像是JPEG而新结果是TIFF。@underdark-对不起!不,我没有检查是否有开放票。
MappaGnosis

@underdark我找不到与此相符的票证,因此我添加了一个错误报告(hub.qgis.org/issues/6786)。
rudivonstaden 2012年

1
对于较小的文件大小,您只需添加-co COMPRESS=LZW
j08lue

11

通过将数据格式从Float32转换为Int16,我设法找到了解决此问题的方法。最小值为-32768,可以作为无数据值处理。以下命令可以解决问题:

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

可能有更好的解决方案,但这至少解决了我的紧迫问题。

nodata正确拾取



0

您可以尝试gdal_calc.py input.tif --outfile = output.tif --calc =“ A *(A> 0)”-NoDataValue = 0

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.