You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中基于分类栅格数据用邻近法填充栅格NA值

用Terra填充分类栅格的NA值(众数邻域填充)

问题场景

将Shapefile格式的地质数据通过Terra包转换为分类栅格后,湖泊、河流等水域区域存在大量NA值,需要用邻域内出现最频繁的类别填充这些空缺。此前尝试terra::fillholes无法完全填补空隙;使用terra::focal时,默认逻辑针对数值计算,选择modal选项填充后会丢失factor类型的分类层级,导致分类属性失效,且分类数据无法通过插值方法处理。

解决方案

使用terra::focal搭配modal统计量实现邻域众数填充,填充完成后重新关联原栅格的分类层级即可恢复完整的分类属性。

完整代码示例

library(terra)

# 模拟factor类型的分类栅格数据
r <- rast(matrix(c(rep(1, 10), 11:16), nrow = 8, ncol = 8))
r <- as.factor(r)
r[1, 1] <- NA  # 模拟NA值

# 以3x3邻域的众数填充NA(窗口大小可按需调整)
filled_r <- focal(r, w = 3, fun = modal, na.rm = TRUE)

# 恢复原栅格的分类层级信息
levels(filled_r) <- levels(r)

# 查看填充后的分类栅格
print(filled_r)

关键说明

  • w参数:控制邻域窗口的大小,示例中为3x3(以目标单元格为中心的9个单元格),可根据数据空缺范围调整为5x5等更大窗口
  • fun=modal:指定计算邻域内出现频率最高的类别,na.rm=TRUE确保计算时忽略邻域内的NA值
  • 层级恢复:focal处理后会丢失factor的分类层级,通过levels(filled_r) <- levels(r)重新绑定原分类信息,保证栅格的分类属性不受影响

内容的提问来源于stack exchange,提问作者asnead94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 03:42:22