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

如何使用terra包从terra::rast中提取指定图层的坐标对应数值

terra提取指定图层数值的正确实现

错误原因说明

terra::extract的layer参数设计用途为给每个坐标点单独分配要提取的图层编号,而非全局筛选所有点共同要提取的图层。因此要求传入向量的长度必须和坐标点的行数一致,这就是你触发length(layer) == nrow(y) is not TRUE报错的原因。

最优解决方案

你需要的多坐标统一提取指定图层的需求,直接先对栅格对象做图层子集筛选,再执行提取即可,terra的栅格子集为惰性计算,不会加载冗余图层数据,内存效率远高于全量提取后再筛选列。
正确代码示例:

# 按图层名提取
terra::extract(x = rs[[c("layer1", "layer4")]], y = coords)

# 按图层索引提取
terra::extract(x = rs[[c(1, 4)]], y = coords)

运行上述代码即可直接得到仅包含目标图层的提取结果,无需额外处理。


内容的提问来源于stack exchange,提问作者mistral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:06:05