代码之家  ›  专栏  ›  技术社区  ›  Geo-sp

基于另一光栅的像素值从堆栈中的某一层提取值

  •  0
  • Geo-sp  · 技术社区  · 3 年前

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

    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)
    
    0 回复  |  直到 3 年前
        1
  •  2
  •   Robert Hijmans    3 年前

    看见 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)