如何使用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
相关产品推荐
相关产品推荐

