python根据经纬度计算距离示例



from math import radians, cos, sin, asin, sqrt

def haversine(lon1, lat1, lon2, lat2):
    """
    根据经纬度计算两个点之间的距离(单位:公里)
    
    参数:
    lon1, lat1 : float
        第一个点的经度和纬度
    lon2, lat2 : float
        第二个点的经度和纬度
    
    返回:
    float
        两点之间的距离(公里)
    """
    # 将十进制度数转化为弧度
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    # haversine公式
    dlon = lon2 - lon1 
    dlat = lat2 - lat1 
    a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
    c = 2 * asin(sqrt(a)) 
    r = 6371 # 地球平均半径,单位为公里
    return c * r

# 示例使用
lon1, lat1 = 116.397128, 39.90923
lon2, lat2 = 121.473701, 31.230416
distance = haversine(lon1, lat1, lon2, lat2)
print(f"The distance between the two points is {distance:.2f} km")

这段代码提供了一个`haversine`函数,用于根据两个点的经纬度计算它们之间的距离(单位:公里)。函数内部使用了Haversine公式,这是计算两点间大圆距离(即地球表面两点间的最短距离)的常用方法。示例中还包括了如何调用这个函数并打印出两个特定经纬度点之间的距离。