NA处理栅格地形功能

时间:2018-03-14 04:34:20

标签: raster terrain

在使用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传递给地形不会改变结果。

非常感谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

因此,您可以将NA设置为0:

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

这应该会删除NA值导致的所有边框问题。