用于计算两条路线是否“足够接近”的算法

时间:2013-11-06 15:40:31

标签: .net algorithm wcf

对不起,如果我的标题是无足轻重的。

我想要实现的是一个“正在运行的应用程序”,我有一个预定义的运行路线。

我正在记录跑步者前往的所有位置。跑步者完成后;应用程序将位置发送到我的WCF服务,在那里我有一个根据纬度和经度的多个“坐标”定义的路线。

我想要做的是检查跑步者是否确实访问了“足够接近”的所有坐标。

一个简单的循环,我将所有位置转换为.NET“地理空间点”并检查从每个用户位置到坐标的距离似乎很重。

我想知道的是,在这种情况下是否存在算法或最佳实践?

我不知道这样的问题是否适合stackoverflow,如果没有;对不起。

3 个答案:

答案 0 :(得分:1)

如果您想了解如何将路径与异常值,不同的采样频率和偏移进行比较,请查看我的论文工作"The Mean Gaze Path",第5章和第6章。其中使用的主要工具是重采样,最常见的子串匹配和平移不变的路径表示。

答案 1 :(得分:0)

我假设跑步者的路线以距离递增的顺序存储为坐标列表,在这种情况下,binary search将帮助您找到最接近每个检查点的方法。如果跑步者不得不多次传递相同的检查点,事情可能会变得更复杂,但是你可以通过在两次访问之间的中间检查点分割路线来解决这个问题。 (我希望这是有道理的。)

答案 2 :(得分:0)

刚刚看到一个很酷的算法叫做Bouncing Bubble(底部的算法: http://en.wikipedia.org/wiki/Bounding_sphere);计算一组点周围的最小边界球。

您可能会觉得这很有用:

  1. 预先计算服务器上预定义路由的Bouncing Bubble。
  2. 将气泡数据发送到应用程序。只有两个数据:气泡的中心和半径。
  3. 在坐标进入时,为应用程序上的动态路线执行Bouncing Bubble的迭代。
  4. 比较气泡的半径和中心以确定它们的接近程度。随着路线接近完成,气泡将会收敛。
  5. 要获得更详细的报告,请将路线分解为细分,然后按细分执行上述步骤。