在使用raster
包的地形函数计算高程栅格的坡度时,会产生边界效应,其中为具有一个或多个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)
我正在寻找可能的方法(或替代功能/包)来覆盖这种边界效应,并根据可用邻居的数量计算所有非NA单元的斜率?
由于光栅的范围(例如,意大利北部与奥地利,瑞士......之间断开连接),我是否认为这种效果适合人工创建的边界,在其他情况下边界是合法的(例如沿海单元)。
将na.rm = TRUE
传递给地形不会改变结果。
非常感谢!
答案 0 :(得分:1)
这将是一个简单的解决方法:
首先,下载高程数据取消屏蔽(如果需要,可以稍后屏蔽它):
elevation <- getData('alt', country='ITA',mask=F)
现在您可以假设,所有NA
高程都是海洋/海洋表面,因此其值为0
。
因此,您可以将NA
设置为0:
elevation[is.na(elevation)] <- 0
这应该会删除NA
值导致的所有边框问题。