R terra::nearest()输出to_id列含义及关联目标点属性方法咨询
问题原因
你遇到的to_id不符合预期是terra 1.3-4版本的已知缺陷:该版本的nearest()返回的to_id是函数内部计算时生成的临时编号,并不对应dest矢量的原始行下标,该逻辑在后续的稳定版本中已经修复。
解决方案
方案1:无需升级版本,通过返回的坐标匹配属性
nearest()返回的to_x、to_y是最近邻点的准确坐标,和dest中的点坐标完全一致,直接通过坐标匹配合并属性即可:
# 提取dest的坐标和属性表 dest_attr <- as.data.frame(dest, geom = "XY") # 提取nearest返回结果的属性表 near_attr <- as.data.frame(near_ret) # 按坐标匹配合并,拿到对应attr result <- merge(near_attr, dest_attr, by.x = c("to_x", "to_y"), by.y = c("x", "y"), all.x = TRUE)
最终result$attr就是每个src点对应的最近dest点的属性值。
方案2:升级terra到最新稳定版
如果你可以升级包版本,升级后to_id就会直接对应dest的原始行下标,直接索引即可拿到属性:
# 升级后执行 dest_attr <- dest[near_ret$to_id, ]$attr
内容的提问来源于stack exchange,提问作者sligocki
相关产品推荐
相关产品推荐

