【问题标题】:Calculate difference between raster cell and neighborhood计算栅格单元和邻域之间的差异
【发布时间】:2016-03-17 17:05:53
【问题描述】:

我正在尝试计算栅格像元与 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 邻域的平均值,然后从中心单元格中减去该值。

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

任何建议将不胜感激。

【问题讨论】:

标签: r raster r-raster


【解决方案1】:

您可以分两步完成:

#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

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

【讨论】:

  • 谢谢。运行代码后,平均值不正确。如果 1/9 是 matrix 的参数,那么 fun 需要是 sum 此代码也适用于 focal(r, w=matrix(1,nrow=3,ncol=3), fun=mean) 此处提到的 rstudio-pubs-static.s3.amazonaws.com/…
  • 是的,没错,我没想过仔细检查您最初发布的代码。见编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-26
  • 2019-01-22
  • 2017-05-31
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多