在研究或工作中,经常会遇到栅格数据中某些像元数据缺失或者不能被使用,也会因为异常值而将部分像元定义为空值(NoData)。再此情况下,我们需要重新计算空值像元中正常值,从某种意义上也是对空值像元的内向插值。

整体思路是根据空值像元周围值来计算空值像元,类似于线性内插。具体方法如下:

1、首先确定空值栅格数据的空值范围,根据空值范围、类型、数据结构选择不同邻域统计工具。需要注意栅格数据的背景值与NoData的区分,最好去掉背景值。

arcgis字段判断为空字符串python_栅格


arcgis字段判断为空字符串python_邻域_02

2、在大多数情况下可以选择Block Statistics或者Focal Statistics或者Filter等,邻域类型可以选择矩形或者圆形、环形,需要根据自己数据以及研究目的来确定。邻域半径大小越大,空值越平滑,但统计结果栅格的分辨率越小,同原始栅格范围出入较大。

arcgis字段判断为空字符串python_邻域_03


需要注意的是,由于分辨率调整使得栅格数据行列数变化,这会同原始栅格范围有出入,此种情况可以选择通过重采样之后,求取此栅格同原始栅格的交集,保证范围大小一致。此过程会对空值处像元值产生变化,但可忽略不计。

3、根据邻域统计之后的栅格数据,替换原始栅格空值像元。可以用栅格计算器来完成这一操作。计算代码如下:

Con(IsNull("原始栅格"),"邻域统计栅格","原始栅格")

arcgis字段判断为空字符串python_邻域_04


需要注意的是,计算中,需要在环境设置中设置处理范围,应当以领域统计栅格为准。原因是原始栅格存在NoData,但这部分空值却需要纳入处理范围。

arcgis字段判断为空字符串python_邻域_05


4、最终计算栅格对比原始栅格,可以发现,空值像元已被完美替换。诚然,这只是一种处理思路,具体操作过程不一定完全如上所述。此外,遇见其他类似问题,需要深入分析,灵活运用各种地理处理工具。