基于MapReduce计算框架的浮动车数据与道路匹配的方法

文档序号:6715391阅读:211来源:国知局
基于MapReduce计算框架的浮动车数据与道路匹配的方法
【专利摘要】本发明提供一种基于MapReduce计算框架的浮动车数据与道路匹配的方法,包括下述步骤:步骤一,将路网划分为网格;步骤二,利用MapReduce分布式计算框架将线段定位到网格上;步骤三,利用MapReduce分布式计算框架将浮动车数据定位到网格上;步骤四,在同一网格内,利用MapReduce分布式计算框架,将代表浮动车数据的点定位到线段上。本发明通过对分布式存储和计算架构的利用,并利用数据裁剪技术将系统中匹配算法的复杂度尽量降低,使得对数据的处理能力和处理规模都有极大的提升。
【专利说明】基于MapReduce计算框架的浮动车数据与道路匹配的方法

【技术领域】
[0001]本发明涉及交通控制领域,尤其是一种道路拥堵情况的分析方法。

【背景技术】
[0002]道路拥堵问题已经成为制约经济发展的重要因素,也大大降低了人民群众的生活素质。如何有效的解决交通拥堵问题,不只是要多修路,多疏导。相应的道路拥堵分析和拥堵模式预判也有极大的实际意义。遗憾的是,许多城市的政府部门并没有将各个道路的历史拥堵状况记录下来,没有历史的拥堵信息,难以施加相应的分析学习算法,得到所需的拥堵信息的模式信息。


【发明内容】

[0003]本发明的目的克服现有技术中存在的不足,提供一种基于MapReduce计算框架的浮动车数据与道路匹配的方法,通过对分布式存储和计算架构的利用,并利用数据裁剪技术将系统中匹配算法的复杂度尽量降低,使得对数据的处理能力和处理规模都有极大的提升。本发明采用的技术方案是:
一种基于MapReduce计算框架的浮动车数据与道路匹配的方法,包括下述步骤: 步骤一,将路网划分为网格;
步骤二,利用MapReduce分布式计算框架将线段定位到网格上;
步骤三,利用MapReduce分布式计算框架将代表浮动车数据的点定位到网格上;步骤四,在同一网格内,利用MapReduce分布式计算框架,将代表浮动车数据的点定位到线段上。
[0004]进一步地,所述步骤一中,具体根据历史统计数据,通过罗杰斯特回归的算法来使得路网划分的尺度最优化,最优化的标准是各个网格所分配得到的浮动车尽量均匀,也就是每个网格所分配得到的浮动车数据的条数的方差尽量小,且网格数尽量少。
[0005]进一步地,所述步骤二中,具体的方法为:
先进行步骤二的Map过程,算法如下:
步骤2-1,计算线段两端点各自所在的网格ID,如果两个网格ID相同则该线段属于该网格,直接创建Key/Value键值对,将网格ID作为Key,将线段作为Value ;
步骤2-2,如果线段两端点所在的网格ID不同,首先利用线段两端点计算出其可能相交的网格矩阵,之后计算该线段向量与线段始端点和各个网格端点组成的向量的点乘积,如果点乘积大于零,则将该网格端点表示为1,如果点乘积小于0,则将该网格端点表示为O ;
步骤2-3,在网格矩阵各个端点组成的矩阵中出现0、1变化的部分所属的网格,就是该线段向量与之相交的网格,该线段就属于相应的网格ID,将该些网格ID作为Key,而将该线段作为Value ;
之后启动步骤二的Reduce过程。
[0006]进一步地,步骤三中,将网格ID作为Key,将代表浮动车数据的点作为Value。
[0007]进一步地,步骤四中,具体的方法为:
将线段ID作为Key,将浮动车数据作为Value ;在数据导入时,将线段的数据存放在每个计算节点的内存中;在计算过程中使用向量计算代表浮动车数据的点到线段的距离,将代表浮动车数据的点ID作为Key,将距离以及相对应的线段作为Value ;
经过一次Map和Reduce过程之后,获得距离代表浮动车数据的点最近的线段的ID,因而将该点定位到该条线段上,形成〈代表浮动车数据的点ID,线段ID>对;之后再经过一次Map过程,将〈代表浮动车数据的点ID,线段ID >对转换成〈线段ID,代表浮动车数据的点ID >对;经过Reduce过程,可以将点归属到相应的线段上,进而归属到相应的路段上。
[0008]本发明的优点在于:本方法能够使得系统中匹配算法的复杂度尽量降低,从而提高系统的性能和可扩展性。可以解决十亿乃至百亿级时序浮动车信息定位到路段问题。通过对分布式存储和计算架构的利用,使得对数据的处理能力和处理规模都有极大的提升。

