我正在写一个应用程序,它利用GPS信息优势,以确定什么样的道路/ TRAIL(或开放街道地图术语“办法”)的用户上。 在OSM的方式不包括宽度信息,仅仅是串联在一起的点,所以不是搞清楚的事项,聚盒一个GPS坐标在不在。
我的信息是明确的线索,因为它弯曲点的名单(如果它只是一个直线索,可能是2分1/2英里分开)。 这些路径通常由树线分离(比如50-300m开),并可以有很多它们的公园内,以便无宽度的信息的精度可以在边缘情况棘手。 通常定义的方式运行下来的踪迹中心。
好像我需要计算在步道的所有单个矢量,然后找到最近的矢量。 我很担心这是相当密集的,每一个新的GPS更新办(每1-4秒?)。 我至少可以试着填写点上的每个线索(强制点每x米)的时间提前,然后就拿到最近的点作为GPS的更新。
有没有点数据可以被改编成的前期,以协助计算的任何结构? 任何其他已知的算法来解决这个问题是移动contraint友好? 看起来这应该是一个已经解决的问题。
这是解决了,它被称为地图匹配。
我已经写了这样一个系统,收费的目的。 有要实时匹配,像导航系统,还是非实时像我这样的后处理GPS数据相关的变异体。
但在任何情况下它至少是发展努力的某月。
事情开始变得困难,如果你有一个线索,其叉沿两条路径。
如果你在错误的道路在这种情况下匹配没有问题,你可以简单地搜索最近的一个。
为了避免过多的CPU电源使用地理空间索引,像四叉树或kd树。
想必您使用的地图渲染API,它吸引了来自一些数据格式的地图。 这基本上是被称为空间数据库的专用数据库。 它应该在一个理想的世界,对发现一定距离内的所有道路和路径的高效功能,比如说50米。
一旦你有附近的道路和路径,甚至在很大程度上建成区,旁边的一个路口,就不会在数量上超过了低几十列表中,你可以通过它们去一个一个地找到最近的一个GPS定位功能。 有标准的方式找到的最近点到线; 这里有一个讨论: 获取最近的点到线 。
这一系统应(从我的经验),很容易足够快的GPS每秒更新。
它甚至更快,如果你正在按照预定的路线,因为这样你只需要检查路线的段 - ,当然,通知用户如果他或她是太远的路线被认为是对的,然后创建一个新的途径。 这就是卫星导航系统一样。