gpt4 book ai didi

r - 如何使用巨大的栅格堆栈加速计算?

转载 作者:行者123 更新时间:2023-12-02 09:21:13 26 4
gpt4 key购买 nike

我有四个相当大的 RasterStack,想对它们进行一些简单的计算。我怎样才能加快这些计算速度?我发现this approach using overlay() ,但是计算仍然需要很长时间。

我的 RasterStacks (s1,s2,s3,s4) 具有所有尺寸:26, 76, 1976, 3805 (nrow, ncol, ncell, nlayers) 我当前的代码如下所示:

out <- overlay(s1,s2,s3,s4, fun = function(rs1,rs2,rs3,rs4) {return((rs1+rs2-rs3-rs4)*1e3)})

有什么想法吗?

编辑:要生成 RasterStack(例如 s1),您可以调用以下函数:

create_stack <- function(num.col,num.row,num.lay){
r <- raster(matrix(runif(num.row*num.col,0,10), ncol=num.col, nrow=num.row),
xmn=0, xmx=num.col, ymn=0, ymx=num.row )
ll <- replicate(num.lay , r )
return(stack(ll))
}

library(raster)
s1 <- create_stack(76,26,3805)

最佳答案

在处理大型栅格时,增加 block 大小有很大帮助。另外我建议将所有临时文件放在一个您可以轻松管理的目录中。

library(raster)
rasterOptions(tmpdir="C:\\", tmptime = 24, progress="text", timer=TRUE,
overwrite = T, chunksize=2e8, maxmemory=1e8)

关于r - 如何使用巨大的栅格堆栈加速计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42510384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com