ArcGIS影像空值填充\插补

本文介绍了使用ArcGIS的栅格计算器处理遥感影像空值的方法,包括利用前后月或年前后同日期的影像进行填充,以解决因云层遮挡等原因造成的影像缺失问题。通过条件函数Con和IsNull判断并填充空值,从而改善影像质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

遥感,遥远的感知。既然是遥远的,就避免不了会出现看不清的现象:比如被天空中的云遮挡住,冬天地物被雪覆盖住等等,就会导致影像出现空值缺失值等。


下面将是对空值处理的一种思路:

MODIS产品中的部分异常值区域采用同产品的前一个月或者后一个月的相同位置的值填充,或选择同产品的前一年或后一年的相同时间的相同位置的值做填充处理,或选择其周围相邻3×3位置的像元均值填充。

方法一:巧用栅格计算器来填充影像

存在较多空值的影像:图A,日期是19年1月25日
在这里插入图片描述
质量较好的影像:图B,日期是19年2月2日
在这里插入图片描述

那么我们可以用
a.拿前后一年的同日期影像来填充(如18年1月25日或者20年1月25日,或者18年1月25日和20年1月25日这两年的平均值来填充19年1月25日);
b.拿相邻月份的影像来填充(如那19年2月2日的影像来填充,虽然是2月份的,但也就相差不到10天19年1月25日)

采用栅格计算器输入以下公式即可:

Con(IsNull(“mod_19_01_25”),“mod_19_02_02.tif”,“mod_19_01_25.tif”)

通过IsNull(“mod_19_01_25"来判断该"mod_19_01_25"栅格是否存在nodata,如果存在则将nodata的地方用"mod_19_02_02.tif"影像对应的地方的值来填充,如果不存在则返回原值,也就是"mod_19_01_25.tif”。(Con是条件函数,IsNull判断是否存在nodata,

填充后的结果如下:

(第一个图层是19年1月25日填充后的栅格;第二个图层是19年1月25日的原始栅格;第三个是用来填充的19年2月2日的图像。)
下图就是19年1月25日填充后的结果图:
该点是原始图有值,这填充后的还用原始值:
在这里插入图片描述
该点是原始图为nodata,则用19年的2月2的栅格的值来填充该点。
在这里插入图片描述

注意:

空值的填充具体是用前后月的来填充还是前后年的值来填充,要具体分析。如过原始图像质量太差或者,原始图像和 用来填充的图像 之间差异较大那么填充后的质量也一般,会有颜色突变的问题,不平滑,不能为了填充为填充。

参考文献:

1.《基于MOD16的乌江流域地表蒸散发时空特征及影响因素》
MODIS产品中的部分异常值区域采用同产品的前一个月或者后一个月的相同位置的值填充,或选择同产品的前一年或后一年的相同时间的相同位置的值做填充处理,或选择其周围相邻3×3位置的像元均值填充。

2.《基于CSLE的福建省闽清县水土流失动态监测与分析》
MODIS-NDVI数据预处理:首先是原始数据的格式转换,其次将所有影像进行投影变换,转换成要求的空间参考坐标系,最后利用异常或空值区域相邻月份的值进行逐像素填充和修补,以获得有效值相对完整的项目区NDVI产品数据。

3.《郑州市三维扩张与地表温度的时空变化研究》

### 使用 ArcGIS 进行栅格数据空值填充的方法 在 ArcGIS 中处理栅格数据的空洞或缺失可以通过多种方法实现。具体的选择取决于应用场景以及所需的结果精度。 #### 方法一:利用邻近日期的数据进行 当存在相邻时间点上的高质量影像资料时,可以采用这种方法。对于特定位置如果原始图像(如19年1月25日)存在 `NoData` 的情况,则使用另一张较近期且覆盖相同地理位置的影像(例如19年2月2日)来进行充[^1]: ```python import arcpy from arcpy.sa import * arcpy.CheckOutExtension("Spatial") # 定义输入路径 original_raster_path = r"C:\path_to_20190125_image" filling_raster_path = r"C:\path_to_20190202_image" # 执行条件判断并填充 filled_raster = Con(IsNull(original_raster_path), Raster(filling_raster_path), original_raster_path) # 输出保存路径 output_filedir = r'C:\path_to_save_filled_result' filled_raster.save(output_filedir + '\\FilledImage') ``` 此脚本会读取两个指定文件夹下的栅格数据集,并通过 `Con()` 函数检查原图是否有无数据区域(`NoData`),如果有则用新图片对应位置处的数替代之;否则保留原有不变。 #### 方法二:基于周围像元平均得到估计 另一种常见做法是计算局部窗口内的统计量作为填补依据。这里展示了一个例子,在遇到 `NoData` 时将以3×3大小矩形领域内所有有效像素求得算术均来代替[^2][^3]: ```python import arcpy from arcpy.sa import * arcpy.CheckOutExtension("Spatial") input_raster = "your_input_raster_here.tif" neighborhood_rectangle = NbrRectangle(3, 3, "CELL") mean_fill = FocalStatistics(input_raster, neighborhood_rectangle, "MEAN") filled_output = Con(IsNull(Raster(input_raster)), mean_fill, input_raster) filled_output.save(r"path\to\saved\raster\tif") ``` 上述代码片段展示了如何定义一个3x3单元格范围,并以此为基础构建邻域对象用于后续运算。接着调用了 `FocalStatistics()` 来获取目标区域内非空元素的平均数,最后再经由 `Con()` 实现有条件赋逻辑完成整个过程。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值