我有一个像素值介于3000到-0.0003之间的DEM栅格。

在我看来,这是栅格计算器的任务(像素<= 0的设置值设置为“ nodata”)或重新分类(像素<= 0的设置值设置为“ nodata”并保留所有其他值),但我不知道如何。

评论

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

抱歉,但是它不能帮助我更改样式的显示方式。我需要对栅格文件进行编辑。

从注释和结束建议中,您似乎应该编辑您的问题,以准确阐明您想要的内容和已经尝试的内容。

#1 楼

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





#2 楼

可以在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文档也可能会更好。

评论


这是我一直在寻找的一个很好的答案。堆积如山!

–夏天
20-2-26在5:36

#3 楼

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

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


评论


太好了,为我工作!

–ilFonta
19年1月27日在12:12

#4 楼

您还可以保存图层(单击鼠标右键,另存为...)并指定一个无数据范围。这将保留原始的nodata并为指定的值范围创建新的nodata。

评论


这是最好的解决方案

–亚历山大
19年6月14日在9:41

#5 楼

非常感谢Dominik。我的第一个答案对于QGIS 2.8.3是不正确的(对于非nodata输入,表达式"myraster@1" > 0返回0或1,对于nodata输入,它返回nodata)。
(名为“ myraster”的栅格层),因为QGIS栅格计算器将所有不满足条件的像素设置为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 Raster计算器并在公式中输入以下内容:

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

评论


这不起作用,因为不满足条件的像素为0,而不是nodata

–多米尼克
15年11月16日在18:22

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

– lolipop
17年12月19日在10:17



#6 楼

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



我来此页面寻求帮助,但我认为这里的方法有一些警告。 @underdark和@Micha的方法似乎只适用于栅格中没有现有无数据值的地方。

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

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

然后按照@underdark的方法进行操作,并使用Raster> Conversion> Translate保存栅格,然后勾选无数据,输入值已使用(例如-999)。

#7 楼

我在QGIS中找不到解决此问题的方法。但是,将栅格导出到R很容易:
library(raster)

dem<-raster('/home/.../DEM.tif')
values(dem)[values(dem) <= 0] = NA
writeRaster(dem,'/home/.../DEM_0.tif', overwrite=TRUE)


#8 楼

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

评论


这不是一个好方法。您实际上并没有更改数据,因此如果您需要计算统计数据或进行分析,则结果将不正确

–卡芬
16年7月12日在19:03