Rを使用して複数のラスターレイヤーの平均を抽出しますか?


8

レーダーから得たビッグデータの扱い方がわかりません。

1日あたり144の画像.tifがあり、各ピクセルの1日の平均値を抽出し、1つの画像.tifにエクスポートする必要があります。

144枚すべての画像をスタックすることを考えましたが、続行する方法と結果を1つの画像にエクスポートする方法がわかりません。

私はこれを始めました:

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

次に、ラスターを作成して次のようなことを実行してもよいかどうかわかりません:

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

回答:


12

使用するcalc()など、ラスタオブジェクトの上に機能を適用するためにRasterRasterStackまたはRasterBrick

mean <- calc(STACK1, fun = mean)

セルにna値がある場合は、以下を追加しna.rm =Tます。

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

または、次も使用できますstackApply

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

これをループ内で実行して、レーダーフォルダー内の毎日にこの関数を適用できます。

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

として保存するには.tiff、パッケージのwriteRaster関数を使用しrasterます。

library(raster)

writeRaster(x = mean, filename = "mean.tif", driver = "GeoTiff")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.