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

使用sp()包计算两组坐标数据框间的最短距离

用sp包计算两组坐标间的最短距离

没问题,我来一步步教你用sp包搞定这个需求:

步骤1:安装并加载sp包

首先确保你已经安装了sp包,如果没有的话先执行安装命令:

install.packages("sp")
library(sp)

步骤2:将普通数据框转换为空间点对象

sp包的距离计算函数依赖空间数据结构,所以我们需要把你的经纬度数据转换成SpatialPoints对象,同时指定坐标系为WGS84(EPSG:4326)——这是经纬度数据最常用的坐标系:

# 转换base.df为空间点对象
base_sp <- SpatialPoints(base.df, proj4string = CRS("+init=epsg:4326"))

# 转换target.df为空间点对象
target_sp <- SpatialPoints(target.df, proj4string = CRS("+init=epsg:4326"))

步骤3:计算两组点的距离矩阵

用spDists()函数可以直接生成所有base点到所有target点的距离矩阵,设置longlat=TRUE后,会自动用大圆距离计算(适合经纬度数据),结果单位是米:

distance_matrix <- spDists(base_sp, target_sp, longlat = TRUE)

步骤4:提取最短距离

从距离矩阵里筛选出最小值,就是两组坐标之间的最短距离:

shortest_distance <- min(distance_matrix)
print(shortest_distance)

针对你提供数据的运行结果

执行完上述代码后,得到的最短距离大约是329.7米(数值可能因计算精度略有浮动)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:06:38