地图匹配的链接和想法?[关闭]


43

我正在使用OpenStreetMap及其矢量道路网络,并且想实现地图匹配器算法。

目前,我能够针对每个GPS位置检索最近的路段,并计算该位置对该路段的投影,就像在此图像上一样(红色图钉是纯GPS位置,蓝色表示已映射的路段,绿色表示映射位置):

在此处输入图片说明

但是,由于GPS的准确性不足,有时映射位置会从一个片段跳到另一个片段,并且有时会提供一些不一致的映射位置。

我当前的算法非常基础:从纯GPS位置开始,我得到最近的路段,并确定映射的匹配位置在该位置。我知道这确实可以改善。

我可以想象考虑车辆方向会改善地图匹配,但是您知道其他方法可以使我改善地图匹配器吗?

我需要任何链接和/或开源软件吗?


4
您可以添加一个圆圈-Google使用单元格接收并创建一个浅蓝色的圆圈以显示您的大概位置。您的应用看起来不错,工作很好。如果您有矢量数据,则可以捕捉到距GPS点最近的直线-请参阅Paul Ramsey的 博客blog.cleverelephant.ca/2008/04/snapping-points-in-postgis.html
Mapperz

4
您要查找的关键字是“地图匹配”。大主题。
Uffe Kousgaard

1
Uffe是正确的,地图匹配。检查本文的几种方法:cens.ucla.edu/~mhr/cs219/maps/white00.pdf
lexicore 2013年

谢谢!lexicore,当我键入此文件时,纸张正在发送到我的打印机。是时候获得概述了。谢谢你的链接。
scrrr

通过尝试捕捉到实际道路而不只是顶点,我将改进算法。
Devdatta Tengshe

Answers:


11

正如您已经在做的那样,将点投影到直线上可以直接在PostGIS中完成。我写的是前一段时间,在这里

但是,当点比正确的分段更靠近错误的分段时解决您的问题,这可能是一种可行的方法。

  1. 建立点的线串
  2. 尝试使用算法中建议的解决方案,以匹配线段以匹配整条线,而不是逐点地匹配

感谢您的回复。投影没问题:我已经在做投影了(不是通过ST_Closest进行的,因为它在我正在使用的空间位置上不可用,但是没关系)。我也只是查看您提到的问题,并了解了可能有趣的“ Hausdorff距离”的存在。
yonel 2011年

10

在阅读了您的问题和各种答案之后,我对这个问题产生了兴趣。在阅读了一些地图匹配算法之后,我了解了以下内容:

  • 要将gps位置与道路匹配,您需要使用矢量格式的实际道路数据
  • 如果您对不同的道路使用不同的权重,这将有所帮助。因此,与高速公路相匹配的点的机率会更高,然后与边线相匹配的机率会更高。
  • 您需要获取历史记录以及gps读取的速度。例如,如果gps点很长时间以来一直与侧车道相匹配,则应将其考虑在内,而不是直接与公路相匹配。-使用各种统计技术进行实际匹配。

为了进一步阅读,我建议以下内容:


是的,我也正在阅读并开始尝试实现一个可以扩展的简单算法。到目前为止,我已经从OSM下载了一些数据,并且正在研究如何为自己的目的最好地存储(和访问)数据。我认为这是一个有趣的话题。:)我将在工作正常后更新此问题。另外,感谢您的链接!
scrrr

使用权重时要小心,“因此,与高速公路相匹配的点的机率会更高,然后与边线相匹配的机率会更高。” ...这取决于输入数据,可能会出错。
昏暗

@Devdatta,第二个链接上显示404。除了我自己编辑以外,您还有其他链接吗?
2015年

我没有该文章的免费访问链接。但是,如果您处于学术环境中。快速搜索后
即可查看


7

回答我自己的问题!

1-一个不错的.pdf我刚刚发现了关于这个主题的信息:

http://safari.ce.sharif.edu/file/2011-06-06/259/2009_An%20off-line%20map-matching%20algorithm%20for%20incomplete%20map%20databases.pdf

该链接还链接到文档中描述的地图匹配器C ++开源实现http : //eden.dei.uc.pt/~camara/files/mgemma.zip
(这是一个离线地图匹配器,我的理解是会计算地图匹配的位置,并以WHOLE路径作为输入,并且无法即时为每个位置执行此操作)。

2-然后,我已经深入阅读了这篇文章,在我看来,这真的很好: https : //dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/4860/1/velaga.pdf “开发中“用于智能运输系统的基于权重的增强型拓扑MapMatching算法”。
该算法已明确说明,并且文档中还提供了权重调整值。


4

关于Map-matching的工作很多,请参见本文以简要回顾一些近期的工作(2007年之前)。最近,基于隐马尔可夫模型的方法在正常情况下似乎表现良好。例如,请查看2009年的这篇论文。这个想法和模型非常简单,即使您不熟悉HMM,也不应给您带来太多实施麻烦(在这种情况下,请不要慌张,有很多的教程和介绍在线)


1
刚刚意识到我在答案中提到的Barefoot -Project是基于@Nick推荐的论文。
尼克

4

该方法也称为“向量合并”。有一个专用的Wiki页面(http://wiki.openstreetmap.org/wiki/Conflation),其中提供了概述和列出(开源)软件包来执行道路矢量合并的程序,例如“ JOSM合并插件”,“ Potlatch 2合并”工具”,“ RoadMatcher”(适用于OpenJUMP)等。


1
我一直认为合并是您使用两个线层进行的操作,而不是将点匹配到线上。真的一样吗?
昏暗

4

对于地图匹配算法,这取决于您需要实时还是脱机处理。在后一种情况下,最新的算法可以每秒处理1000点。内存需求当然取决于覆盖范围。为此,我们设法将星球的OSM道路网压缩到大约16 Gb。

另外,您还需要从路径推断中区分出地图匹配:这是两个独立的过程,具体取决于您拥有高频还是低频数据。当您的点相对较少时(例如,在城市环境中,每公里1个数据),这是路径推断,因为通常需要做一些假设才能猜测设备在哪里行驶。路径推断通常比较困难,但现代设备/数据获取价格的问题却越来越少。

您可以在我的配置文件中查看直接在OSM上进行地图匹配的API:它使用拓扑匹配,并且可以很好地处理浮动汽车数据。


您可以扩展正在使用的算法吗?减小路网规模有何帮助?
Devdatta Tengshe

较少的覆盖范围=较小的网络可保留在内存中。这样可以加快计算速度。参考:trb.metapress.com/content/p31485vw72645686
Fabrice Marchal

3

Strava Slide描述了道路网络上的累积轨迹数据如何表现得像“山谷”,以及拟议的路线如何像串珠一样“落入”位置。



2

该主题称为地图匹配。但是,作为第一个非常好的近似值,可能只需要为每个gps点查找最接近的点就足够了(无需进行任何正确猜测的校正)。

我的名为graphhopper的开源项目不适用于iOS(更新:现在也可以在iOS上运行),也没有满足您需求的功能齐全的Android应用。但是您可以使用服务器版本来构建iOS应用,也可以使用离线Android演示作为开始。我在这里发布了地图匹配算法,只是一个粗糙的原型,但是效果出奇的好。


1

尝试获取一些良好的测试数据。除了在目标设备上记录点之外,还可以使用其他更高精度的轨迹记录GPS。这将识别GPS和基础OSM数据中的错误。知道合理的阈值将使设计算法更加容易。




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.