计算栅格单元格与邻域

时间:2015-12-11 17:40:11

标签: r raster r-raster

我正在尝试计算栅格单元格与3 x 3邻域中的平均值之间的差异。

使用此栅格

r = raster(ncol=10, nrow=10, xmn=0, xmx=100, ymn=0, ymx=100)
set.seed(123)
values(r) = round(runif(ncell(r),1,100))

我可以使用与

类似的东西
r2 <- focal(r2, w=matrix(1,nrow=3,ncol=3), fun=)

但我认为我需要一个自定义函数作为fun的参数来计算3 x 3邻域的平均值,然后从中心单元中减去该值。

我知道我可以使用两个不同的栅格图层执行此操作,但怀疑有更好的方法,如上所述。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

你可以分两步完成:

#First, get the mean in a 3x3 neighbourhood
r2 <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=mean)

#Then subtract the focal mean from the original cell values using simple raster arithmetic:
r3 <- r - r2

然后,您可以轻松地将上述步骤包装在一个更方便的功能中,欢呼。