【问题标题】:R raster package: memory shortage when using “getValuesFocal” functionR光栅包:使用“getValuesFocal”函数时内存不足
【发布时间】:2014-10-17 20:13:03
【问题描述】:

我有 3 层的栅格(1300 x 1400 单元格),我想使用所有 3 层的数据进行焦点计算。例如,其中一层是土地覆盖图,我想在计算中只使用焦点窗口中与窗口中心像素具有相同土地覆盖类型的这些像素。我想这对于光栅包中的“焦点”功能是不可能的,这就是为什么我试图通过“getValuesFocal”从每个移动窗口范围的 3 层中提取数据。这样做之后,我的想法是遍历由“getValuesFocal”产生的数组行。但是数组非常大,不适合内存,所以我收到错误消息:

dataraster <- stack(classification, layer2, layer3)
data <- getValuesFocal(dataraster, ngb=11, names=TRUE, padValue=NA, array=TRUE)
Error: cannot allocate vector of size 1.7 Gb
In addition: Warning messages:
1: In `rownames<-`(`*tmp*`, value = 1:1879200) :
  Reached total allocation of 8008Mb: see help(memory.size)

我知道像 ff 和 bigmemory 这样的包允许处理大数据集,但是当我的数据集最初无法创建时,我该如何使用它们。我正在使用 64 位 R 并有 8GB RAM。有没有办法将“getValuesFocal”的结果写入文件?我将不胜感激任何帮助。

【问题讨论】:

    标签: r r-raster


    【解决方案1】:

    您可以使用rownrows 参数以块的形式读取数据。例如

    library(raster)
    r <- raster(nr=5, nc=5, crs='+proj=utm +zone=12')
    r[] <- 1:25
    as.matrix(r)
    getValuesFocal(r, row=1, nrows=2, ngb=3, names=TRUE)
    

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 2018-06-17
      • 2020-03-05
      • 2015-02-23
      • 1970-01-01
      • 2011-12-19
      • 2014-08-29
      相关资源
      最近更新 更多