【问题标题】:Summing RasterStacks when Rasterstacks are in a list of unknown length当 Rasterstacks 在一个未知长度的列表中时求和 RasterStacks
【发布时间】:2018-07-06 05:55:07
【问题描述】:

我有一个 Rasterstacks 列表,每个都有 2 层。我想将列表中的所有 Rasterstack 添加到具有 2 层的单个 Rasterstack 中。假设我有 2 个 Rasterstacks 的列表,每个都有 2 层,我将使用以下命令

raster_stack_sum = raster_list[[1]] + raster_list[[2]]

这将返回具有 2 层的单个 Rasterstack。我的问题是当列表的长度(即 RasterStacks 的数量)未知时,我将如何做到这一点。当列表的长度(在本例中为 5)未知时,是否有等效的更短方法来运行以下代码行?

raster_stack_sum = raster_list[[1]] + raster_list[[2]] + 
raster_list[[3]]+ raster_list[[4]] + raster_list[[5]]

【问题讨论】:

    标签: r r-raster rgdal


    【解决方案1】:

    您可以使用stackRaster* 对象列表中创建一个新的RasterStack

    示例数据:

    library(raster)
    s <- stack(system.file("external/rlogo.grd", package="raster")) 
    x <- list(s, s, s)
    

    解决方案:

    sum(stack(x))
    

    是什么让您说“不推荐存储 Rasterstacks 列表”?

    编辑

    要逐层汇总 RasterStack 对象列表,我会使用循环

    y <- x[[1]]
    for (i in 2:length(x)) { y = y + x[[i]] }
    

    【讨论】:

    • 对不起,回复晚了,这是一个很好的答案,但当堆栈是多层时它不起作用,我想要一个单一的求和的 Rasterstack,每个 Rasterstacks 的层数相同.我已更新问题以反映我的具体问题
    猜你喜欢
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    相关资源
    最近更新 更多