10 votos

¿Extracción media de múltiples capas raster utilizando R?

No sé cómo lidiar con los grandes datos que tenía de radares.

He tengo 144 imágenes .tif por día y necesito extraer un valor medio diario, para cada píxel, y exportar en una imagen .tif.

Pensé que apilar todas las 144 imágenes, pero me don´t saber cómo seguir y exportar el resultado en una sola imagen.

Yo había empezado esto:

set("D:/R/Radar/Rasday1")
f <- list.files(getwd()) 
ras <- lapply(f,raster) 
STACK1 <- stack(ras)   ## with dimensions :1006, 804, 808824 (nrow, ncol, ncell)

Entonces no sé si su OK para crear una trama y hacer algo como:

r1<- raster(ncol=804, nrow=1006)
media<-mean(STACK1, r1)

22voto

gabor Puntos 612

Uso calc() a aplicar funciones a través de una trama objeto, como por ejemplo Raster, RasterStack o RasterBrick:

mean <- calc(STACK1, fun = mean)

Si usted tiene na de los valores en las celdas, agregar na.rm =T:

mean <- calc(STACK1, fun = mean, na.rm = T)

Como alternativa, puede utilizar stackApply también:

mean <- stackApply(STACK1, indices =  rep(1,nlayers(STACK1)), fun = "mean", na.rm = T)

Usted puede hacer esto dentro de un bucle para aplicar esta función a cada día en su radar de la carpeta:

library(raster)

dirs <- list.dirs("D:/R/Radar/", full.names = T, recursive = F)

means <- list()

for(i in 1:length(dirs)){
  setwd(dirs[i])
  f <- list.files(getwd()) 
  STACK1 <- stack(f)
  means[[i]] <- calc(STACK1, fun = mean, na.rm = T)
}

Guardar como .tiff, uso writeRaster función de raster paquete de:

library(raster)

writeRaster(x = mean, filename = "mean.tif", driver = "GeoTiff")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X