代码之家  ›  专栏  ›  技术社区  ›  Neal Barsch

重新采样或聚合大型光栅限制内存使用

  •  0
  • Neal Barsch  · 技术社区  · 7 年前

    我正试图对一个巨大的worldpop人口进行重新采样,但我一直在破坏我的linux R实例,它有32GB的内存。当我启动一个52gb内存的google compute实例时,下面的代码可以工作,但它会使我的常规32gb内存计算机崩溃。

    有没有办法进行光栅聚合或重新采样,以限制内存使用?

    下载我在重新采样时遇到问题的大型worldpop光栅的代码:

    ###download the huge raster to recreate scale problem
    devtools::install_github("nbarsch/spaceheater")
    library(spaceheater)
    getWPdownload("Tanzania","Population","adj",2015) #warning: downloads near 1gb file
    library(raster)
    wpras <- raster("TANZANIA_Population_adj_2015.tif")
    

    有两种方法可以在内存为52GB的计算机上工作,但会杀死本地计算机32GB的内存:

    #aggregate method
    agras <- raster::aggregate(wpras,fact=10,expand=T)
    #returns "Killed"
    
    #resamp method
    reras <- raster(nrow = ceiling(nrow(wpras)/10), ncol = ceiling(ncol(wpras)/10))
    reras2 <- raster::resample(wpras, reras, method="bilinear")
    #returns Error: cannot allocate vector of size 1.3 Gb
    

    有没有人有一个不用所有内存的解决方案?谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Robert Hijmans    7 年前

    您可能应该更新光栅包。上一个短期版本(2.7-15)的内存设置有错误。版本2.8-4应该已经解决了这个问题。