首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将栅格图层与栅格堆叠R相加

如何将栅格图层与栅格堆叠R相加
EN

Stack Overflow用户
提问于 2021-10-12 16:46:55
回答 2查看 51关注 0票数 0

我正在使用一个300SG的栅格堆栈,sims,和一个栅格层,trend。我正在尝试对堆栈中每个栅格层的trend求和。我的最终目标是有一个新的栅格堆栈,我的模拟与趋势图,这样我就可以执行其他操作。

我要找的应该是这样的:

代码语言:javascript
复制
sims1 <- sims + trend

因此,每一层都会有如下所示:

代码语言:javascript
复制
>names(sims1)
[1] "sim1+trend" "sim2+trend" "sim3+trend" "sim4+trend"...
EN

回答 2

Stack Overflow用户

发布于 2021-10-13 12:15:49

代码语言:javascript
复制
list_sims <- list() # list to save sums 
for (i in 1:nlayers(sims)) { 
       list_sims[[i]] <- sims[[i]] + trend 
}
sims1 <- stack(list_sims) 
票数 0
EN

Stack Overflow用户

发布于 2021-10-13 15:52:17

R中的操作通常是通过回收短变量进行矢量化的。这样你就可以做到

代码语言:javascript
复制
1:3 + 10
#[1] 11 12 13

这同样适用于栅格数据。

示例数据:

代码语言:javascript
复制
library(raster)
sims <- stack(system.file("external/rlogo.grd", package="raster")) 
trend <- raster(sims)
values(trend) <- 1:ncell(trend)

解决方案:

代码语言:javascript
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69544231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档