Python从两个GPS坐标计算速度、距离和方向

7 投票
2 回答
19915 浏览
提问于 2025-04-18 14:50

我该如何在Python中计算两个GPS坐标之间的速度、距离和方向(以度为单位)?每个点都有纬度、经度和时间。

我在这篇帖子中找到了Haversine距离的计算方法:

计算两个GPS坐标之间的距离

帖子里还有一个Java版本的速度和方向计算,但它们是以公制为单位的,而我需要的是英里每小时(MPH),并且要用Python来实现。

2 个回答

3
  1. 通过哈弗辛公式计算A和B之间的距离。 Python中的哈弗辛公式(两个GPS点之间的方位和距离)
  2. 找出从A到B的方向(方位角): 确定从一个经纬度到另一个经纬度的方向
  3. 假设你知道从A到B的旅行时间。速度 = 距离 / 时间
3

可以试试用pyproj这个工具。我在做一个关于LOB(大对象)的项目时,需要计算距离(还有其他一些事情),发现pyproj非常有用。(注意:我的数据点是MGRS格式的,首先需要转换成经纬度格式)

_GEOD = pyproj.Geod(ellps='WGS84')
_MGRS = mgrs.MGRS()
def dist(sp,ep):
   try:
       # convert start point and end point
       (sLat,sLon) = _MGRS.toLatLon(sp)
       (eLat,eLon) = _MGRS.toLatLon(ep)

       # inv returns azimuth, back azimuth and distance
       a,a2,d = _GEOD.inv(sLon,sLat,eLon,eLat) 
    except:
        raise ValueError, "Invalid MGRS point"
    else:
        return d,a

撰写回答