循环通过 RasterBrick 来计算连续层之间的差异

don*_*los 3 r r-raster

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

我在下面提供了我的情况的一个简单示例:

library(raster)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

mds*_*ner 5

这应该可以做到。

subset(r, 2:nlayers(r)) - subset(r, 1:(nlayers(r)-1))
Run Code Online (Sandbox Code Playgroud)

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

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