地图匹配实践

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的正方形框,然后在该框里建立新的道路网,这时计算候选集时只需要与该框内的道路网数据计算。

时间: 2024-08-25 04:43:37

地图匹配实践的相关文章

Kylin-百度地图的实践

百度地图开放平台业务部数据智能组主要负责百度地图内部相关业务的大数据计算分析,处理日常百亿级规模数据,为不同业务提供单条SQL毫秒级响应的OLAP多维分析查询服务. 对于Apache Kylin在实际生产环境中的应用,在国内,百度地图数据智能组是最早的一批实践者之一.Apache Kylin在2014年11月开源,当时,我们团队正需要搭建一套完整的大数据OLAP分析计算平台,用来提供百亿行级数据单条SQL毫秒到秒级的多维分析查询服务,在技术选型过程中,我们参考了Apache Drill.Pres

[转载]postgres+socket.io+nodejs实时地图应用实践

标签 PostgreSQL , 服务端编程接口 , pl language , 小程序 , PostGIS , 异步消息 , notify , listen , nodejs , socket.io 背景 转载自: https://my.oschina.net/freegis/blog/761713 是使用PostgreSQL+node.js+socket.io实现的一个实时地图,其中用到了PostgreSQL的异步消息通知机制(notify/listen),以及数据库的触发器,PostGIS地

演讲实录丨王涛 高精地图助力自动驾驶

高精地图助力自动驾驶 王涛  高德汽车自动驾驶产品研发部技术总监 王涛:大家上午好!非常感谢接受吴总的邀请,能够有机会跟大家做一个分享,今天我说的内容是<高精地图如何助力自动驾驶>,内容主要分为四部分:一是高精地图与自动驾驶的关系.现在大家都在讨论自动驾驶为什么需要高精地图:二是高精地图产品概览:三是高精地图如何炼成:四是基于高精地图的云服务.     这张图刚才院士和吴总都展示过了,我就不具体细说了,主要想说明的是一点,从分析里目前有两个研究路线,一种是类似于谷歌的变革路线,没有经历过零级一

专访光庭:传统测绘与众包模式融合,高精地图呼唤新的算法与平台

2012 年,光庭在获得地图测绘资质之后,深感在传统地图行业已经很难撼动对手的地位,光庭就将视线放到了自动驾驶需要的高精地图上. 2013 年,光庭成立自动驾驶技术研发项目组.据武汉光庭科技总经理苏晓聪向雷锋网介绍,研发自动驾驶的目的,是为了弄清楚前者对高精地图有哪些需求,「希望通过开发原型车来驱动高精地图的开发.」 2016 年 4 月,光庭联合武汉大学.武汉理工大学共同研发的「小鱼畅行」自动驾驶项目,也是上述目的的延续,希望继续探索这样的课题:自动驾驶究竟需要什么样的高精度地图.高精地图中究

医疗大健康行业案例(老人健康实时监测和预警) - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , pipelineDB , 流式计算 , 独立事件相关性 , 舆情分析 , 实时状态分析 , 递归查询 , 时序数据 背景 人的身体和机器差不多,随着年龄的增长,器官逐渐老化,毛病也会越来越多,注意保养是一方面,另一方面也需要注意实时的监测和发出预警,在问题萌芽状态就解决掉. 以往我们检查身体得去医院或专业的体检机构,很麻烦,随着科技的进步,一些健康指标的监测变得更加方便,例如手环也是一个普及很快的监控检测终端(目前已能够检测心跳.温度.运动等各项指标),未来这种终

基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标_javascript技巧

前言 近来由于工作需要,需要提取某些城市的经纬度坐标,稍微搜索了一下,发现百度地图和高德地图都提供了相关的函数和例子.那么剩余的工作也就比较简单了,保存坐标,然后转换为WGS坐标,这样才能和现有的GPS数据以及地图匹配. 主要问题和解决方法 本地保存文件跨浏览器支持 由于安全的原因,JavaScript本地保存文件的方式通常都只有IE支持的ActiveXObject/Open方法,每次都要提示不安全和允许运行,非常麻烦.好在其他浏览器目前都支持<a>标签实现文件下载的方法.经测试最新的Goog

数据库案例集锦 - 开发者的《如来神掌》

背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗手,无可柰何,惟隐居深谷,以雕为友.呜呼,生平求一敌手而不可得,诚寂寥难堪也.」 剑冢中,埋的是剑魔独孤求败毕生几个阶段中用过的几柄剑: 利剑无意:第一柄是青光闪闪的利剑,凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋. 软剑无常:第二柄是紫薇软剑,三十岁前所用,误伤义士不祥,悔恨不已,乃弃之深谷. 重剑无锋:第三柄是玄铁重剑,重剑无锋,大巧不工,四十岁之前恃之横行天下. 木剑无俦:第四柄是已腐朽的木剑. 无剑无招:四十岁后,不

数据库选型十八摸 之 PostgreSQL - 致 架构师、开发者

标签 PostgreSQL , 数据库特性 , 数据库应用场景分析 , 数据库选型 背景 数据库对于一家企业来说,相比其他基础组件占据比较核心的位置. 有很多企业由于最初数据库选型问题,导致一错再错,甚至还有为此付出沉痛代价的. 数据库的选型一定要慎重,但是这么多数据库,该如何选择呢? 我前段时间写过一篇关于数据库选型的文章,可以参考如下 <数据库选型思考> 另外,PostgreSQL这个数据库这些年的发展非常的迅猛,虽然国内还跟不上国外的节奏,但是相信国人逐渐会融合进去. 所以我专门针对Po

从微信小程序 到 数据库&quot;小程序&quot; - 鬼知道我经历了什么

标签 PostgreSQL , 服务端编程接口 , pl language , 小程序 , 地球语言 , java , perl , python , php , tcl , R , go , JULIA 背景 微信小程序最近比较火,大概以后大家都不需要安装程序了,直接在微信中调用运行.跑在微信里的小程序类似一个虚拟机或者一个Docker容器,这是腾讯要分APP store蛋糕的节奏吗? 从技术角度来看,微信小程序带来了几个好处,不需要安装软件,用户不需要进行软件的版本管理,节省了一点点手机的空