所以我从我用这个问题的方法制作的rasterbrick中提取数据: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。 然而,它不会这样做,似乎从几个月前给出一些随机数或一个副本。怎样才能解决这个问题?
您的代码从前一个图层获取值,而不是前一个图层。
为了看到这个想象,我们正在看第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)
我没有测试过,但这应该是全部。