如何使用 terra 包在栅格中填写 missing/NA 值?

How to fill in missing/NA values in raster with terra package?

我有一个 DEM 栅格,其中有我想要填充的小孔(即 NA),而不改变任何非 NA 值。在阅读了光栅包的 solution suggested 之后,我尝试使用带有以下参数的 terra 的 focal 函数:focal(m, w=9, fun=mean, NAonly=T, na.rm=T)。虽然这确实主要填补了漏洞,但似乎周围的数据略有“平滑”,表明该函数并未将自身限制为仅填充 NA 值(下图显示前后图像)。

NAonly=T 论点是否仍像在栅格中一样适用于 terra?或者有没有更好的方法来填补空洞而不改变 terra 中的非 NA?

应用焦点函数之前的 DEM(是的,孔已经部分填充)

应用焦点函数后的 DEM。请注意 DEM 的整体外观更平滑。

看起来 terra 的参数是 na.policy="only" 而不是栅格中使用的 NAonly=TRUE。所以 focal(m, w=9, fun=mean, na.policy="only", na.rm=T) 解决了这个问题。它比我用过的其他一些方法稍微“更方正”,但除此之外它完成了工作。

我还注意到输出栅格移动了焦点 window 宽度的 ~1/2,但我已经发布了一个关于解决该问题的问题

更新: 从 1.5.27(2022-04-11 的开发版本)开始,此错误已得到修复。开发版本在这里可用:https://github.com/rspatial/terra.