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

时间:2014-04-15 09:09:25

标签: r r-raster

我有一个大的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个图层,结果为

  

生物量的差异=当前的生物量层 - 最后几周的生物量层。

1 个答案:

答案 0 :(得分:3)

这应该这样做。

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

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

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