我正在尝试计算栅格单元格与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邻域的平均值,然后从中心单元中减去该值。
我知道我可以使用两个不同的栅格图层执行此操作,但怀疑有更好的方法,如上所述。
任何建议都将不胜感激。
答案 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
然后,您可以轻松地将上述步骤包装在一个更方便的功能中,欢呼。