地图匹配算法实践

1 背景

如下图所示,1、2、3 这三个点是汽车的GPS定位结果,尽管汽车是在道路上,但定位结果与道路存在偏差。地图匹配(Map Matching)是指将行车轨迹的经纬度采样序列与数字地图路网匹配的过程,其本质上是平面线段序列的模式匹配问题( Alt等,2003)。

在实际应用中,GPS采样信号的质量会严重影响地图匹配结果:采样频率的降低、定位误差的加大、信号的丢失,都会使匹配的不准确性增加。这些情况在实际应用中经常出现。如何在这些情况下仍能保持较高的路径匹配准确率是个值得研究的问题。

2012年ACM SIGSPATIAL首次设立的竞赛,其内容就是地图匹配。三年前本人有幸和国防科大的杨岸然博士一同参加了该竞赛,收获良多。

2  地图匹配算法综述

2.1 以使用到的信息来划分

现有的算法可被分成四类:几何、拓扑、概率、高级。
a)基于几何的算法考虑GPS点与道路的几何信息,如距离、角度等;
b)基于拓扑的算法使用道路拓扑信息来控制;
c)概率方法通过考虑GPS点的概率;
d)高级的算法往往综合考虑使用全面信息,有卡尔曼滤波、模糊逻辑模型、隐式马尔可夫模型等等。

2.2 以考虑采样点的范围来划分

根据考虑采样点的范围,可分成局部/增量算法、全局算法。
a)局部/增量算法是贪婪算法,每次确定一个匹配点,下个点从已经确定的匹配点开始。这些方法根据距离和方向相似性来找到局部最优点或边。(在线匹配)
b)全局算法是要从路网中找到一条与采样轨迹最接近的匹配轨迹。为了测量采样轨迹和匹配轨迹的相似性,大多数算法使用“Frechet距离”或者是“弱Frechet距离”。还有时空匹配算法、投票算法等。(离线匹配)

2.3 以采样点的频率来划分

根据轨迹数据的采样频率,现有的地图匹配算法可分成:
a)高频采样算法(所有局部算法、部分全局算法如Frechet距离判别法等)
b)低频采样算法(ST-matching算法、IVVM算法

一般认为30s及其以上为低频采样,1s~10s为高频采样。

3 我们的训练数据

a)路网数据: Washington State U.S.A.(有128万条边 )
b)GPS数据:采样频率为1~30s,

4 采用的算法

使用ST-Matching算法(Lou等,2009),该算法是一种全局算法,能综合几何信息( GPS点与道路的距离)、道路拓扑信息(最短路径)、道路属性信息(每条道路的限速),具有精度高,稳定性好等优点。

4.1 准备候选集

4.2 确定权重


a)空间因素权重(Fs)

b)时间因素权重(Ft)

5 实验结果

6 技术实现要点

6.1 地图投影问题

问题:原始道路网数据的坐标与轨迹点的坐标并不在一个坐标体系下,不能直接进行计算!

解决方法:使用PRJ4地图投影库将两个数据投影到统一坐标下。

6.2 大路网信息数据量的读取

问题:该路网有128万条边,我们采用C++,如果读取每条边都进行new和delete操作,将执行128万次,效率极低!

解决方法:使用内存池技术。

6.3 最短路径算法的选择

问题:候选集不同层次的候选点之间都要计算最短路径,使用最常用的Dijkstra最短路径算法效率极低!

解决方法:使用启发式最短路径算法:A-star算法。

6.4 索引

问题:由于竞赛真实测试会使用很多不同的路网数据,所以建立索引没必要,但是计算某一GPS点的候选集时路网所有数据会参与计算,效率很低;

解决方法:计算某一GPS点的候选集时,先进行切片过滤,比如以该GPS点为中心,生成200m的正方形框,然后在该框里建立新的道路网,这时计算候选集时只需要与该框内的道路网数据计算。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

4 11 收藏 102 评论

