路网数据对于城市中的很多利用,比方车载导航和线路优化等,都十分重要。传统的路线数据采集办法依赖于采集车,耗费大量的人力物力。随着GPS设施的遍及,海量轨迹数据在城市里产生,使咱们可能用轨迹数据去生成路网。这个问题在近十年中曾经有了宽泛的钻研,然而其中很多办法的精确度(precision)并不高,特地是高低路线,平行路线等中央。因为轨迹数据在城市内并不是均匀分布的,对于那些车辆频繁通行的中央,咱们有没有方法进一步提高这些区域路网揣测的精确度呢?

本文将介绍美国麻省理工学院(MIT)与卡塔尔哈马德-本-哈利法大学(HBKU)联结在国内地理信息畛域顶会ACM SIGSPATIAL 2018上发表的论文《RoadRunner: Improving the Precision of Road Network Inference from GPS Trajectories》,使得在进步路网揣测精确度的同时,不损失覆盖率(或召回率,recall)。本文将路网揣测的问题分为两阶段,_先用本文提出的RoadRunner算法在高轨迹密度区域揣测出高精确度地图,而后与传统的轨迹揣测路网办法联合,_满足召回率的要求。RoadRunner的核心思想是利用每条轨迹的连通性来判断相交的轨迹是行驶在同一条路线上,还是平行的两条路上。

一、问题背景

从轨迹中揣测路网是一个十分有挑战的问题。图1左侧两栏给出了基于概率密度预计(KDE)和k-Means聚类的两类传统算法在三个城市(洛杉矶、波士顿、芝加哥)上的体现。生成的地图有三个问题:

1)下层路线会与上层路线连贯;

2)理论不相交的邻接路线会连通;

3)具体的拓扑很难辨认,例如高速路的交叉口。

本文提出了 RoadRunner ,该办法利用 增量的形式基于轨迹的流构建路网。 在每一次迭代中,RoadRunner通过一个轨迹过滤算子,思考前驱雷同的子轨迹汇合来生成路段。这种办法对于除去相邻路段的烦扰十分重要,并且对于GPS的噪声和路线拓扑较为鲁棒。尽管RoadRunner精确度较高,然而过滤操作会导致轨迹较少的区域失落路线。为了进一步提高路网揣测的召回率,本文提出了一种合并操作将RoadRunner揣测的后果与传统办法揣测的后果整合。图1右侧一栏展现了文本提出的办法的成果。

二、RoadRunner

RoadRunner的算法流程如图2所示。算法的输出是一个初始的路网,能够来自于现有路网或者用别的办法揣测失去的路网。咱们先把初始路网中所有的顶点退出队列Q,队列中的顶点称为active顶点(第2-3行)。在每一轮迭代中,RoadRunner从队列中筛选一个active顶点v,通过Trace操作提取轨迹在顶点v处的流出方向(第5-6行)。对于每个流出方向,咱们退出一条从v登程,方向为,间隔为固定长度d的小路段来扩大以后路网(第7-11行)。而后通过Merge操作,尝试将该小路段的另一个顶点u合并到现有路网。如果合并失败,咱们将u退出Q用于下一轮迭代(第12-14行)。当Q为空时,算法进行,并返回以后路网。

▲图2. RoadRunner算法框架▲

值得注意的一点是,为了无效地进行Trace和Merge,在每一次迭代中,RoadRunner只保留一部分和以后路段相干的子轨迹汇合用于路网的生成。图3是某处的卫星地图和对应的轨迹数据分布。假如咱们当初要从图3下图蓝色顶点处扩大路网。因为三条高亮的路在该处空间间隔十分靠近,而且它们的朝向也近乎雷同,如果咱们思考所有轨迹数据,咱们可能会将红色的路与绿色的路相连,或者把红色的路和蓝色的路合并。然而通过排除不在以后正在扩大的路段左近的轨迹,咱们可能失去一个洁净得多的子轨迹汇合(只笼罩红色路线的轨迹)。咱们将这个轨迹过滤操作称为门路过滤算子(way path filter)。实现形式如下: 给定一个圆心沿着路段的圆序列(半径代表路线宽度),门路过滤算子只保留按程序通过这些圆的轨迹。 对于一个active顶点,咱们能够基于以后路网,计算一条长度为k的门路(以active顶点为完结),而后沿着这条门路生成圆序列(每个圆的半径能够通过轨迹数据动静预计),来结构过滤条件。

▲图3. 引入门路过滤算子的动机▲

