📅  最后修改于: 2023-12-03 15:37:52.370000             🧑  作者: Mango
大圆距离公式是计算两个经纬度坐标之间距离的一种方法,因为地球的形状是近似于一个椭球体的,所以不能直接用勾股定理来计算距离,而是需要使用特殊的公式来计算。这里介绍的是大范围计算距离的公式,也就是Haversine公式。
Haversine公式用于计算两个经纬度坐标之间的距离。假设点A的经纬度坐标是(lat1,lon1),点B的经纬度坐标是(lat2,lon2),则它们之间的距离d可以用以下公式计算:
$$ d = 2r \operatorname{arcsin}\sqrt{\sin^2(\frac{lat2-lat1}{2})+\cos(lat1)\cos(lat2)\sin^2(\frac{lon2-lon1}{2})} $$
其中r是地球的半径,常用的是6371km。
以下是Python的实现代码,其中math库中包含了arcsin和cos等函数:
import math
def distance(lat1, lon1, lat2, lon2):
r = 6371
dLat = math.radians(lat2 - lat1)
dLon = math.radians(lon2 - lon1)
a = math.sin(dLat / 2) * math.sin(dLat / 2) + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dLon / 2) * math.sin(dLon / 2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
d = r * c
return d