1

如果我的标题无法描述,我很抱歉。

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

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

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

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

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

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

4

3 回答 3

1

如果您想了解如何比较路径与异常值、不同的采样频率和偏移量,请查看我的论文“The Mean Gaze Path”,第 5 章和第 6 章。其中使用的主要工具是重采样、最长公共子串匹配和翻译-不变的路径表示。

于 2013-11-06T16:31:41.337 回答
0

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

于 2013-11-06T16:14:30.163 回答
0

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

您可能会发现这很有帮助:

  1. 预先计算服务器上预定义路由的弹跳气泡。
  2. 将气泡数据发送到应用程序。只有两条数据:气泡的中心和半径。
  3. 当坐标进入时,在 App 上为动态路线执行 Bouncing Bubble 的迭代。
  4. 比较气泡的半径和中心以确定它们的距离。随着路线接近完成,气泡将汇聚。

如需更详细的报告,请将路线分解为多个部分,并按每个部分执行上述操作。

于 2013-11-06T16:35:48.897 回答