如何在DEM栅格中将值<= 0的所有像素设置为“ nodata”?


28

我有一个DEM栅格,像素值在3000到-0.0003之间。我需要将所有值为0 且更小(<= 0)的像素设置为“ nodata”(用于以后的栅格计算并减小文件大小)。

对我来说,这似乎是栅格计算器的一项任务(像素<= 0的设置值到“ nodata”)或重新分类(像素<= 0的设置值到“ nodata”并保留所有其他值),但是我没有知识。


我还需要将所有值<0的像素设置为“ nodata”。因此,来自vascobnunes的帖子对我没有帮助。
MAP

抱歉,但是它不能帮助我更改栅格显示的样式。我需要pysicaly编辑我的光栅文件。
MAP

从评论和结束建议看来,您似乎应该编辑您的问题以明确说明您想要什么以及您已经尝试过什么。
PolyGeo

Answers:


29

我没有找到一种工具解决方案,但是您可以首先使用栅格计算器将低于某个阈值的所有值都变为零,然后使用带有-a_nodata 0的gdal_translate将0变为nodata。

在此处输入图片说明

在此处输入图片说明


17

这是用于将范围设置为NULL的GRASS mapcalc表达式:

r.mapcalc "dem_corrected = if(dem<=0, null(), dem)"

太好了,为我工作!
ilFonta

16

可以在QGIS的栅格计算器中一步完成。

在QGIS3中,对于名为“ x”的栅格图层,请使用以下表达式:

(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)

此技巧将栅格值x> 0映射为比率x / 1 = x,将栅格值x <= 0映射为比率0/0 = NaN。如果栅格为4字节浮点数,则此NaN呈现为FLOAT_MIN(aka -3.402832 ... e + 38)。

奇怪的是,这个问题似乎已经存在了一段时间,(据我今天对Google的快速搜索显示),大多数受访者表示这不可能一步完成。它当然不需要像这样被黑客入侵。QGIS文档也可能更好。


10

非常感谢Dominik。我的第一个答案是不是QGIS 2.8.3(表达正确"myraster@1" > 0返回0或1用于非无数据输入,为无数据输入它返回无数据)。

以下QGIS Raster Calculator表达式应足够(名为“ myraster”的栅格层),因为QGIS Raster Calculator 将不满足条件的所有像​​素都设置为nodata

(“ myraster @ 1”> 0)*“ myraster @ 1”

以下解决方案基于https://docs.qgis.org/2.8/en/docs/training_manual/processing/no_data.html,并且适用于带有SAGA 2.1.2的QGIS 2.8.3。

在QGIS处理中,使用SAGA 栅格计算器,然后在“ 公式”中输入以下内容:

ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))

要么

ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))

这会将所有小于或等于0的值转换为nodata(0/0)。


这不起作用,因为不满足条件的像素为0,而不是无数据
Dominik

超。可以将其用于栅格值过滤器:例如过滤器(0.5; 23]:ifelse(g1 <0.5,0/0,ifelse(g1> 23,0/0,g1))
lolipop


5

我遇到了类似的问题,但是我想将两个值都转换为栅格中的无数据现有无数据值。

确定结果

我来到此页面寻求帮助,但我认为这里的方法有一些警告。@underdark和@Micha的方法似乎仅在栅格中不存在任何无数据值的地方起作用。

为了解决这个问题,您需要将无数据值和希望转换为无数据的值都转换为一致的数字。然后可以使用@underdark的第二步。

为此,请使用“处理工具箱”>“重新分类网格值(SAGA)”将这些值和无数据值同时转换为通用数字(例如-999)。具体来说,使用方法“范围”并指定范围。然后在替换无数据值中,选择相同的值(例如-999)。取消勾选替换其他值。这适用于单个值更改或更复杂的更改。

然后遵循@underdark的方法,并使用“栅格”>“转换”>“转换”保存栅格,并勾选无数据,输入您使用的值(例如-999)。


-3

右键单击栅格,转到栅格属性,在“无数据值”选项卡中选择第三个选项“透明度”,添加附加值0,然后单击“应用”。这与arcgis中的“显示背景值”类似。


4
这不是一个好方法。您实际上并没有更改数据,因此,如果您需要计算统计数据或进行分析,则结果将是不正确的
khafen 2016年
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.