【问题标题】:Extracting data from lower layers in a Rasterbrick从 Rasterbrick 中的较低层提取数据
【发布时间】:2019-03-13 12:23:16
【问题描述】:

所以我从我使用这个问题的方法制作的光栅砖中提取数据: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】:

    您的代码从前一点的层获取值,而不是前一层。

    想象一下,我们正在查看第 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)
    

    我没有测试过,不过应该就这些了。

    【讨论】:

      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2015-12-08
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      相关资源
      最近更新 更多