You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于参考栅格像素值从栅格堆栈对应层提取数值的R实现问题

实现代码

你需要的「根据索引栅格从对应波段提取同位置像素值」的操作,可以直接用raster包内置的stackSelect函数完成,该函数就是专门适配这个场景设计的,无需自行编写复杂的逐像素遍历逻辑,运行效率很高。

你给出的示例基础构造代码+核心实现代码如下:

library(raster)

# 构造示例数据
r <- raster(nrow=5, ncol=5)
# 索引栅格r0,值范围1-10对应栅格堆栈的10个波段
r0 <- setValues(r, round(runif(25,min = 1, max = 10)), 0)

# 构造10个单波段栅格
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
s <- stack(r1, r2, r3, r4,r5, r6,r7,r8,r9,r10)

# 核心实现:按r0的索引提取对应波段同位置像素,输出单图层栅格result
result <- stackSelect(s, r0)

如果需要验证结果正确性,可以随便取某个位置的数值做对比:

# 取第2个像素位置做验证
# 查看r0第2个像素的索引值
r0[2]
# 查看s对应波段第2个像素的数值
s[[r0[2]]][2]
# 查看输出结果第2个像素的数值,和上面一致即为正确
result[2]

内容的提问来源于stack exchange,提问作者Geo-sp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:07