【问题标题】:loop through RasterBrick to calculate differences between sequential layers循环通过 RasterBrick 计算顺序层之间的差异
【发布时间】:2014-04-15 17:49:15
【问题描述】:

我有一个大的RasterBrick 对象,其中包含表示每个时间间隔(不规则)的生物量的栅格层时间序列。我需要的是两个连续时间段之间生物量差异的时间序列(difference in biomass = current biomass layer - last weeks biomass layer)。 我的想法是使用循环或其中一个应用函数来遍历RasterBrick,并为每个RasterLayer 应用时间序列中较早的一个减法函数。 RasterBrick 已排序,因此实际时间戳不一定重要。我试图找到例子,但未能取得进展。任何指针将不胜感激。

我在下面提供一个我的情况的快速示例:

library(raster)

随机设置 10 个栅格图层,放入 RasterStack

r <- raster(ncol=10, nrow=10)
;b <- brick( sapply(1:10, function(i) setValues(r, rnorm(ncell(r), i, 3))))

现在我需要一个包含 9 层的 RasterBrick,其结果为

生物量差异 = 当前生物量层 - 上周生物量层。

【问题讨论】:

  • 什么是子集(r,2:nlayers(r))-子集(r,1:(nlayers(r)-1))
  • @mdsumner。很简单!工作出色。感谢您的宝贵时间。
  • r

标签: r r-raster


【解决方案1】:

应该这样做。

subset(r, 2:nlayers(r)) - subset(r, 1:(nlayers(r)-1))

通常的 Ops 只适用于光栅对象,因此我们可以使用高级工具简单地构建正确的对象对。

根据数据值和数量,可能需要其他方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多