从Rasterbrick中的较低层提取数据

问题描述 投票:0回答:1

所以我从我用这个问题的方法制作的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。 然而,它不会这样做,似乎从几个月前给出一些随机数或一个副本。怎样才能解决这个问题?

r raster r-raster
1个回答
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)

我没有测试过,但这应该是全部。

© www.soinside.com 2019 - 2024. All rights reserved.