使用terra包如何将栅格堆栈提取值添加到空间对象的data.frame中
terra包栅格提取保留矢量原有属性的方法
terra的extract函数返回结果的ID列和输入矢量的行顺序完全对应,直接按行合并即可保留原始属性字段,有两种常用实现方式:
- 直接合并提取结果与原始矢量属性
# 保存提取结果 ext_res <- terra::extract(r, points_vect, xy = T, method = "simple") # 绑定原始矢量的val字段,也可按需绑定其他属性列 final_df <- cbind(ext_res, values(points_vect)["val"])
- 写入矢量属性表(适合后续需要做空间操作的场景)
# 直接将提取结果追加到矢量的属性表中 points_vect <- cbind(points_vect, terra::extract(r, points_vect, xy = T, method = "simple")) # 如需输出为普通dataframe,直接转换即可 final_df <- as.data.frame(points_vect)
两种方式都可以保留原始的val字段,且不会出现行列匹配错误的问题。
内容的提问来源于stack exchange,提问作者UseR10085
相关产品推荐
相关产品推荐

