📜  如何用经纬度计算近似距离 - Python (1)

📅  最后修改于: 2023-12-03 14:53:13.326000             🧑  作者: Mango

如何用经纬度计算近似距离 - Python

在开发中,我们经常需要计算地理位置之间的距离。使用经纬度计算地理位置距离是一个常见的问题,本篇文章将介绍如何使用 Python 来计算两个地理位置之间的距离。

原理

计算地理位置距离原理是基于地球的球面几何学。因为地球是一个不规则的球体,所以人们为了计算地理位置距离,通常将地球看作一个标准的球体,这个球体的半径被定义为地球的半径。

地球的半径是约 6,371 千米。根据球面几何学公式,我们可以使用经纬度计算地球上两点之间的距离。经纬度是作为角度度量的,所以我们需要将经纬度转换为弧度,才能使用球面几何学公式计算距离。

代码

下面的代码演示了如何使用 Python 计算两个地理位置之间的距离。

import math

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


def calculate_distance(lat1, lon1, lat2, lon2):
    """
    根据经纬度计算距离,返回距离单位为千米
    """
    # 将经纬度转换为弧度
    lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])

    # 计算距离
    dlat = lat2 - lat1
    dlon = lon2 - lon1
    a = math.sin(dlat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2
    c = 2 * math.asin(math.sqrt(a))
    distance = EARTH_RADIUS * c

    return distance
使用示例

下面是一个使用示例,展示如何使用上面的函数计算两个地理位置之间的距离。

# 纽约市的经纬度
lat1, lon1 = 40.7128, -74.0060

# 旧金山的经纬度
lat2, lon2 = 37.7749, -122.4194

# 计算距离
distance = calculate_distance(lat1, lon1, lat2, lon2)

print("纽约市和旧金山之间的距离为 %.2f 千米" % distance)

运行以上代码,输出结果为:

纽约市和旧金山之间的距离为 4134.87 千米
总结

本篇文章介绍了如何使用 Python 计算经纬度之间的距离。我们使用了球面几何学公式,将经纬度转换为弧度,然后使用公式计算距离。这可以让我们在开发中轻松地计算地理位置之间的距离。