我在R中有一个名为 "preds2 "的RasterStack,它有4.1GB,由4个RasterStack和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
同样的错误在使用 calc
对象 "preds2 "上也是如此。 我以前用这个代码创建过小得多的RasterStack,没有任何问题。在线博客和文档表明,这个错误可能是由于它是一个大的RasterStack(例如,建议将 "preds2 "存储为一个 rasterTmpFile
但在读取临时文件时,我仍然得到同样的错误)。) 如果有代码的建议(因为我是R的新手),我将感激不尽。 谢谢!我在R中有一个名为 "preds2 "的RasterStack。
想明白了--问题是RasterStack太大,无法存储在R的工作内存中,而是保存在我电脑上的一个临时文件中,不管什么原因,我都无法在R中找到或访问。
options(rasterTmpDir = "C:\\Users\\RL\\Temp_R_folder")