[英]how to sum raster layer to raster stack R
我用的300 SGS,光柵棧工作sims
,和一個光柵層trend
。 我試圖總結堆棧中每個柵格圖層的trend
。 我的最終目標是使用趨勢圖創建一個新的模擬光柵堆棧,以便我可以執行其他操作。
我正在尋找的是這樣的:
sims1 <- sims + trend
這樣每一層都會有點像這樣:
>names(sims1)
[1] "sim1+trend" "sim2+trend" "sim3+trend" "sim4+trend"...
list_sims <- list() # list to save sums
for (i in 1:nlayers(sims)) {
list_sims[[i]] <- sims[[i]] + trend
}
sims1 <- stack(list_sims)
R 中的操作通常通過回收短變量進行矢量化。 這樣你就可以做到
1:3 + 10
#[1] 11 12 13
這同樣適用於柵格數據。
示例數據:
library(raster)
sims <- stack(system.file("external/rlogo.grd", package="raster"))
trend <- raster(sims)
values(trend) <- 1:ncell(trend)
解決方案:
x <- sims + trend
names(x) <- paste0(names(sims), ".trend")
x
#class : RasterBrick
#dimensions : 77, 101, 7777, 3 (nrow, ncol, ncell, nlayers)
#resolution : 1, 1 (x, y)
#extent : 0, 101, 0, 77 (xmin, xmax, ymin, ymax)
#crs : +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
#source : memory
#names : red.trend, green.trend, blue.trend
#min values : 256, 256, 256
#max values : 8032, 8032, 8032
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.