Ошибка использования writeRaster на большом RasterStack - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть RasterStack в R, называемый "preds2", который равен 4,1 ГБ и был выведен из 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, ... 

I я пытаюсь записать этот 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". Ранее я создавал гораздо меньшие RasterStacks с этим кодом без каких-либо проблем. Онлайн-блоги и документация предполагают, что эта ошибка может быть связана с тем, что это такой большой RasterStack (например, предложение по сохранению «preds2» как rasterTmpFile, но я все еще получаю ту же ошибку при чтении временного файла). Предложения с кодом (как я новичок в R) будет принята с благодарностью. Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2020

Разобрался - проблема была в том, что RasterStack был слишком велик для хранения в рабочей памяти R и вместо этого был сохранен во временный файл на моем компьютере, который по какой-либо причине я не смог найти или получить доступ в R Поэтому я только что указал временный рабочий каталог.

options(rasterTmpDir = "C:\\Users\\RL\\Temp_R_folder")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...