我有四個相當巨大的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