因此,我要从使用此问题的方法制作的栅格砖中提取数据:How to extract data from a RasterBrick?
除了从日期给定的图层中获取数据外,我还想从前几个月提取数据。尽我所能,我是通过执行以下操作来做到这一点的:
sapply(1:nrow(pts), function(i){extract(b, cbind(pts$x[i],pts$y[i]), layer=pts$layerindex[i-1], nl=1)})
因此,提取时应查看layerindex i-1,然后应提供一个月前的数据。因此,具有layerindex = 5的点应查看5-1 = 4层。
但是,它没有这样做,并且似乎提供了一些随机数或几个月前的重复数。正确的方法是什么?
答案 0 :(得分:0)
您的代码正在从上一点而不是上一层获取值。
要想像一下,我们正在查看第2行(i = 2)中的点。您指示该图层的代码为pts$layerindex[i-1]
,即pts$layerindex[1]
。换句话说,就是第1行中的点所在的层。
修复很容易。为了清楚起见,我将分别编写函数:
foo = function(i) extract(b, cbind(pts$x[i],pts$y[i]), layer=pts$layerindex[i]-1, nl=1)
sapply(1:nrow(pts), foo)
我还没有测试过,但这应该是全部。