计算栅格单元和邻域之间的差异
Calculate difference between raster cell and neighborhood
我正在尝试计算栅格像元与 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 邻域的平均值,然后从中心单元格中减去该值。
我知道我可以用两个不同的栅格图层来做到这一点,但我怀疑有上面概述的更好的方法。
如有任何建议,我们将不胜感激。
您可以分两步完成:
#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
然后您可以轻松地将上述步骤包装在一个更方便的函数中,干杯。
我正在尝试计算栅格像元与 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 邻域的平均值,然后从中心单元格中减去该值。
我知道我可以用两个不同的栅格图层来做到这一点,但我怀疑有上面概述的更好的方法。
如有任何建议,我们将不胜感激。
您可以分两步完成:
#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
然后您可以轻松地将上述步骤包装在一个更方便的函数中,干杯。