接下来,咱们简略介绍一下Trace和Merge操作的具体实现。

1,Tracing

Trace操作的目标是为了 提取轨迹在顶点v处的次要流出方向。 如图4上图所示,咱们要提取轨迹在蓝色顶点处的方向。咱们首先利用门路过滤算子失去通过蓝色顶点之前的门路的子轨迹汇合(绿色显示),咱们发现轨迹在交叉路口处显著分为了三组。咱们以蓝色顶点为圆心,D为半径画一个圆(如粉色圆所示),而后在顶点处生成72个角度用于等分圆周。再以每一个角度与圆的交点为圆心,r为半径,结构一个小圆(如黄色圆所示)。而后再次利用门路过滤去筛选失去通过之前门路以及通过该小圆的轨迹T'

 。最初,该角度的轨迹数量记录为

,其中M为一个常数,用于滤噪。咱们将每个角度的轨迹条数都计算出,并存储在一个72维的向量中,再利用高斯核查该向量进行平滑,而后检测部分峰值。图4下图可视化了平滑后的计数值的散布,算法检测失去三个方向的部分峰值。

▲图4. Trace操作举例▲

2,Merging

当咱们生成一条路段后,须要将它和已有路网合并。然而这并不容易,合并的过程中,须要确保高低关系,平行关系以及多层级关系等等。为了克服这些挑战,本文只有在通过路段的轨迹将来的散布匹配的状况下,才会合并两个路段。图5中,咱们展现了通过蓝色和绿色的门路的轨迹将来的散布状况。咱们能够很显著发现,在例子(a)中两者的散布并不统一,然而在例子(b)中两者的散布简直一样。 

▲图5. Merge操作举例▲

Merge操作具体实现如图6所示。对于一个要合并的顶点v,咱们计算通过v的门路的轨迹将来的散布,而后咱们找到v四周的顶点u,如果通过u的门路的轨迹将来散布和v的统一,咱们退出路段(u,v),并返回True;如果v的散布与四周顶点都不同,则返回False。

▲图6. Merge操作▲

三、两阶段路网揣测

RoadRunner尽管有较高的精确度,然而因为门路过滤算子对轨迹的筛选,很多低频拜访区域的路段会失落。所以在第二阶段,为了进步召回率,须要将RoadRunner的后果与其余路网揣测算法后果合并。

假如G1为RoadRunner揣测的路网,G2为其余可能捕获低频通行路段的路网生成算法输入的后果。咱们首先删除G2中距离G1中路段Rmerge范畴内的路段失去G2',因为这些路段路段RoadRunner曾经胜利揣测实现了。而后咱们将G1与G2'放在一起失去G。然而,从G2'中退出的路段和其余路段并不连通。为了连通这些路线,对于G中每一个度为1的顶点v,咱们在满足以下两个条件时,让其与四周路段(u,w)连通:1)v到

(u,w)的间隔小于Rmerge;2)通过门路 v → p → u 或者 v → p → w的轨迹超过肯定阈值,其中p为v在路段(u,w)上的投影点。

四、试验后果

本文在4个城市(洛杉矶、波士顿、芝加哥、纽约)上验证了提出的办法的有效性,每个城市抉择了一块4kmx4km的区域,轨迹数据累计约有6万条。OpenStreetMap被当作实在路网用于验证。

图7给出了不同办法在不同参数设定下,错误率和召回率的变动曲线(越靠近左上角性能越好,不同数据集后果取均匀)。试验结果显示,RoadRunner+KDE的办法(RR-2+BE-2)比只用KDE的办法(BE-2)有33.6%的错误率升高,RoadRunner+kMeans的办法(RR-2+Kharita-20)比只用kMeans的办法(Kharita-20)有60.7%的错误率升高。

▲图7. 试验后果▲

 五、小结

本文提出了一个两阶段的路网揣测框架,可能在不损失召回率的状况下,晋升精度。本框架中的外围模块是RoadRunner,它利用轨迹数据的连接性来生成精确的路网,面对简单的路况,与现有相比有很好的体现。

举荐浏览:

  • 如何应用ClickHouse实现时序数据管理和开掘?
  • 领有20 万辆商用车的车联网平台到底长什么样?
  • NLP带来的“科幻感”超乎你的设想 - ACL2020论文解读(一)

欢送点击【京东智联云】,理解开发者社区

更多精彩技术实际与独家干货解析

欢送关注【京东智联云开发者】公众号