栅格地形功能中的 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
。
因此您可以将 NA
s 设置为 0:
elevation[is.na(elevation)] <- 0
这应该会消除由于 NA
值引起的所有边框问题。
在使用 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
。
因此您可以将 NA
s 设置为 0:
elevation[is.na(elevation)] <- 0
这应该会消除由于 NA
值引起的所有边框问题。