关于作者:占利军

阿里巴巴RDC长期招聘资深Java研发工程师&技术专家,有意者私信联系!一个专注于后端架构、算法的工程师 个人经历: 2015 至今 阿里巴巴; 2013-2015 美团; 2010-2013 中科院(硕士); 2006-2010 浙大(本科) 个人主页 · 我的文章 · 37 ·  

相关文章

可能感兴趣的话题



直接登录
最新评论
  • KingWh GISER 2015/08/07

    很有意思

  • 正宗傻狍子   2015/08/09

    作者你好,我是西电的学生,现在正在着手做地图匹配的研究。但是不太清楚相关数据的读入等工作。想参考一下你的程序,希望可以发给我,同时也希望和大神交个朋友,谢谢啦! (我的邮箱是505932775@qq.com)

    • 占利军 研发 2015/08/09

      已经发到你邮箱了,多多加油!

      • 下雨看世界 发电厂运行 2015/10/05

        邮箱没有收到啊,大神...我的邮箱是337189277@qq.com 一个自学爱好者...

      • 大神您好,我最近在研究地图匹配算法,仿真方面感觉无从下手,非常渴望参考一下大神的代码,万分谢谢!!我的邮箱:wyfy_ck@163.com

      • 你好,我现在做毕设基于GPS地图匹配算法,能把您的代码发给我看看参考嘛。感觉无从下手。 万分感谢953702018@qq.com

    • 您好,我正在研究地图匹配算法,能不能将占利军先生发给您的代码,转发我一下,参考一下,十分感谢!我的邮箱是1005503351@qq.com

  • 王晓腾   2015/08/09

    同求源码,本人研究生是研究轨迹预测方向的,涉及到地图匹配,希望能通过大神的代码学习一下^ ^([邮箱已隐藏])万分感谢!

    • 占利军 研发 2015/08/10

      已经发到你邮箱了,多多加油!

    • 您好,我正在研究地图匹配算法,能不能将占利军先生发给您的代码,转发我一下,参考一下,十分感谢!我的邮箱是1005503351@qq.com

      • 你好,你手上有地图匹配算法程序吗。 能给我发一份吗。 谢谢了。953702018@qq.com

  • zh   2015/08/09

    大神求源码, 我们在开发一款地图相关的应用,用的sdk经常出现定位不准的情况,处理起来很棘手。希望从大神源码种获取灵感,跪谢。nicozhangw@gmail.com

    • 占利军 研发 2015/08/10

      已经发到你邮箱了,多多加油!

      • 程序猿灰灰   2016/03/21

        求大神发一份源码,本人研究生毕业论文做的就是低频数据的地图匹配,正在做实验部分,希望能够参考一下

  • hanhan   2015/08/10

    @meituanalibaba你好,我是一名学生, 我想学习一下地图匹配算法,希望能够学习你的代码,谢谢啦。我的邮箱是 datanghan@yeah.net

    • 占利军 研发 2015/08/10

      已经发到你邮箱了,多多加油!

    • 您好,我正在研究地图匹配算法,能不能将占利军先生发给您的代码,转发我一下,参考一下,十分感谢!我的邮箱是1005503351@qq.com

    • 你好,我也想学习下军哥代码中的算法,能不能给我转发一下啊,谢谢了。1598354576@qq.com

  • @meituanalibaba你好,我是一名学生, 我想学习一下地图匹配算法,希望能够学习你的代码,谢谢啦。我的邮箱是1714903660@qq.com

  • 你好,很好奇地图匹配算法,想研究一下,谢谢了,623601391@qq.com

  • weidiaoxiang   2015/08/11

    你好。求大神源码来学习,谢谢。
    如果可以,我的邮箱是wei.diaoxiang@outlook.com.
    谢谢

  • Hobart 学生 2015/08/11

    你好,对地图匹配算法很感兴趣,求代码,真诚感谢!

  • 镜框 学生 2015/08/11

    你好,我是一名软工学生,在弄地图类app,希望学习、参考您的代码
    386807537@qq.com

  • 占利军 研发 2015/08/11

    已经发送到各位同学注明的邮箱

    • 泡泡鱼2015 学生 2015/08/13

      @meituanalibaba 我研究生阶段方向也涉及到地图匹配,不过只实现了几何匹配方面的,希望能学习下大神的匹配算法,求大神代码~(邮箱:578721129@qq.com),灰常感谢哦!

  • 王广平   2015/08/12

    作者你好,我以前考虑过实现此算法,但后来因故搁置了
    很感兴趣,想参考一下 cetium@yahoo.com

  • 泡泡鱼2015 学生 2015/08/12

    求大神代码~我研究生阶段方向也涉及到地图匹配,不过只实现了几何匹配方面的,希望能学习下大神的匹配算法~(邮箱:578721129@qq.com),灰常感谢哦!

  • aeli   2015/08/13

    做iOS应用的时候试验过简单的匹配算法,想学习下大神的代码看一下。邮箱:aeli@qq.com ,感谢。

  • 你好,我们正在开发一款与地图上位置相关的应用,标出的轨迹经常会定位不准,希望能从大神的地图匹配算法实践源码中得到帮助,非常感谢。我的邮箱是790305967@qq.com。

  • 占利军 研发 2015/08/14

    已经发送到各位同学注明的邮箱啦

  • 您好,我目前在研究出租车数据,由于地图匹配不是很熟悉现在只能采用栅格的方法进行划分,希望能得到您的代码学习一下改进研究方法谢谢 邮箱是61012428@qq.com

  • 张小翔   2015/08/16

    你好,我是个GIS专业的,最近正在研究地图匹配算法,但是自己总弄不好,想通过你的源码学习学习,能给我分享下吗?116041206@qq.com

  • 你好,我是gis专业的学生,一直在思考gps与道路匹配的方法,但是没有什么进展,希望能得到你的源码进行学习研究,谢谢!!359101562@qq.com

  • 点号   2015/08/16

    您好,我是一名交通专业的研究生。最近正在做公交车辆位置标注匹配,目前遇到了一些问题。希望能参考学习下您的代码,不甚感激!邮箱:527258265@qq.com

  • 下雨看世界 发电厂运行 2015/08/20

    平时对软件感兴趣,喜欢折腾。虽然不是软件行业的,但是最近对定位感兴趣,想要学习一下。337189277@qq.com

  • iceeeeetea   2015/08/24

    你好,GIS专业,现从事交通研究,想学习这方面的算法和思路,谢谢!邮箱329574734@qq.com

  • ryolee09 学生 2015/09/06

    楼主您好,GIS辅助导航研究方向的,想学习交流一下地图匹配的思想,ryolx13@126.com,谢谢!

  • Wade03   2015/09/25

    @meituanalibaba 楼主,您好,我是一名研究地图匹配的研究生,希望学习一下大神的代码,谢谢大神!!!

  • 蒲公英   2015/10/04

    要处理浮动车数据,想学习一下您的匹配算法,931184238@qq.com谢谢

  • gis专业学生,对匹配感兴趣,求代码,1052096272@qq.com

  • 通信专业,研三。毕业设计涉及到相关知识,想要向大神学习。我的邮箱是750106615@qq.com
    灰常感谢~~~~

  • Kimberly_Autumn   2015/10/14

    楼主好,本人是计算机专业的学术,要处理一些数据,想要学习一下。邮箱1127713363@qq.com.
    不胜感激。

  • Charlie   2015/10/14

    地理信息专业 比较感兴趣 学习一下 多谢博主了! 1541898847@qq.com

  • 此在。   2015/10/19

    您好,您的博客,让我茅塞顿开;
    我们公司正准备通过车辆的GPS信息,分析道路交通状况。看到您的地图匹配算法。
    请把源码发到我的邮箱参考一下。
    谢谢了
    wang12190529@163.com

  • 凌霄   2015/10/19

    博主好,gis行业从事了几年,最近想改进一下道路匹配,所以想请教一下最前沿的思路与算法

    so...求代码一观 83900314@qq.com

  • intMinor gis学生 2015/10/19

    前辈您好,我是一名gis专业学生,最近在做的一个项目就是跟地图匹配有关的,遇到了瓶颈,望能够抽空发给我代码参考一下,不胜感激。
    邮箱是intmine@163.com

  • wangqiu   2015/10/21

    前辈您好,我是一名在读GIS专业的学生,最近有个课题研究浮动车辆,希望学习您的地图匹配算法,希望能把代码发给我参考一下,实在感谢。
    1179784895@qq.com

  • 沈帆1df   2015/10/26

    前辈你好,能不能把实现地图匹配算法的代码发我一下,谢谢,邮箱415697582@qq.com.

  • FF   2015/10/29

    前辈,我手上有一个项目可能要使用您的匹配算法,我想研究一下您的匹配算法,我的邮箱是448213272@qq.com

  • Nir   2015/10/30

    您好,最近做实验需要匹配一批轨迹点到道路网上去,看了些论文,实现中遇到了不少困难,希望能学习一下您的代码,谢谢!mlfarcher@163.com

  • 元元   2015/10/30

    前辈,您好!我是重庆大学在读研究生,最近在研究公交车辆的GPS地图匹配,看到您的这篇博文后,想学习下您的代码,希望得到你的指导与帮助,谢谢!本人邮箱762602113@qq.com

  • zoom   2015/10/30

    前辈,您好!最近在研究地图匹配算法,看到您的博文后想学习一下您的代码,谢谢!本人邮箱:116443347@qq.com

  • 小雨   2015/11/06

    前辈您好,交通小硕最近在入手学习这方面的内容,还请借代码一看,非常感谢!158942708@qq.com。

  • 小花   2015/11/10

    前辈你好,gis方向的研究生,对路网匹配很感兴趣,希望能借代码一看1209624700@qq.com

  • 奥利奥爱我 学生 2015/11/13

    楼主,您好!本人交通数据方向的研究生,最近基于C#+Arcengine+oracle做了个简单的点到线的在线地图匹配程序,每次匹配15000个已经预处理过的GPS点。对于您针对ST算法所提出的实现要点,本人非常关注的是切片过滤所选定的参数值(正方形200m或者叫栅格大小取值),想咨询下楼主:这个参数值是随便选取还是通过计算得到的最优值?另外,也非常希望能参考和研究下您实现ST算法的代码,本人不甚感激!特求代码一份:yiluxinshi@126.com

  • 波小澜   2015/11/13

    前辈你好,我现在是计算机专业研究生在读,研究方向是gps数据挖掘及相关推荐,想学习这篇文章的配套代码,也非常敬佩这种open source的精神

    邮箱1139217488@qq.com,多谢!

  • 唐念刚 互联网 2015/11/20

    军哥,您好,我先就读武汉邮电科学研究院,北斗高精度定位与GIS研究方向,参考一下您的程序,谢谢,我的邮箱是326637984@qq.com,请问你的QQ好是多少,觉得您在这方面经验比较丰富,想请教一下您。

  • LeslieXong   2015/11/20

    你好,研究生方向和地图匹配相关。
    希望可以发一份源码,向你学习
    谢谢。

    • 唐念刚 互联网 2015/12/02

      你好,我研究生论文方向也是地图匹配算法的研究,你QQ多少,可以多多互相交流

  • paulusxu   2015/11/21

    我是山科大的研究生,正在研究地图轨迹方面的课题,希望能借鉴下前辈的思路,万分感谢(我的邮箱sx_xrz@163.com)

  • 外星茹   2015/11/25

    您好,我是东北大学的学生,现在正好需要做路径规划方向,想参考下您的代码,谢谢了。
    我的邮箱是rujingyu1989@qq.com。再次感谢。

  • 您好,现在正在做地图匹配算法的相关工作。看到您的文章,觉得十分有参考价值。想参考一下您的代码。我的邮箱是1005503351@qq.com 非常感谢您!

  • 描述的算法不错,求源码,邮箱是wsh6759@gmail.com,谢谢

  • Y.Huan U3D开发 2015/12/04

    真的不错,同求源码,邮箱是yh821@qq.com,谢谢啦

  • 硕士一年级学生,求学长的地图匹配源码,仅限于研究,谢谢学长2455004028@qq.com

  • 您好,我是计算机研究生,目前正在做道路网中兴趣点查询研究,想学习一下你的代码,我的邮箱是706065088@qq.com,谢谢。

  • 我是天津大学计算机学院的一名研究生在看了您文章后很有启发,希望参考一下您的源代码,不胜感激!邮箱zhang_kai@tju.edu.cn

  • jjason 学生 2015/12/10

    您好,我是杭州电子科技大学的自读研究生,论文研究涉及到轨迹匹配,希望您可以分享下程序,本人邮箱jjs4500@163.com

  • 我是学GIS的,毕业设计涉及到地图匹配,查了好多资料,都是理论,一码难求啊,求代码学习,多谢了。490707133@qq.com

  • lx1848 学生 2015/12/19

    您好,我也在做地图匹配算法方面的研究,对实验部分比较疑惑,前不久我也看了你文中提到的那篇论文,没想到你们居然实现了,您能不能将代码发来参考一下,不胜感激。
    我的邮箱是:lx1848@126.com 再次感谢!!

  • zhenzhen 研究生 2015/12/20

    作者你好,我是研究智能车定位方面的,需要用到地图匹配方面的算法,想参考一下您的程序,希望可以发我,也希望跟您交个朋友,非常感谢,我的邮箱是:2283296927@qq.com

  • 您好!我是一名研究生,最近在做道路交通方面的研究,涉及到地图匹配这部分,能参考一下大神的代码吗?谢谢。3062309258@qq.com

  • 硕士党 仅用于研究 望作者分享源码以供参考学习 万分感谢 邮箱:1273145692@qq.com

  • 占先生,您好。我是大四的学生,目前正在进行实时路况的的研究。涉及地图匹配,希望能参考您的代码,不胜感激。邮箱654905184@qq.com

  • 博主,你好。我是工大的学生,目前正在学习数据挖掘方面的内容,可否将您的代码发我一份以供参考学习。(946818013@qq.com)

  • 你好,我是华科研究生,现在在项目组主要研究交通地图可视化。数据映射打到地图上后,发现偏差比较大,很希望参考一下你的代码。先谢谢了,我的邮箱是( lxy926_com@sina.com )。

  • 大神,您好!我最近在做道路交通方面的研究,涉及到道路匹配的问题,能参考一下大神的代码吗?谢谢。279190959@qq.com

  • 你好!刚接触地图匹配这一块,比较感兴趣,可否留QQ或微信交流?本人系西工大在读硕士。方便也可加我:1183236980

  • 大师好,我也是GIS爱好者,在研究公交GPS匹配算法,方便发份代码吗?
    68691395@qq.com
    谢谢!!!

  • 在研究地图匹配算法,希望能通过大神的代码学习一下,邮箱446051770@qq.com

  • 化大硕士生,刚接触该领域,写了一些代码,但是一直没找到合适的测试数据和验证程序,望大神不吝赐教,我的邮箱1654263223@qq.com。另外看见大神这个貌似偏重事后匹配,如果是事实匹配,大神有没有什么建议。

  • linlingo   2016/02/28

    作者你好,我现在正在研究地图匹配算法,希望学习你的算法实现,非常感谢!email:2240394428@qq.com

  • 作者你好,我想问下你那里有室内地图匹配算法如何实现的研究文章吗?若有,可以发我邮箱吗,351986949@qq.com,我想参考下,谢谢你!

  • 你好,作者,我是重庆大学的硕士研究生,目前正在做一个车辆实时监控的项目,需要在电子地图端对车辆的形式轨迹进行地图匹配,但是由于本人底子较为薄弱,所以目前还没有头目。能否请你将你的程序发给我参考一下,希望你可以发给我,谢谢!(邮箱:xieyaoyao@xqu.edu.cn)

  • 占大神你好,我是一名西北工业大学在读硕士,课题组主要是做惯性导航,GPS导航和组合导航的,刚接触GIS这一方面,希望参考一下大神的源代码学习学习,目前开题方向是MEMS+地图匹配解决城市隧道的导航问题,我的邮箱是1183236980@qq.com,麻烦您发一下源代码,谢谢啦!

  • 作者您好! 本人目前在大陸求學,逛到樓主的文章覺得挺不錯的,想跟作者要代碼來研究一下,謝謝。信箱:nsysub014030012@gmail.com

  • kk范   2016/03/02

    你好,我正在研究地图匹配方面的算法,处理采集到GPS点匹配到道路的问题,想参考下你的算法,非常感谢。fan020312@126.com

  • 稻秋   2016/03/02

    楼主,你好,我是一只程序猿,对这种算法很感兴趣,可否发个源码学习一下(444017808@qq.com),感谢!感谢!

  • 您好!我是一名在读研究生,最近做的一款应用需要用到地图匹配算法,看了您的博文后,想学习和借鉴一下您的源代码,希望得到您的指导与帮助,谢谢!本人邮箱771616942@qq.com。

  • 嘀咕 java,python,前端 2016/03/03

    楼主,可以给我一份吗1297322697@qq.com

  • 作者你好,我是一名大三的学生,我想参加一个比赛,用到匹配地图中两条轨迹的两个相似度,所以想参考下你的程序,学习一下。邮箱2510711346@qq.com谢谢啦

  • 牵手到时光尽头 科研 2016/03/09

    您好!我是一名在读硕士,目前在做车联网课题,现需对海量出租车GPS轨迹进行地图匹配。希望能参考下您所使用的代码,以改进工作,感激不尽!(我的邮箱是1005612043@qq.com)

  • 作者你好,我是一名普通大学生,现在 正在着手做地图匹配研究,想参考一个你的代码,邮箱549822204@qq.com。谢谢

  • 您好!我是一名学生,现在正在着手学习地图匹配的研究。目前在学习地图方面的知识,但不太清楚相关地图轨迹计算等内容希望能参考下大神您所使用的代码,以学习膜拜,感激不尽!(我的邮箱是972491872@qq.com)

  • 学长你好,我是本科生一名,毕业论文要用到地图匹配,无奈学的是交通对这方面不太了解,所以希望您能指点一下,邮箱648740216@qq.com,多谢

  • 您好,我是在读学生,正在研究轨迹数据需要地图匹配,希望参考一下您的代码,谢谢!(2050915536@qq.com)

  • 作者,您好,我最近研究GPS数据可视化,正在研究地图匹配部分,您能把代码发我参考一下吗,3Q。。邮箱 fzxy1050312@163.com 不胜感激

  • 我这边需要研究一下车辆轨迹匹配到道路上,能给程序参考下吗?135792qaqa@163.com

  • xinstein   2016/03/31

    作者你好,我是西交的学生,现在在做路况预测这方面的研究,但卡在地图匹配这里很久了,使用点到点匹配精度不好,对后面的工作有很大影响,所以准确试试其他方法。看了你的介绍,想参考一下你的程序,希望可以发给我,谢谢啦! (我的邮箱是837633751@qq.com)

  • 学长您好,我现在做毕设关于地图匹配的。 需要源代码参考下。 万分感谢。953702018@qq.com

跳到底部
返回顶部