r - 计算栅格单元和邻域之间的差异

标签 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 邻域的平均值,然后从中心单元中减去该值。

我知道我可以使用两个不同的栅格图层来做到这一点,但怀疑有更好的方法,如上所述。

如有任何建议,我们将不胜感激。

最佳答案

您可以分两步完成:

#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

然后您可以轻松地将上述步骤包装在一个更方便的函数中,干杯。

关于r - 计算栅格单元和邻域之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229401/

相关文章:

r - ggplot : line plot for discrete x-axis

r - Terra R - 使用自定义函数加速栅格数据的聚合()

r - r中使用mosaic合并多个geotiff

r - 如何计算栅格堆栈的变化百分比?

r - 如何有效地将所有光栅文件导入 R?

r - 为什么 plot 不尊重 add = TRUE?

windows - R Markdown v2 到 pdf。绘图中出现非拉丁字符时出现转换错误

r - 聚类图。添加簇号: Function fviz_cluster (factoextra)

在 terra 包中读取多个栅格

r - 确定栅格中网格单元的大小