欢迎访问宙启技术站
智能推送

使用Python计算两地之间的GreatCircle距离

发布时间:2024-01-04 17:23:31

GreatCircle距离是计算地球上任意两点之间的距离的一种方法,它考虑到了地球的曲率。在Python中,我们可以使用math库中的函数来计算GreatCircle距离。

以下是一个用Python计算两地之间GreatCircle距离的例子:

import math

# 地球半径,单位为千米
EARTH_RADIUS = 6371.0

# 计算GreatCircle距离
def great_circle_distance(lat1, lon1, lat2, lon2):
    # 将经纬度转换为弧度
    lat1 = math.radians(lat1)
    lon1 = math.radians(lon1)
    lat2 = math.radians(lat2)
    lon2 = math.radians(lon2)

    # 计算经纬度的差值
    delta_lon = lon2 - lon1

    # 根据haversine公式计算GreatCircle距离
    a = math.sin((lat2 - lat1) / 2)**2 + math.cos(lat1) * math.cos(lat2) * \
        math.sin(delta_lon / 2)**2
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))

    # 计算距离
    distance = EARTH_RADIUS * c
    return distance

# 示例:计算北京和上海的GreatCircle距离
lat_beijing = 39.9042
lon_beijing = 116.4074
lat_shanghai = 31.2304
lon_shanghai = 121.4737

distance = great_circle_distance(lat_beijing, lon_beijing, lat_shanghai, lon_shanghai)
print(f"北京和上海之间的GreatCircle距离为:{distance}千米")

在上面的例子中,我们首先定义了地球的半径(单位为千米),然后定义了一个函数great_circle_distance来计算GreatCircle距离。该函数接受四个参数,分别是两个地点的纬度和经度,然后将这些经纬度转换为弧度,并使用haversine公式计算GreatCircle距离。最后,我们使用示例数据计算出了北京和上海之间的GreatCircle距离。

在实际应用中,你可以根据需要改变示例中的经纬度数据,计算任意两地之间的GreatCircle距离。这种距离计算方法在地理定位、航海、航空等领域都有广泛的应用。