0
我有一组存储为.rds文件大栅格,像clusterR不是在磁盘上处理时,它应该
saveRDS(getwd(), readAll(raster))
(他们GTiffs的一半大小,我并不需要打开它们在GIS中)。把它们变成一个堆栈经由
rdses <- list.files(getwd(), pattern = '\\.rds$', full.names = TRUE)
maplist <- lapply(map_rds, function(x) readRDS(x))
mapstack <- raster::stack(map_list)
是好的,但是当我发送基于RDS-栈clusterR用于进一步处理,例如
beginCluster(2)
clusterR(mapstack, calc, args (fun = myfun(x)), export = 'value')
endCluster()
尽管canProcessInMemory(mapstack)返回FALSE,但R始终尝试运行内存中的整个操作。由于缺少备用RAM,操作总是崩溃。
如果我将栅格保存为GeoTiffs,然后将它们堆叠并发送到clusterR,则不会发生这种情况 - 临时的gri/grd文件应该被创建,并且RAM使用率很低。
有没有办法确保基于rds的堆栈的处理方式与基于GeoTiff的堆栈相同?
谢谢 - 我给它一个镜头,但它没有任何效果在这种情况下。如果您查看栅格源代码,该选项仅用于强制'canProcessInMemory()'返回'FALSE',并且它已经在做这件事(并且我想,被忽略)。鉴于读取我所有的rds文件确实有可能填满较小机器的RAM,我想我只需要坚持使用GTIFF来处理光栅文件。 –