用Python计算两个GPS点之间的距离

计算两个GPS点之间的距离是一个地理和数学的练习,我们可以在Python框架内操作。现在让我们来看看我们如何用Python进行这一操作。

使用Python中的哈弗尔辛公式计算两个GPS点之间的距离

哈弗辛公式是用Python计算两个GPS点之间距离的简化方法,但是它的计算是基于地球是一个完美的球体这一假设。然而,地球并不是一个完美的球体。

这意味着我们将得到的结果不会是完全准确的;由于这个假设,有一点误差。haversine公式通过计算两对经度和纬度之间的距离来计算两个GPS点之间的距离。

创建一个Python并在里面输入这些代码。将文件命名为new.py ,如下图所示:

代码片段-new.py

from math import radians, cos, sin, asin, sqrt
def haversine(lat1, lon1, lat2, lon2):
      R = 3959.87433
      dLat = radians(lat2 - lat1)
      dLon = radians(lon2 - lon1)
      lat1 = radians(lat1)
      lat2 = radians(lat2)
      a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2
      c = 2*asin(sqrt(a))
      return R * c
lon1 = -103.548851
lat1 = 32.0004311
lon2 = -103.6041946
lat2 = 33.374939
print(haversine(lat1, lon1, lat2, lon2))

输出:

用Python计算两个GPS点之间的距离

当我们点击运行时,我们应该在终端里面看到这个结果。

使用Python中的mpu 库计算两个GPS点之间的距离

mpu 源自Martins Python Utilities,它是一个Python库,可以用来执行各种功能而不需要任何其他的依赖。

首先,我们通过输入以下内容来安装mpu

pip install mpu

然后,我们创建一个新的Python文件,命名为new.py ,并键入以下代码:

代码片段-new.py

import mpu
lat1 = 32.0004311
lon1 = -103.548851
lat2 = 33.374939
lon2 = -103.6041946
dist = mpu.haversine_distance((lat1, lon1), (lat2, lon2))
print(dist)

等待片刻,你应该在终端内查看计算的距离。

输出:

用Python计算两个GPS点之间的距离

使用Python中的geopy 库计算两个GPS点之间的距离

geopy for Python是一个专门用于计算国家、州、城市等之间距离的库。正如我们在下面的例子中所观察到的,我们可以用公里、英里等来计算距离。

在终端内,键入以下内容来安装geopy 库:

pip install geopy

创建一个新文件,命名为new.py ,并输入这些代码。

from geopy.distance import geodesic
origin = (30.172705, 31.526725)
dist = (30.288281, 31.732326)
print(geodesic(origin, dist).kilometers)

输出:

用Python计算两个GPS点之间的距离

如果你想让结果以英里为单位显示,将最后一点代码中的kilometers 改为miles ,然后运行该代码。

结论

计算地球上两个特定点之间的距离再简单不过了。尽管哈维辛公式可能会有0.5%的偏差,但其结果仍然很接近,可用于各种项目。