📜  大圆距离公式(1)

📅  最后修改于: 2023-12-03 15:37:52.370000             🧑  作者: Mango

大圆距离公式

大圆距离公式是计算两个经纬度坐标之间距离的一种方法,因为地球的形状是近似于一个椭球体的,所以不能直接用勾股定理来计算距离,而是需要使用特殊的公式来计算。这里介绍的是大范围计算距离的公式,也就是Haversine公式。

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
注意事项
  • 经度和纬度的单位是角度(°),而不是弧度(rad)
  • 在计算距离的时候,需要先把角度转化为弧度
  • 由于计算的精度有限,可能存在一些误差,但一般不会超过1%(误差主要来自于计算的精度和地球本身存在的扁率)