python通过经纬度计算两点间距离
通过经纬度计算两点间距离一般有两种方法,测地线距离(假定地球是个椭球)和大圆距离(假定地球是个圆球)。后者比前者精度稍低,但速度较快,可根据需要自行选择。
一、测地线距离
测地线距离(geodesic distance) 地表两点之间的最短路径的距离。 有许多类型的椭球体模型,哪一个模型最精确取决于你的点在地球上的位置。默认值是WGS-84椭球体,它是全局最精确的。
from geopy.distance import geodesic as gd
# 两点的经度和纬度
p1 = (9.072264, 7.491302)
p2 = (14.716677, -17.467686)
d = gd(p1, p2).m # 得到米为单位的结果
d = gd(p1, p2).km # 得到千米为单位的结果
二、大圆距离
大圆距离使用地球圆形模型,先将经纬度转换为弧度,然后把地球当作一个6371的圆来计算球面距离。
1. geopy包
from geopy.distance import great_circle as grc
# 两点的经度和纬度
p1 = (9.072264, 7.491302)
p2 = (14.716677, -17.467686)
d = grc(p1, p2).m # 得到米为单位的结果
d = grc(p1, p2).km # 得到千米为单位的结果
2. 手动计算
理论公式
已知半正矢(Haversine)公式(省略推导过程):
h a v e r s i n ( θ ) = sin 2 ( θ / 2 ) = ( 1 − cos ( θ ) ) / 2 haversin(\theta) =\sin^2(\theta/2)=(1-\co