У меня есть набор данных, состоящий из долготы, широты и среднемесячной переменной (например, температуры или осадков) за период с 1961 по 1970 год. Набор данных имеет разрешение 0,5 на 0,5 градуса долготы / широту и охватывает весь земной шар и был загружен как файл. Файл NC, данные из которого я извлек в R, используя:
library(ncdf)
f <- open.ncdf("D:/CRU/cru_ts3.21.1961.1970.tmp.dat.nc")
A <- get.var.ncdf(nc=f,varid="tmp")
B <- get.var.ncdf(nc=f,varid="lon")
C <- get.var.ncdf(nc=f,varid="lat")
D <- cbind(expand.grid(B, C))
E <- expand.grid(A)
Расширенная сетка (E) - это таблица данных, состоящая из 31 104 000 строк переменной, а расширенная сетка (D) - это таблица данных, состоящая из 259 200 строк долготы / широты. Если вы умножите 259 200 на 10 лет на 12 месяцев, вы получите 31 104 000. Следовательно, таблица E может быть разбита на месячные значения, используя:
Month <- 1
Start <- (Month-1)*(259200)+1
Finish <- (Month*259200)
G <- E[Start:Finish,]
H <- expand.grid(G)
I <- cbind(D,H)
Таким образом, I теперь представляет собой таблицу данных за первый месяц (т.е. январь 1961 г.), состоящую из долготы, широты и переменной. Пример данных приведен ниже:
lon lat tmp
49184 -68.25 -55.75 7.5
49185 -67.75 -55.75 7.6
49186 -67.25 -55.75 7.6
49899 -70.75 -55.25 6.8
49900 -70.25 -55.25 7.0
49901 -69.75 -55.25 6.9
49902 -69.25 -55.25 7.1
49903 -68.75 -55.25 6.8
49904 -68.25 -55.25 7.6
49905 -67.75 -55.25 8.2
А теперь вопрос. Текущее разрешение сетки составляет 0,5 * 0,5 градуса, и я хотел бы «пересчитать» данные, чтобы разрешение было 0,25 * 0,25 градуса. Я не хочу делать ничего особенно умного с данными, поэтому я просто хочу, чтобы сетка 0,25 принимала значение сетки 0,5, в которой она находится, т.е. каждая сетка 0,5 * 0,5 содержит 4 сетки 0,25 * 0,25, и я просто хочу, чтобы 4 сетки 0,25 * 0,25, чтобы иметь то же значение, что и сетка 0,5 * 0,5.
Я посмотрел на растр, но, похоже, ничего не могу с ним поделать.