繁体   English   中英

如何将栅格图层相加到栅格堆栈 R

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM