0

我有 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”的结果写入文件?我将不胜感激任何帮助。

4

1 回答 1

0

row您可以使用andnrows参数读取块中的数据。例如

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-05-16T16:23:46.503 回答