如何找到两个用户路径之间的潜在交叉点?

时间:2015-03-26 20:44:57

标签: ios geolocation geospatial computational-geometry

我目前正在开发一款不断跟踪用户位置的应用,以确定用户路径与感染传染病的人之间的潜在交叉点。手动创建受感染个体(或患者)的路径,并将其作为geojson文件插入应用程序。

我面临的问题是如何找出潜在的交叉点。 A"用户位置点"由纬度,经度,精度(以米为单位)和时间戳唯一定义。 A"患者位置点"以相同的方式定义。但是,由于准确性问题,最好不要将这些视为点,而应视为圆圈。位置点组合起来构成一条路径。

考虑到两条这样的路径,用什么算法来确定交叉点发生的时间/地点和交点的百分比是多少?

P.S。如果我们想在某个时间范围内确定交叉点,如5分钟,这个算法会如何变化?

1 个答案:

答案 0 :(得分:0)

以几何方式查看问题,您可以使用坐标(X,Y,T)将其投射到3D空间中。人的轨迹是在时间方向上单调的曲线。如果考虑到空间不确定性,则需要“管”而不是曲线。

假设轨迹被定义为以恒定速度穿过的线段,您可以做的是在增加的时间内考虑所有轨迹顶点(实际上您将为两个人执行时间线的合并)。然后,在两个连续事件之间,确定面向时间的两个线段部分之间的最小距离(实际上是水平距离)。如果距离低于公差,那么你开会了。

更准确地说,假设人们在时间t0处于A0和B0,而在时间t1处于A1,B1,水平距离由(A0-A1 + t(B1-A1-B0 + A0))2给出。开发时,你有一个二次表达式,很容易减少。不要忘记t被约束为[t0,t1]。

假设轨迹在所考虑的时间段内具有N和M个顶点,则计算工作量将是线性的,O(N + M)。

如果您还允许时间容差,我想通过添加增量时间项来修改计算最小距离的方法就足够了。

在任何情况下,问题都相当于在3D中找到线段之间的最短距离。