Повышение скорости расчета большого растрового стека климатических данных. - PullRequest
0 голосов
/ 01 сентября 2018

У меня большой растровый стек (4396663296 элементов, 13,3 Мб), который содержит месячные данные об осадках на Аляске и Канаде в период между 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 тех лет.

1 Ответ

0 голосов
/ 04 сентября 2018

Это, вероятно, быстрее сделать

ravg <- mean(r) * 12

или, возможно,

ravg <- calc(r, fun=function(x) mean(x) * 12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...