在大的RasterStack上使用writeRaster出错

问题描述 投票:0回答:1

我在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。

r raster large-data r-raster
1个回答
0
投票

想明白了--问题是RasterStack太大,无法存储在R的工作内存中,而是保存在我电脑上的一个临时文件中,不管什么原因,我都无法在R中找到或访问。

options(rasterTmpDir = "C:\\Users\\RL\\Temp_R_folder")
© www.soinside.com 2019 - 2024. All rights reserved.