从 Rasterbrick 中的较低层提取数据
Extracting data from lower layers in a Rasterbrick
所以我正在从我使用这个问题的方法制作的 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 的点,应该查看 layer 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)
我没有测试过,但应该就是这些了。
所以我正在从我使用这个问题的方法制作的 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 的点,应该查看 layer 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)
我没有测试过,但应该就是这些了。