вычисление среднего значения каждого слоя из 6 растров и имени этих файлов

У меня есть 28 файлов растров, объединенных в папку. Я хотел бы сделать среднее значение трех первых растров, затем среднее значение трех других растров и т. Д. Затем я должен получить 9 растров. Назову их по месяцам. Я бы хотел, чтобы мой первый растровый слой назывался Tmin-2010-01-15, второй - Tmin-2010-02-15, ..., а мой последний из девяти растров - Tmin-2010-09-15 '. Я написал следующий код. У меня нет сообщений об ошибках, но я не вижу никаких результатов, поэтому я не знаю, правильна ли логика кода и как обрабатывать.

Спасибо за любую помощь!

setwd("/Users/lisemontefiore/Documents/Data/Climate Data/test2") 

Я сложил растры

bands <-list.files(path="xxx",pattern="*.tif",full.names=TRUE)
data_stack <- stack(bands) 

Я определяю параметры n = количество растровых слоев, m = количество растров, которые я хочу собрать, чтобы получить среднее значение.

n<- 28
m<-3
groupn=function(n,m){rep(1:m,rep(n/m,m))}
group3=groupn(28, 3)
f=function(v){tapply(v, group3, mean)}
b=calc(data_stack, f)

Я определяю имена своих файлов, созданных функцией, и пишу растры

    months<- seq(from=as.Date("2010-01-15"),
                 to= as.Date("2010-09-15"),
                 by='month')
    for (i in seq_along(months))
         {writeRaster <- file.path("b", 
                                   paste('Tmin',months[i], sep=''),
                                   "GTiff")

person LMontef    schedule 12.02.2018    source источник


Ответы (1)


Вместо calc вы можете:

 b <- stackApply(b, group3, mean)

Но нет вывода, потому что вы не вызываете writeRaster. Вам нужно что-то вроде этого:

months <- seq(from=as.Date("2010-01-15"), to= as.Date("2010-09-15"), by='month')
ff <- paste0('Tmin', months, '.tif')

for (i in seq_along(months)) {
    writeRaster(b[[i]]], ff[[i]])
}   
person Robert Hijmans    schedule 12.02.2018