提高计算大型栅格气候数据堆栈的速度

时间:2018-08-31 21:03:46

标签: r

我有一个大的栅格堆栈(4396663296个元素,13.3 Mb),其中包含1920-2015年之间阿拉斯加和加拿大的月降水量数据,缩减为2km。我想计算观察期内(1920-2015年)的平均年降水量,但是我发现我的代码陷入了R的泥潭。有没有更快,更有效的方法来执行以下代码?

library(raster)

# create list of raster files from wd
r <- stack(list.files(pattern="tif$", full.names=FALSE))

# create index for month/year
nyears <- rep(1:95, each=12)

# next line bogs down R
rsum <- stackApply(r, indices=nyears, fun=sum)  
ravg <- calc(rsum, mean, na.rm=TRUE)

我是否仅需要分批执行此操作(例如,以十年为单位递增)?还是我缺少聪明的东西?

此处提供数据:http://ckan.snap.uaf.edu/dataset/historical-monthly-and-derived-precipitation-products-downscaled-from-cru-ts-data-via-the-delta。 请注意,这提供了1901年至2015年之间的每月数据,但是,我选择在分析中使用1920年至2015年,并且仅包括当年的.tiff文件。

1 个答案:

答案 0 :(得分:0)

做起来可能更快

ravg <- mean(r) * 12

或者也许

ravg <- calc(r, fun=function(x) mean(x) * 12)