找出GPS航路点是否已通过

2024-09-27 07:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

想想马拉松比赛中的几个跑步者。运动员们都戴着GPS设备。赛道本身没有传感器,我需要知道每个运动员什么时候通过一组预先确定的GPS坐标。但是,由于跑道/道路可能足够宽,可以使用不同部分的跑道/道路,因此每个运动员可能会以稍有不同纬度/长度的路线通过该航路点。在

判断运动员是否通过某个航路点的最佳方法是什么?在

我正在使用Python,并愿意使用外部库。我使用的是预处理的GPS数据,所以我只有每个时间点的经纬度(以及一些其他的位和点,比如速度和行驶距离)。在


Tags: 数据方法时间传感器路线跑步速度gps
2条回答

你可以试试这个:enter image description here 航路点是两个轨道(直线)段相交的点(图中的黑线)。为在该航路点相交的两条线段(图中穿过该航路点的红蓝线)中的每一条,画一条与该航路点的线段之一正交的直线。当滑道进入图中标记为红色的区域时,该滑道被视为靠近该航路点(假设该滑道来自右侧)。一段时间后,跑步者可以进入图片中标记为蓝色的区域,此时,跑步者已经通过了航路点。在

如果该航路点从未出现在蓝色区域,则表示该航路点偏离轨道。在

我想解决你的问题的方法很少。 我首先想到的是:

from shapely.geometry import LineString

line1 = LineString([(i, i) for i in range(5)])
line2 = zip(range(5)[::-1], range(5))

if line1.crosses(line2):
    print 'yeah!'

添加一个循环并迭代每个分段点线

其他可能的选择:

  • 用两条海峡线的交点进行简单的数学计算-高中教材
  • 使用postgis将您的数据导入postgres并使用postgis功能,例如ST_crosss(如果postgres对您来说太重了,我将尝试使用SpatialLite sqlite)
  • pyshp,shapely,gdal/geos,geodjango,地球炼金术
  • 结合上面的一些,写一个更花哨的算法,比如在一条线/点周围创建一个缓冲区,并检查它是否“ST_Contains”GPS位置,同时检查是否有任何后续位置超出缓冲区(?)在

相关问题 更多 >

    热门问题