Ekstraksi rata-rata dari beberapa layer raster menggunakan R?


8

Saya tidak tahu bagaimana menangani data besar yang saya dapatkan dari radar.

Saya memiliki 144 gambar .tif per hari dan saya perlu mengekstrak nilai rata-rata harian, untuk setiap piksel, dan mengekspornya dalam satu gambar .tif.

Saya berpikir untuk menumpuk semua 144 gambar, tetapi saya tidak tahu bagaimana melanjutkan dan bagaimana mengekspor hasilnya dalam satu gambar.

Saya memulai ini:

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

Maka saya tidak tahu apakah boleh membuat raster dan melakukan sesuatu seperti:

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

Jawaban:


13

Gunakan calc()untuk menerapkan fungsi pada objek raster, seperti Raster, RasterStackatau RasterBrick:

mean <- calc(STACK1, fun = mean)

Jika Anda memiliki nilai na dalam sel, tambahkan na.rm =T:

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

Atau, Anda dapat menggunakan stackApplyjuga:

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

Anda dapat melakukan ini di dalam lingkaran untuk menerapkan fungsi ini setiap hari di folder radar Anda:

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)
}

Untuk menyimpan sebagai .tiff, gunakan writeRasterfungsi dari rasterpaket:

library(raster)

writeRaster(x = mean, filename = "mean.tif", driver = "GeoTiff")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.