在一些数据分析中,有时我们需要将栅格数据中满足一些条件的像素(通常称他们为异常值),设置为NODATA。本文采用QGIS中集成的GDAL栅格计算器,实现这一过程。
打开QGIS,导入栅格数据,在工具箱中,找到GDAL树节点下的栅格计算器。

此处我们是把数据偏离过大的值,设置为NODATA。
我们使用均值和标准差来衡量数值是否存在偏离过大的情况。
在表达式中,填入如下代码。
where( (mean(A)-(2*std(A))<A) & (A<mean(A)+(2*std(A))), A, -99999)
代码说明:
变量A:待计算的栅格图层
逻辑:将当栅格值介于以下条件之间时,使用A的栅格值,否则将其设置为-99999。此处将-99999认为是NODATA。
最小值条件:平均值(mean)减去2倍标准差 (std)
最大值条件:平均值(mean)加上2倍标准差(std)
栅格计算器表达式使用numpy提供的算法。
点击这里,浏览官网文档,由GDAL提供底层支持。
注意:在QGIS中,也内置了栅格计算器(不是本文使用GDAL版本),方便用于对单个像素进行处理,如栅格重分类等。点击这里,浏览此栅格计算器的使用。由于本文需要计算统计信息,所有没有采用内置的栅格计算器。