projectRaster消耗过多内存

3

我正在R语言中进行一些空间处理工作,但是突然之间我的代码在我使用了多年的电脑上无法运行,具体原因是它“内存不足”。

## Raster going in
xx <- raster(fatNames[[i]])
xx
class       : RasterLayer 
dimensions  : 5160, 14436, 74489760  (nrow, ncol, ncell)
resolution  : 0.008333333, 0.008333333  (x, y)
extent      : -172.3, -52, 23.5, 66.5  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : D:\Dropbox\wintor_aux\Results\myluFatReq_100_2_fat.inf.tif 
names       : myluFatReq_100_2_fat.inf 
values      : 0.1831425, 3.449095  (min, max)

## transform
x.rast <- projectRaster(xx,crs = CRS("+init=epsg:2955"))

错误:无法提供4.2GB的充足向量。

我知道这是一个相当大的光栅文件(输入光栅大小:75.5 MB),但是机器有32GB的RAM,没有其他程序在运行,仍然导致内存不足。我多年来做过很多类似的事情,据我所知,自从上个月最后一次这样做以来,机器上没有任何改变。

我尝试重新启动会话和计算机,并进行了一些Google搜索,但仍然无法解决问题。当我在RAM减半的机器上尝试相同的代码块时,我能够轻松运行它(最大使用8GB RAM)。有人有什么建议如何追踪此问题吗?

> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

Matrix products: default

locale:
[1] LC_COLLATE=English_New Zealand.1252  LC_CTYPE=English_New Zealand.1252   
[3] LC_MONETARY=English_New Zealand.1252 LC_NUMERIC=C                        
[5] LC_TIME=English_New Zealand.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] raster_2.6-7         rgdal_1.3-3          sp_1.3-1             sf_0.6-3            
[5] RevoUtils_11.0.1     RevoUtilsMath_11.0.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.18    lattice_0.20-35 class_7.3-14    grid_3.5.1      spData_0.2.9.0 
 [6] DBI_1.0.0       magrittr_1.5    e1071_1.7-0     units_0.6-0     tools_3.5.1    
[11] yaml_2.2.0      compiler_3.5.1  classInt_0.2-3 
1个回答

3
您应该首先将raster软件包更新到其当前(CRAN)版本。这可能可以解决问题。如果无法解决,这可能是一个棘手的问题,您可以通过将内存参数设置为较低的值来解决。在当前版本中,您可以使用rasterOptions(memfrac =.3)来实现此目的。在当前和旧版本中,您也可以尝试rasterOptions(maxmemory = 1e + 08) 顺便说一下,您对+proj = utm + zone = 11的转换似乎相当可疑,因为输入数据的经度跨度为(172.3-52)= 120度 --- UTM适用于大约6度的跨度,请不要在示例中使用espg代码。

rasterOptions的修改是真正的赢家,即使使用最新的包,默认设置仍然由于某种原因导致问题。还要感谢您指出的投影问题,幸运的是,这些只是用于图形,因为标准的WGS84被一些合作者认为“太过方形”。 - Reed
什么是保存修改后的“rasterOptions”的最佳方法,以便不需要在每个新会话中更新它? - Reed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接