【专利附图】

【附图说明】
[0009]图1为本发明的线段与多网格相交示意图。
[0010]图2为本发明的流程图。

【具体实施方式】
[0011]下面结合具体附图和实施例对本发明作进一步说明。
[0012]为了判明道路拥堵问题,本发明采用了利用浮动车数据来计算道路拥堵状况的方案。浮动车主要组成是出租车,由于出租车行车路线随机化的特点,其采集的数据遍布城市的几乎所有道路。对分析和计算道路当时的拥堵状况有较大的信息量。
[0013]本发明以一个分布式列存储数据库作为存储介质并利用MapReduce作为其分布式计算框架。
[0014]在本发明的系统中,收集了 2万余台浮动车一年的历史数据,数据的产生频率是每30秒一条。浮动车数据中关键字段如下:
a)浮动车的车辆标识;
b)数据采集的时间戳;
c)浮动车当前经度;
d)浮动车当前维度;
e)浮动车当前的速度大小;
f)浮动车当前的速度方向;
g)浮动车当前运营状态;
此外,系统还拥有这些浮动车所营运的城市的路网的矢量信息,路网中的道路由路段组成,路段的几何表示是一个Pline (多线段),Pline是有大量线段组成的折线。
[0015]系统拥有20亿条浮动车数据和80万条线段组成的路网。本发明是为了解决将海量浮动车数据定位到复杂路网上的问题。
[0016]本发明的主要思路是,将路网划分网格,之后将线段与浮动车数据映射到相应的网格上。然后通过本网格内的线段和浮动车数据进行匹配从而大大减少计算复杂度。
[0017]本方法的主要步骤如下:
步骤一,首先,将路网划分为网格;系统中网格的划分是根据历史数据统计后获得,通过罗杰斯特回归算法来使得路网划分的尺度最优化,最优化的标准是各个网格所分配得到的浮动车尽量均匀,也就是每个网格所分配得到的浮动车数据的条数的方差尽量小,且网格数尽量少。各网格为矩形网格。
[0018]步骤二,其次,利用MapReduce分布式计算框架将线段定位到网格上;
在线段划分的Map-Reduce过程中,将线段作为输入,之后将网格ID作为Key,将线段作为Value。Key/Value可称为键值对。Key即为键值项,Value即为键值。
[0019]先进行步骤二的Map (Map即映射)过程,算法如下:
步骤2-1,计算线段两端点各自所在的网格ID,如果两个网格ID相同则该线段属于该网格,直接创建Key/Value组,将网格ID作为Key,将线段作为Value ;网格ID是指网格的编号。本文中ID代表编号。
[0020]步骤2-2,如果线段两端点所在的网格ID不同,则如图1所示,首先利用线段两端点计算出其可能相交的网格矩阵,之后计算该线段向量PQ与线段始端点P和各个网格端点组成的向量的点乘积,如果点乘积大于零,则将该网格端点表示为1,如果点乘积小于0,则将该网格端点表示为O ;
步骤2-3,在网格矩阵各个端点组成的矩阵中出现0、1变化的部分所属的网格(图1中黑色圆圈标识),就是该线段向量PQ与之相交的网格,该线段就属于相应的网格ID,将该些网格ID作为Key,而将该线段作为Value。
[0021]通过一次线段的扫描Map,就可以建立起网格ID与线段的对应关系。这其中,线段可以属于多个网格,其原因是该线段可能与多个网格相交。
[0022]之后启动步骤二的Reduce (Reduce即化简)过程,这之前也可以适当的设置shuffle过程,将属于同一个网格ID的线段放在一起。
[0023]步骤三,接着,利用MapReduce分布式计算框架将浮动车数据定位到网格上;此步骤中,将网格ID作为Key,将代表浮动车数据的点作为Value ;
步骤三中的Map过程实际上是简单哈希过程。Reduce过程则将所有属于某个网格的代表浮动车数据的点汇聚到一起。
[0024]步骤四,最后,在同一网格内,利用MapReduce分布式计算框架,将代表浮动车数据的点定位到线段上。
[0025]该过程中,将线段ID作为Key,将浮动车数据作为Value ;在数据导入时,将线段的数据存放在每个计算节点的内存中;在计算过程中使用向量计算代表浮动车数据的点到线段的距离,将代表浮动车数据的点ID作为Key,将距离以及相对应的线段作为Value ;
经过一次Map和Reduce过程之后,获得距离代表浮动车数据的点最近的线段的ID,因而将该点定位到该条线段上,形成〈代表浮动车数据的点ID,线段ID>对;之后再经过一次Map过程,将〈代表浮动车数据的点ID,线段ID >对转换成〈线段ID,代表浮动车数据的点ID >对;经过Reduce过程,可以将点归属到相应的线段上,进而归属到相应的路段上。从而完成了浮动车数据归一化到其所在的路段上的实现技术。
[0026]至此就完成了将浮动车数据定位到路网上的需求。
[0027]本发明通过利用分布式数据库与分布式计算框架MapReduce将浮动车数据定位到其所在的路段上。本发明解决了十亿乃至百亿级时序浮动车信息定位到路段问题。通过对分布式存储和计算架构的利用,使得对数据的处理能力和处理规模都有极大的提升。
【权利要求】
1.一种基于MapReduce计算框架的浮动车数据与道路匹配的方法,其特征在于,包括下述步骤: 步骤一,将路网划分为网格; 步骤二,利用MapReduce分布式计算框架将线段定位到网格上; 步骤三,利用MapReduce分布式计算框架将代表浮动车数据的点定位到网格上; 步骤四,在同一网格内,利用MapReduce分布式计算框架,将代表浮动车数据的点定位到线段上。
2.如权利要求1所述的基于MapReduce计算框架的浮动车数据与道路匹配的方法,其特征在于: 所述步骤一中,具体根据历史统计数据,通过罗杰斯特回归算法来使得路网划分的尺度最优化,最优化的标准是各个网格所分配得到的浮动车尽量均匀,也就是每个网格所分配得到的浮动车数据的条数的方差尽量小,且网格数尽量少。
3.如权利要求1所述的基于MapReduce计算框架的浮动车数据与道路匹配的方法,其特征在于: 所述步骤二中,具体的方法为: 先进行步骤二的Map过程,算法如下: 步骤2-1,计算线段两端点各自所在的网格ID,如果两个网格ID相同则该线段属于该网格,直接创建Key/Value键值对,将网格ID作为Key,将线段作为Value ; 步骤2-2,如果线段两端点所在的网格ID不同,首先利用线段两端点计算出其可能相交的网格矩阵,之后计算该线段向量与线段始端点和各个网格端点组成的向量的点乘积,如果点乘积大于零,则将该网格端点表示为1,如果点乘积小于O,则将该网格端点表示为O ; 步骤2-3,在网格矩阵各个端点组成的矩阵中出现0、1变化的部分所属的网格,就是该线段向量与之相交的网格,该线段就属于相应的网格ID,将该些网格ID作为Key,而将该线段作为Value ; 之后启动步骤二的Reduce过程。
4.如权利要求1所述的基于MapReduce计算框架的浮动车数据与道路匹配的方法,其特征在于: 步骤三中,将网格ID作为Key,将代表浮动车数据的点作为Value。
5.如权利要求1所述的基于MapReduce计算框架的浮动车数据与道路匹配的方法,其特征在于: 步骤四中,具体的方法为: 将线段ID作为Key,将浮动车数据作为Value ;在数据导入时,将线段的数据存放在每个计算节点的内存中;在计算过程中使用向量计算代表浮动车数据的点到线段的距离,将代表浮动车数据的点ID作为Key,将距离以及相对应的线段作为Value ; 经过一次Map和Reduce过程之后,获得距离代表浮动车数据的点最近的线段的ID,因而将该点定位到该条线段上,形成〈代表浮动车数据的点ID,线段ID>对;之后再经过一次Map过程,将〈代表浮动车数据的点ID,线段ID >对转换成〈线段ID,代表浮动车数据的点ID >对;经过Reduce过程,可以将点归属到相应的线段上,进而归属到相应的路段上。
【文档编号】G08G1/01GK104408918SQ201410668944
【公开日】2015年3月11日 申请日期:2014年11月20日 优先权日:2014年11月20日
【发明者】刘斌, 程子轩, 赵旦谱, 王艳军, 台宪青 申请人:江苏物联网研究发展中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1