1

我有一个大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))))

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

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

4

1 回答 1

3

这应该这样做。

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

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

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

于 2014-04-15T09:49:15.280 回答