首页 > 解决方案 > 提高计算大型气候数据栅格堆栈的速度

问题描述

我有一个大型栅格堆栈(4396663296 个元素,13.3 Mb),其中包含 1920 年至 2015 年间阿拉斯加和加拿大的月降水数据,缩小到 2 公里。我想计算观察期(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 文件。

标签: r

解决方案


它可能会更快

ravg <- mean(r) * 12

也许

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

推荐阅读