Python从两个GPS坐标计算速度、距离和方向
我该如何在Python中计算两个GPS坐标之间的速度、距离和方向(以度为单位)?每个点都有纬度、经度和时间。
我在这篇帖子中找到了Haversine距离的计算方法:
帖子里还有一个Java版本的速度和方向计算,但它们是以公制为单位的,而我需要的是英里每小时(MPH),并且要用Python来实现。
2 个回答
3
- 通过哈弗辛公式计算A和B之间的距离。 Python中的哈弗辛公式(两个GPS点之间的方位和距离)
- 找出从A到B的方向(方位角): 确定从一个经纬度到另一个经纬度的方向
- 假设你知道从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