【问题标题】:Extract values from a certain layer in a stack based on pixel value of another raster根据另一个栅格的像素值从堆栈中的某个层提取值
【发布时间】:2021-12-11 04:20:54
【问题描述】:

假设我有一个栅格图层r0,其值范围为1: nlayers s。我需要从与层r0 的像素值匹配的波段s 中提取值。 例如,如果r0 中的像素值为2,我想要堆叠层band 2 中完全相同的像素值s 等等。因此,最终输出将只有一层,表示基于层 r0 的层 s 的值。我希望我能正确地解释这个问题。

library(raster)

r <- raster(nrow=5, ncol=5)
r0 <- setValues(r, round(runif(25,min = 1, max = 10)), 0)




r1 <- setValues(r, runif(ncell(r)))
r2 <- setValues(r, runif(ncell(r)))
r3 <- setValues(r, runif(ncell(r)))
r4 <- setValues(r, runif(ncell(r)))
r5 <- setValues(r, runif(ncell(r)))
r6 <- setValues(r, runif(ncell(r)))
r7 <- setValues(r, runif(ncell(r)))
r8 <- setValues(r, runif(ncell(r)))
r9 <- setValues(r, runif(ncell(r)))
r10 <- setValues(r, runif(ncell(r)))


s <- stack(r1, r2, r3, r4,r5, r6,r7,r8,r9,r10)

【问题讨论】:

    标签: r extract raster r-raster


    【解决方案1】:

    terra::selectRange

    示例数据

    library(terra)
    r <- rast(ncols=10, nrows=10)
    values(r) <- 1
    s <- c(r, r+2, r+5)
    s <- c(s, s)
    set.seed(1)
    values(r) <- sample(3, ncell(r), replace=TRUE)
    

    解决方案

    x <- selectRange(s, r)
    

    【讨论】:

    • 我不知道 terra 需要特定类型的文件,与 raster 包分开。它是否允许向其添加功能?例如,从 + 和 - 5 层中提取值并取平均值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2013-01-18
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    相关资源
    最近更新 更多