我有四个相当巨大的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)
请提供[reproducible](http://stackoverflow.com/q/5963269/3250126)示例。 – loki
您可能想尝试使用'ff'软件包将RasterStacks转换为大3维的数组,然后对其进行计算。 ff软件包在计算上效率更高,但是从'raster'到'ff'转回''raster'也可能需要一些时间。 – Bastien