栅格地形功能中的 NA 处理

NA handling in raster terrain function

在使用 raster 包的 terrain 函数从高程栅格计算坡度时,存在一种边界效应,即对于具有一个或多个 NA 邻居的像元返回 NA。

library(raster)

elevation <- getData('alt', country='ITA')
x <- terrain(elevation, 'slope', neighbors = 8)
e <- elevation
e[!is.na(e)] <- 1
e[is.na(e)] <- 2
x[!is.na(x)] <- 1
x[is.na(x)] <- 2
y <- e-x
plot(y)

我正在寻找可能的方法(或替代方案 functions/packages)来覆盖此边界效应并根据可用邻居的数量计算所有非 NA 单元格的斜率?

我是否认为这种效果适用于由于栅格范围而人为创建的边界(例如意大利北部与奥地利、瑞士断开连接...),在其他情况下边界是合法的(例如沿海单元格) .

na.rm = TRUE 传递给地形不会改变结果。

非常感谢!

这将是一个简单的解决方法:

首先,下载高程数据取消屏蔽(如果需要,您可以稍后屏蔽):

elevation <- getData('alt', country='ITA',mask=F)

现在您可以假设所有 NA 高程都是 sea/ocean 表面,因此值为 0

因此您可以将 NAs 设置为 0:

elevation[is.na(elevation)] <- 0

这应该会消除由于 NA 值引起的所有边框问题。