在大型 RasterStack 上使用 writeRaster 时出错

Error using writeRaster on a large RasterStack

我在 R 中有一个名为 "preds2" 的 RasterStack,大小为 4.1 GB,由 4 个 RasterStacks 和 2 个 RasterLayers(wveg、wfps_lag、wfps、ndvi、swt、lu)输出:

cl <- makeCluster(4)
registerDoSNOW(cl)
preds<-foreach(j = 1:nlayers(ndvi))%dopar%{
  library(raster)
  library(SpaDES)
  time <- stack(wveg,wfps_lag[[j]],wfps[[j]],ndvi[[j]],swt[[j]],lu)
  names(time) <- c('wveg','wfps_lag','wfps','ndvi','swt','lu')
  exp(raster::predict(time,m,const=fact_table,exclude=c("s(wlch)","s(wetid)")))
}
stopCluster(cl)
preds2<-stack(preds)

> preds2
class      : RasterStack 
dimensions : 6617, 11771, 77888707, 27  (nrow, ncol, ncell, nlayers)
resolution : 0.0002694946, 0.0002694946  (x, y)
extent     : -95.69591, -92.52369, 41.71803, 43.50128  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
names      :      layer.1,      layer.2,      layer.3,      layer.4,      layer.5,      layer.6,      layer.7,      layer.8,      layer.9,     layer.10,     layer.11,     layer.12,     layer.13,     layer.14,     layer.15, ... 
min values :            0,            0,            0,            0,            0,            0,            0,            0,            0,            0,            0,            0,            0,            0,            0, ... 
max values :  0.001754114,  0.001754114,  0.001754114,  0.001754114,  0.001730909,  0.001601078,  0.081421784,  3.510447853,  5.134697329,  7.547881571, 10.945457688, 13.332227330, 14.864517447, 16.708383138, 16.631466329, ... 

我正在尝试将此 RasterStack 写入 .tif 文件但出现错误:

> writeRaster(stack(preds3), filename = "C:\Users\RL\Documents\preds.tif", options="INTERLEAVE=BAND", overwrite=TRUE)
Error in file(fn, "rb") : cannot open the connection
In addition: Warning message:
In file(fn, "rb") :
  cannot open file 'C:\Users\RL\AppData\Local\Temp\RtmpeegnBN\raster\r_tmp_2020-04-25_004109_2364_37231.gri': No such file or directory

在对象 "preds2" 上使用 calc 也出现同样的错误。我之前使用此代码创建了更小的 RasterStacks,没有任何问题。在线博客和文档表明此错误可能是由于它是一个很大的 RasterStack(例如建议将 "preds2" 存储为 rasterTmpFile 但我在读取临时文件时仍然遇到相同的错误)。对代码的建议(因为我是 R 的新手)将不胜感激。谢谢!

弄清楚了——问题是 RasterStack 太大而无法存储在 R 的工作内存中,而是保存到我计算机上的一个临时文件中,无论出于何种原因,我都无法找到或访问该文件在 R 中。所以我只是指定了临时工作目录。

options(rasterTmpDir = "C:\Users\RL\Temp_R_folder")