CN107818412B - 一种基于MapReduce的大规模公交乘客OD并行计算方法 - Google Patents
一种基于MapReduce的大规模公交乘客OD并行计算方法 Download PDFInfo
- Publication number
- CN107818412B CN107818412B CN201710998166.0A CN201710998166A CN107818412B CN 107818412 B CN107818412 B CN 107818412B CN 201710998166 A CN201710998166 A CN 201710998166A CN 107818412 B CN107818412 B CN 107818412B
- Authority
- CN
- China
- Prior art keywords
- station
- bus
- record
- card
- getting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000007781 pre-processing Methods 0.000 claims abstract description 7
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06315—Needs-based resource requirements planning or analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G06Q50/40—
Abstract
本发明涉及一种基于MapReduce的大规模公交乘客OD并行计算方法。该方法:首先,对原始公交数据预处理,并将处理后数据存储;而后,运用连续性公交出行链方法得到上车记录集合Sa和具有完整OD点的集合Sb;对集合Sa的上车站点数据根据乘客工作日和非工作日的出行特征以及历史出行站点频次来推算公交乘客出行下车站点;最后,依次对每个IC卡用户的出行OD记录按照刷卡时间顺序归并,完成大规模公交乘客OD并行计算的过程。本发明运用Hadoop的MapReduce并行计算框架和HBase数据库在出行链方法基础上结合乘客历史相似出行行为规律来并行计算大规模公交乘客OD点,不仅提高了大规模公交乘客OD点的计算效率,同时也提高了推算公交乘客OD点的准确率,具有较高的实用价值。
Description
技术领域
本发明涉及一种基于MapReduce的大规模公交乘客OD并行计算方法。
背景技术
随着定位技术的成熟,位置传感器硬件得到广泛普及,城市中客运车辆都装备有车载定位系统,公交车实时的位置信息以及其他状态信息能够被轻易获得。由传感器采集得到的数据具有时效性强、范围广、数据量大等特点,通过数据挖掘技术手段我们能够从中计算出有价值的信息。
Hadoop是目前在大数据领域中比较成熟,应用最为广泛的分布式计算平台,主要由分布式文件存储系统HDFS和分布式计算框架MapReduce组成,在处理海量数据时具有高可靠性、高扩展性、高效性和高容错性。HBase是一个构建在HDFS上的分布式面向列的数据库,可以存储海量数据,基于行键有较高的查询效率。
公交车辆轨迹数据和IC卡刷卡数据中蕴藏着城市客流、城市居民出行规律、城市居民的乘车需求等有用的信息。现有根据公交车辆轨迹数据和公交IC卡刷卡数据推算公交乘客OD(Origin-Destination)点的方法包括:基于概率论的站点吸引度法、基于居民出行规律的出行链方法。这些方法大都基于传统的关系型数据库计算,在数据量较小,如几条线路或是较小量用户出行模式分析的情况下具有较好的效果。然而随着公交数据量与日俱增,传统关系型数据存储系统在存储计算大规模的数据时已经捉襟见时,用传统的推算公交乘客OD点的方法已不能满足当下快速推算大规模公交乘客OD点的需求。
发明内容
本发明的目的在于提供一种基于MapReduce的大规模公交乘客OD并行计算方法,该方法运用Hadoop的MapReduce并行计算框架和HBase数据库在出行链方法基础上结合乘客历史相似出行行为规律来并行计算大规模公交乘客OD点,不仅提高了大规模公交乘客OD点的计算效率,同时也提高了推算公交乘客OD点的准确率,具有较高的实用价值。
为实现上述目的,本发明的技术方案是:一种基于MapReduce的大规模公交乘客OD并行计算方法,包括如下步骤,
步骤S1:对原始公交数据包括IC卡数据、公交车辆GPS数据、公交车辆信息数据以及公交线路站点数据进行预处理;
步骤S2:将预处理过IC卡数据、公交车辆GPS数据存储到HBase数据库;将公交车辆信息数据和公交线路站点数据存储到HDFS;
步骤S3:根据MapReduce的特点,在Map函数中依次读取每条IC卡记录,获取其相关信息,根据车辆编号及其刷卡时间等信息获取到相应车辆进出站数据,再结合公交线路站点数据计算出该IC卡持有者乘坐公交出行的上车站点,即O点;
步骤S4:在Reduce函数中对能够计算得到O点的IC卡记录,以IC卡号为单位进行归并,以键值对的形式输出到HDFS;
步骤S5:在步骤S4的基础上,在新的Map函数中,依次读取每个用户已计算出O点的所有IC卡记录,将该些用户按照连续出行链方法推算得到出行D点的刷卡记录添加到集合Sb,而未能推算出D点刷卡记录添加到集合Sa;其中,出行D点即乘客公交出行的下车站点;
步骤S6:在步骤S5的基础上,对集合Sa的刷卡记录,在Map函数中根据居民工作日和非工作日的出行特征,以及历史出行站点频次来推算乘客公交出行的下车站点;
步骤S7:在Reduce函数中,按照刷卡时间对每个IC卡号的出行OD记录进行排序,并以IC卡号为键,以出行OD记录为值输出,完成大规模公交乘客OD并行计算过程。
在本发明一实施例中,所述步骤S1中,对原始公交数据进行预处理包括:
步骤S11:删除原始公交IC卡数据中不必要的字段,即保留IC卡号、刷卡时间、线路编号、公交车辆编号字段信息;
步骤S12:删除原始公交车辆GPS数据中不必要字段,即保留GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号字段信息;
步骤S13:整理公交车辆信息数据,根据车辆编号和车辆GPS设备编号对应关系,即根据一个公交车辆编号找到对应的车辆GPS设备编号;
步骤S14:整理公交线路及公交站点数据,转换公交站点的经纬度坐标系为WGS-84坐标系,同时转换公交站点经纬度信息为墨卡托平面坐标。
在本发明一实施例中,所述步骤S2,具体包括:
步骤S21:在HBase数据库中创建表IC_Card,包含列簇IC_Info,将IC卡数据以IC卡号和刷卡时间为组合行键,分别以IC卡号、刷卡时间、线路编号、公交车辆编号为属性值添加到列簇IC_Info;
步骤S22:在HBase数据库中创建表Bus_Avl,包含列簇AVL_Info,将公交车辆GPS数据以GPS设备编号和GPS时间为组合行键,分别以GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号为属性值添加到列簇AVL_Info;
步骤S23:将公交车辆信息数据以车辆编号为键,以车辆GPS设备编号为属性值,创建文件Bus_Info并存储到HDFS;
步骤S24:将公交线路站点数据以线路编号为键,以该条线路所有的站点为属性值,创建文件Line_Info并存储到HDFS。
在本发明一实施例中,所述步骤S3,具体包括:
步骤S31:在Map函数中,从表IC_Card中读取一条IC卡记录,并获取其IC卡号、公交线路编号、刷卡时间、公交车辆编号信息;
步骤S32:根据公交车辆编号从文件Bus_Info中获得相应公交车辆GPS设备编号;
步骤S33:根据车辆GPS设备编号和刷卡时间对Bus_Avl表进行索引,查询出刷卡时间前3分钟,后7分钟时间段内该公交车辆所有进出站数据;
步骤S34:遍历所有进出站数据,依次判断刷卡时间是否大于第一条车辆进站时间并且小于第二条车辆进站时间,若是,则计算刷卡时间与两次进站之间出站时间的时间差绝对值Δt1和刷卡时间与后进站时间的时间差绝对值Δt2;若Δt1<Δt2,返回第一条进站数据的行驶方向、经纬度信息,否则返回第二条进站数据的行驶方向、经纬度信息;若刷卡时间不符合条件,则开始读取下一条刷卡记录;
步骤S35:根据步骤S31获取的线路编号和步骤S34获取的车辆行驶方向从文件Line_Info中获取对应的站点集合Station,包括每个站点的站点编号、站点名称、平面坐标信息;
步骤S36:将步骤S34获取的车辆进站经纬度信息转换为墨卡托平面坐标;
步骤S37:计算步骤S36获取的车辆位置信息与集合Station中每个站点的距离,并获得最小距离dmin,dmin所对应的公交站点即为该条IC卡记录的O点;
步骤S38:判断该条刷卡记录是否是最后一条,若是,在结束该map任务,若不是,则读取下一条刷卡记录,进入下一条刷卡记录上车站点推算过程;
在本发明一实施例中,所述步骤S4,具体包括:
步骤S41:在Reduce函数中,以IC卡号为单位,将该IC卡卡号的所有上车记录按照刷卡时间排序;
步骤S42:以IC卡号为键,以该IC卡用户的所有O点记录为属性值,以键值对形式输出到HDFS。
在本发明一实施例中,所述步骤S5,具体包括:
步骤S51:在步骤S4的基础上,Map函数中读取一个IC卡用户的所有上车记录;
步骤S52:读取第i条上车记录,判断第i+1条数据是否存在,若不存在,则将第i条上车记录添加到集合Sa;若存在,则读取第i条和第i+1条上车记录;
步骤S53:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若在同一天内,则计算两次乘车时间间隔Δt,如果Δt<α,第i条上车记录为代刷卡情况,将第i条上车记录添加到集合Sa;若Δt>α,则计算两条记录的乘车线路编号,若乘车线路编号相等,则将第i+1条上车记录的上车站点视为第i条上车记录的下车站点,将第i条OD记录添加到集合Sb;如果乘车线路编号不相等,则计算第i+1条记录的上车站点与第i条记录乘车线路的所有站点的距离,获得其最小距离dmin,如果dmin<=β,则dmin所对应的公交站点为第i条上车记录的下车站点,将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa;其中,α为时间阈值,设置为1分钟;β为距离阈值,设置为500米,代表换乘中可接受的最大步行距离;
步骤S54:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若第i条和第i+1条上车记录不在同一天时间内,则第i条为前一天的最后一条乘车记录,而第i+1条为次日第一条乘车记录;根据第i条上车记录的线路编号、线路方向、站点编号信息获取该次乘车的可能下车站点;将这些可能的下车站点与当日第一次乘车的上车站点进行比较,如果两个站点相等或相近,则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb;否则将这些可能的下车站点与次日第一条乘车记录的上车站点进行比较,如果两个站点相等或相近,则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa;
步骤S55:输出Sa和Sb。
在本发明一实施例中,所述步骤S6,具体包括:
步骤S61:在步骤S5的Map函数中读取集合Sa的第k条记录,判断第k条记录的刷卡时间是否属于工作日,若是,则在集合Sb中寻找相似的工作日D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点 则将该条上车记录添加到集合Sc;若不是,则在集合Sb中寻找相似非工作日的D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点 则将该条上车记录添加到集合Sc;
步骤S62:统计该IC卡用户历史出行的上车站点频次,按频次排序并存入一个Map集合M;读取集合Sc的第j条上车记录,根据线路编号、行驶方向、站点编号获取该次乘车所有可能的下车站点,添加到集合Sd;
步骤S63:在步骤S62基础上将Sd的站点名称和集合M中的站点名称进行匹配,若匹配的站点数为1,则该站点就是第j条上车记录的下车站点,将第j条OD记录添加到Sb;若匹配的站点数大于1,则比较匹配结果中每个站点的频次,频次最高的站点为第j条记录的下车站点,将第j条OD记录添加到Sb;
步骤S64:在步骤S63的基础上,若第j条上车记录未匹配到相应的D点,则该条记录无法推算到下车站点;若该条记录不是该用户最后一条上车记录,则读取下一条上车记录,否则就结束该用户的下车站点推算工作,输出集合Sb并进行下一个用户的下车站点推算,直到所有用户下车站点推算完毕。
在本发明一实施例中,所述步骤S7,具体包括:
步骤S71:Reduce函数中,在步骤S5和步骤S6的基础上读取一个IC卡用户公交出行的所有OD记录,并按照刷卡时间进行排序;
步骤S72:在步骤S71的基础上,以IC卡号为键,以已排序的所有OD记录为属性值,输出到HDFS,循环读取每一个IC卡用户,直到结束,完成大规模公交乘客OD并行计算过程。
在本发明一实施例中,所述步骤S36中,将步骤S34获取的车辆进站经纬度信息转换为墨卡托平面坐标的转换方式如下:
相较于现有技术,本发明具有以下有益效果:
1、本发明使用了能存储海量数据的HBase数据库和目前比较成熟的MapReduce并行计算框架来存储、推算大规模公交乘客OD点,提高了大规模公交乘客OD点的计算效率;
2、本发明在现有的推算公交乘客OD点的基础上,充分考虑了IC卡用户的历史出行行为规律,根据居民工作日和非工作日的出行特征,以及历史出行站点频次来推算公交乘客下车站点,推算结果更加准确;
3、本发明对于不同城市的公交数据都能快速并行推算公交乘客OD点,具有较好的适用性。
附图说明
图1是本发明方法的流程图。
图2是本发明方法的具体实施例流程图
图3是本发明大规模公交乘客O点并行推算流程图。
图4是本发明基于连续性公交出行链方法推算大规模公交乘客D点流程图。
图5是本发明根据乘客历史相似出行行为规律推算大规模公交乘客D点流程图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
请参照图1-2,本发明提供一种基于MapReduce的大规模公交乘客OD并行计算方法,包括以下步骤:
步骤S1:对原始公交数据包括IC卡数据、公交车辆GPS数据、公交车辆信息数据以及公交线路站点数据进行预处理;所述公交数据预处理包括:
步骤S11:删除原始公交IC卡数据中不必要的字段,保留IC卡号、刷卡时间、线路编号、公交车辆编号字段信息。
步骤S12:删除原始公交车辆GPS数据中不必要字段,保留GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号字段信息。
步骤S13:整理公交车辆信息数据,根据车辆编号和车辆GPS设备编号对应关系,可根据一个公交车辆编号找到对应的车辆GPS设备编号。
步骤S14:整理公交线路及公交站点数据,转换公交站点的经纬度坐标系为WGS-84坐标系,同时也转换公交站点经纬度信息为墨卡托平面坐标。
步骤2:在步骤S1基础上设计公交数据的存储方案如下:
步骤S21:在HBase数据库中创建表IC_Card,包含列簇IC_Info,表结构如表1所示。将IC卡数据以IC卡号和刷卡时间为组合行键,分别以IC卡号、刷卡时间、线路编号、公交车辆编号为属性值添加到列簇IC_Info。
步骤S22:在HBase数据库中创建表Bus_Avl,包含列簇AVL_Info,表结构如表2所示。将公交车辆GPS数据以GPS设备编号和GPS时间为组合行键,分别以GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号为属性值添加到列簇AVL_Info。
步骤S23:将公交车辆信息数据以车辆编号为键,以车辆GPS设备编号为属性值,创建文件Bus_Info并存储到HDFS。
步骤S24:将公交线路站点数据以线路编号为键,以这条线路所有的站点为属性值,创建文件Line_Info并存储到HDFS。
步骤S3:根据MapReduce的特点,在Map函数中依次读取每条IC卡记录,获取其相关信息,根据车辆编号及其刷卡时间等信息获取到相应车辆进出站数据,再结合公交线路站点数据计算出该IC卡持有者乘坐公交出行的上车站点(即O点)。具体计算流程如图3所示,包括以下步骤:
步骤S31:在Map函数中,从表IC_Card中读取一条IC卡记录,并获取其IC卡号、公交线路编号、刷卡时间、公交车辆编号信息。
步骤S32:根据公交车辆编号从文件Bus_Info中获得相应公交车辆GPS设备编号。
步骤S33:根据车辆GPS设备编号和刷卡时间对Bus_Avl表进行索引,查询出刷卡时间前3分钟,后7分钟时间段内该公交车辆所有进出站数据。
步骤S34:遍历所有进出站数据,依次判断刷卡时间是否大于第一条车辆进站时间并且小于第二条车辆进站时间,若是,则计算刷卡时间与两次进站之间出站时间的时间差绝对值Δt1和刷卡时间与后进站时间的时间差绝对值Δt2。若Δt1<Δt2,返回第一条进站数据的行驶方向、经纬度信息,否则返回第二条进站数据的行驶方向、经纬度信息。若刷卡时间不符合条件,则开始读取下一条刷卡记录。
步骤S35:根据步骤S31获取的线路编号和步骤S34获取的车辆行驶方向从文件Line_Info中获取对应的站点集合Station,包括每个站点的站点编号、站点名称、平面坐标信息。
步骤S36:将步骤S34获取的车辆进站经纬度信息转换为墨卡托平面坐标。这一步是为了后续步骤中车辆位置信息与公交站点以及公交站点之间欧式空间距离的计算与表示。转换方法如下:
步骤S37:计算步骤S36获取的车辆位置信息与集合Station中每个站点的距离,并获得最小距离dmin,dmin所对应的公交站点即为该条IC卡记录的O点。
步骤S38:判断该条刷卡记录是否是最后一条,若是,在结束该map任务,若不是,则读取下一条刷卡记录,进入下一条刷卡记录上车站点推算过程。
步骤S4:在Reduce函数中对能够计算得到O点的IC卡记录,以IC卡号为单位,以键值对的形式输出到HDFS,包括以下步骤:
步骤S41:在Reduce函数中,以IC卡号为单位,将该IC卡卡号的所有上车记录按照刷卡时间排序。
步骤S42:以IC卡号为键,以该IC卡用户的所有O点记录为属性值,以键值对形式输出到HDFS。
步骤S5:在步骤S4的基础上,在Map函数中,依次读取每个用户已计算出O点的所有IC卡记录,将该用户按照连续出行链方法推算得到出行D点的刷卡记录添加到集合Sb,而未能推算出D点刷卡记录添加到集合Sa。具体流程如图4所示,包括以下步骤:
步骤S51:在步骤S4的基础上,Map函数中读取一个IC卡用户的所有上车记录。
步骤S52:读取第i(初始值为1)条上车记录,判断第i+1条数据是否存在,若不存在,则将第i条上车记录添加到集合Sa(Sa是按照连续出行链方法未能推算出下车站点的上车记录集合);若存在,则读取第i条和第i+1条上车记录。
步骤S53:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若在同一天内,则计算两次乘车时间间隔Δt,如果Δt<α(α为时间阈值,设置为1分钟),第i条上车记录为代刷卡情况,将第i条上车记录添加到集合Sa;若Δt>α,则计算两条记录的乘车线路编号,若乘车线路编号相等,则将第i+1条上车记录的上车站点视为第i条上车记录的下车站点,将第i条OD记录添加到集合Sb。如果乘车线路编号不相等,则计算第i+1条记录的上车站点与第i条记录乘车线路的所有站点的距离,获得其最小距离dmin,如果dmin<=β(β为距离阈值,设置为500米,代表换乘中可接受的最大步行距离),则dmin所对应的公交站点为第i条上车记录的下车站点,将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa。
步骤S54:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若第i条和第i+1条上车记录不在同一天时间内,则第i条为前一天的最后一条乘车记录,而第i+1条为次日第一条乘车记录(上车记录已按刷卡时间排序)。根据第i条上车记录的线路编号、线路方向、站点编号信息获取该次乘车的可能下车站点。将这些可能的下车站点与当日第一次乘车的上车站点进行比较,如果两个站点相等或相近(相等:站点名称一样,相近:两个站点距离<=),则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb;否则将这些可能的下车站点与次日第一条乘车记录(即第i+1条记录)的上车站点进行比较,如果两个站点相等或相近,则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa。
步骤S55:输出Sa和Sb。
步骤S6:在步骤S5的基础上,对集合Sa的刷卡记录,在Map函数中根据居民工作日和非工作日的出行特征,以及历史出行站点频次来推算乘客公交出行的下车站点(即D点)。具体流程如图5所示,包括如下步骤:
步骤S61:在步骤S5的Map函数中读取集合Sa的第k条记录(初始k=1),判断第k条记录的刷卡时间是否属于工作日,若是,则在集合Sb中寻找相似的工作日D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点 则将该条上车记录添加到集合Sc;若不是,则在集合Sb中寻找相似非工作日的D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点 则将该条上车记录添加到集合Sc。
步骤S62:统计该IC卡用户历史出行的上车站点频次,按频次排序并存入一个Map集合M。读取集合Sc的第j条上车记录(初始j=1),根据线路编号、行驶方向、站点编号获取该次乘车所有可能的下车站点,添加到集合Sd。
步骤S63:在步骤S62基础上将Sd的站点名称和集合M中的站点名称进行匹配,若匹配的站点数为1,则该站点就是第j条上车记录的下车站点,将第j条OD记录添加到Sb;若匹配的站点数大于1,则比较匹配结果中每个站点的频次,频次最高的站点为第j条记录的下车站点,将第j条OD记录添加到Sb。
步骤S64:在步骤S63的基础上,若第j条上车记录未匹配到相应的D点,则该条记录无法推算到下车站点。若该条记录不是该用户最后一条上车记录,则读取下一条上车记录,否则就结束该用户的下车站点推算工作,输出集合Sb并进行下一个用户的下车站点推算,直到所有用户下车站点推算完毕。
步骤S7: 在Reduce函数中,按照刷卡时间对每个IC卡号的出行OD记录进行排序,并以IC卡号为键,以出行OD记录为值输出,完成大规模公交乘客OD并行计算过程。具体步骤如下:
步骤S71:Reduce函数中,在步骤S5和步骤S6的基础上读取一个IC卡用户公交出行的所有OD记录,并按照刷卡时间进行排序。
步骤S72:在步骤S71的基础上,以IC卡号为键,以已排序的所有OD记录为属性值,输出到HDFS,循环读取每一个IC卡用户,直到结束,完成大规模公交乘客OD并行计算过程。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。
Claims (9)
1.一种基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:包括如下步骤,
步骤S1:对原始公交数据包括IC卡数据、公交车辆GPS数据、公交车辆信息数据以及公交线路站点数据进行预处理;
步骤S2:将预处理过IC卡数据、公交车辆GPS数据存储到HBase数据库;将公交车辆信息数据和公交线路站点数据存储到HDFS;
步骤S3:根据MapReduce的特点,在Map函数中依次读取每条IC卡记录,获取其相关信息,根据车辆编号及其刷卡时间等信息获取到相应车辆进出站数据,再结合公交线路站点数据计算出该IC卡持有者乘坐公交出行的上车站点,即O点;
步骤S4:在Reduce函数中对能够计算得到O点的IC卡记录,以IC卡号为单位进行归并,以键值对的形式输出到HDFS;
步骤S5:在步骤S4的基础上,在新的Map函数中,依次读取每个用户已计算出O点的所有IC卡记录,将该些用户按照连续出行链方法推算得到出行D点的刷卡记录添加到集合Sb,而未能推算出D点刷卡记录添加到集合Sa;其中,出行D点即乘客公交出行的下车站点;
步骤S6:在步骤S5的基础上,对集合Sa的刷卡记录,在Map函数中根据居民工作日和非工作日的出行特征,以及历史出行站点频次来推算乘客公交出行的下车站点;
步骤S7:在Reduce函数中,按照刷卡时间对每个IC卡号的出行OD记录进行排序,并以IC卡号为键,以出行OD记录为值输出,完成大规模公交乘客OD并行计算过程。
2.根据权利要求1所述的一种基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S1中,对原始公交数据进行预处理包括:
步骤S11:删除原始公交IC卡数据中不必要的字段,即保留IC卡号、刷卡时间、线路编号、公交车辆编号字段信息;
步骤S12:删除原始公交车辆GPS数据中不必要字段,即保留GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号字段信息;
步骤S13:整理公交车辆信息数据,根据车辆编号和车辆GPS设备编号对应关系,即根据一个公交车辆编号找到对应的车辆GPS设备编号;
步骤S14:整理公交线路及公交站点数据,转换公交站点的经纬度坐标系为WGS-84坐标系,同时转换公交站点经纬度信息为墨卡托平面坐标。
3.根据权利要求1所述的一种基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S2,具体包括:
步骤S21:在HBase数据库中创建表IC_Card,包含列簇IC_Info,将IC卡数据以IC卡号和刷卡时间为组合行键,分别以IC卡号、刷卡时间、线路编号、公交车辆编号为属性值添加到列簇IC_Info;
步骤S22:在HBase数据库中创建表Bus_Avl,包含列簇AVL_Info,将公交车辆GPS数据以GPS设备编号和GPS时间为组合行键,分别以GPS设备编号、线路编号、行驶方向、GPS时间、进出站标志、纬度、经度、站点编号为属性值添加到列簇AVL_Info;
步骤S23:将公交车辆信息数据以车辆编号为键,以车辆GPS设备编号为属性值,创建文件Bus_Info并存储到HDFS;
步骤S24:将公交线路站点数据以线路编号为键,以该条线路所有的站点为属性值,创建文件Line_Info并存储到HDFS。
4.根据权利要求3所述的一种基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S3,具体包括:
步骤S31:在Map函数中,从表IC_Card中读取一条IC卡记录,并获取其IC卡号、公交线路编号、刷卡时间、公交车辆编号信息;
步骤S32:根据公交车辆编号从文件Bus_Info中获得相应公交车辆GPS设备编号;
步骤S33:根据车辆GPS设备编号和刷卡时间对Bus_Avl表进行索引,查询出刷卡时间前3分钟,后7分钟时间段内该公交车辆所有进出站数据;
步骤S34:遍历所有进出站数据,依次判断刷卡时间是否大于第一条车辆进站时间并且小于第二条车辆进站时间,若是,则计算刷卡时间与两次进站之间出站时间的时间差绝对值Δt1和刷卡时间与后进站时间的时间差绝对值Δt2;若Δt1<Δt2,返回第一条进站数据的行驶方向、经纬度信息,否则返回第二条进站数据的行驶方向、经纬度信息;若刷卡时间不符合条件,则开始读取下一条刷卡记录;
步骤S35:根据步骤S31获取的线路编号和步骤S34获取的车辆行驶方向从文件Line_Info中获取对应的站点集合Station,包括每个站点的站点编号、站点名称、平面坐标信息;
步骤S36:将步骤S34获取的车辆进站经纬度信息转换为墨卡托平面坐标;
步骤S37:计算步骤S36获取的车辆位置信息与集合Station中每个站点的距离,并获得最小距离dmin,dmin所对应的公交站点即为该条IC卡记录的O点;
步骤S38:判断该条刷卡记录是否是最后一条,若是,在结束map任务,若不是,则读取下一条刷卡记录,进入下一条刷卡记录上车站点推算过程。
5.根据权利要求4所述的一种基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S4,具体包括:
步骤S41:在Reduce函数中,以IC卡号为单位,将该IC卡卡号的所有上车记录按照刷卡时间排序;
步骤S42:以IC卡号为键,以该IC卡用户的所有O点记录为属性值,以键值对形式输出到HDFS。
6.根据权利要求5所述的基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S5,具体包括:
步骤S51:在步骤S4的基础上,Map函数中读取一个IC卡用户的所有上车记录;
步骤S52:读取第i条上车记录,判断第i+1条数据是否存在,若不存在,则将第i条上车记录添加到集合Sa;若存在,则读取第i条和第i+1条上车记录;
步骤S53:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若在同一天内,则计算两次乘车时间间隔Δt,如果Δt<α,第i条上车记录为代刷卡情况,将第i条上车记录添加到集合Sa;若Δt>α,则计算两条记录的乘车线路编号,若乘车线路编号相等,则将第i+1条上车记录的上车站点视为第i条上车记录的下车站点,将第i条OD记录添加到集合Sb;如果乘车线路编号不相等,则计算第i+1条记录的上车站点与第i条记录乘车线路的所有站点的距离,获得其最小距离dmin,如果dmin<=β,则dmin所对应的公交站点为第i条上车记录的下车站点,将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa;其中,α为时间阈值,设置为1分钟;β为距离阈值,设置为500米,代表换乘中可接受的最大步行距离;
步骤S54:在步骤S52的基础上,当第i条和第i+1条上车记录都存在时,比较这两条记录的日期,若第i条和第i+1条上车记录不在同一天时间内,则第i条为前一天的最后一条乘车记录,而第i+1条为次日第一条乘车记录;根据第i条上车记录的线路编号、线路方向、站点编号信息获取该次乘车的可能下车站点;将这些可能的下车站点与当日第一次乘车的上车站点进行比较,如果两个站点相等或相近,则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb;否则将这些可能的下车站点与次日第一条乘车记录的上车站点进行比较,如果两个站点相等或相近,则该站点为第i条上车记录的下车站点,并将第i条OD记录添加到Sb,否则将第i条上车记录添加到Sa;
步骤S55:输出Sa和Sb。
7.根据权利要求6所述的基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S6,具体包括:
步骤S61:在步骤S5的Map函数中读取集合Sa的第k条记录,判断第k条记录的刷卡时间是否属于工作日,若是,则在集合Sb中寻找相似的工作日D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点则将该条上车记录添加到集合Sc;若不是,则在集合Sb中寻找相似非工作日的D点作为该条上车记录的D点,将OD记录添加到Sb;如果未找到相应的D点则将该条上车记录添加到集合Sc;
步骤S62:统计该IC卡用户历史出行的上车站点频次,按频次排序并存入一个Map集合M;读取集合Sc的第j条上车记录,根据线路编号、行驶方向、站点编号获取该次乘车所有可能的下车站点,添加到集合Sd;
步骤S63:在步骤S62基础上将Sd的站点名称和集合M中的站点名称进行匹配,若匹配的站点数为1,则该站点就是第j条上车记录的下车站点,将第j条OD记录添加到Sb;若匹配的站点数大于1,则比较匹配结果中每个站点的频次,频次最高的站点为第j条记录的下车站点,将第j条OD记录添加到Sb;
步骤S64:在步骤S63的基础上,若第j条上车记录未匹配到相应的D点,则该条记录无法推算到下车站点;若该条记录不是该用户最后一条上车记录,则读取下一条上车记录,否则就结束该用户的下车站点推算工作,输出集合Sb并进行下一个用户的下车站点推算,直到所有用户下车站点推算完毕。
8.根据权利要求7所述的基于MapReduce的大规模公交乘客OD并行计算方法,其特征在于:所述步骤S7,具体包括:
步骤S71:Reduce函数中,在步骤S5和步骤S6的基础上读取一个IC卡用户公交出行的所有OD记录,并按照刷卡时间进行排序;
步骤S72:在步骤S71的基础上,以IC卡号为键,以已排序的所有OD记录为属性值,输出到HDFS,循环读取每一个IC卡用户,直到结束,完成大规模公交乘客OD并行计算过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710998166.0A CN107818412B (zh) | 2017-10-18 | 2017-10-18 | 一种基于MapReduce的大规模公交乘客OD并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710998166.0A CN107818412B (zh) | 2017-10-18 | 2017-10-18 | 一种基于MapReduce的大规模公交乘客OD并行计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818412A CN107818412A (zh) | 2018-03-20 |
CN107818412B true CN107818412B (zh) | 2021-04-27 |
Family
ID=61608547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710998166.0A Active CN107818412B (zh) | 2017-10-18 | 2017-10-18 | 一种基于MapReduce的大规模公交乘客OD并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107818412B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959596B (zh) * | 2018-07-12 | 2020-07-24 | 成都智达万应科技有限公司 | 一种公交阶梯票价预测方法 |
CN109410568B (zh) * | 2018-09-18 | 2022-04-22 | 广东中标数据科技股份有限公司 | 基于用户画像和换乘规律的下车站点推测方法及系统 |
CN109615036B (zh) * | 2018-11-30 | 2019-12-24 | 深圳大学 | 一种基于公汽ic刷卡系统的细颗粒物暴露风险评估方法 |
CN109584555A (zh) * | 2018-12-13 | 2019-04-05 | 昆山市公共交通集团有限公司 | 基于afc数据的公交乘客下车站点推测方法 |
CN109903553B (zh) * | 2019-02-19 | 2021-07-09 | 华侨大学 | 多源数据挖掘的公交车上下车站点识别和检验方法 |
CN110069571A (zh) * | 2019-03-18 | 2019-07-30 | 平安普惠企业管理有限公司 | 一种自动化数据对比方法及装置、电子设备 |
CN110148225B (zh) * | 2019-04-26 | 2022-02-08 | 创新先进技术有限公司 | 交通站点确定方法及装置、设备及存储设备 |
CN111445145A (zh) * | 2020-03-27 | 2020-07-24 | 北京嘀嘀无限科技发展有限公司 | 一种公交下车站点的确定方法、装置、存储介质和电子设备 |
CN112783944A (zh) * | 2021-01-21 | 2021-05-11 | 广州羊城通有限公司 | 下车公交站点的确定方法及装置 |
CN113010507A (zh) * | 2021-03-23 | 2021-06-22 | 浩鲸云计算科技股份有限公司 | 基于时间校准和遗传算法的公交od计算方法及系统 |
CN113159416B (zh) * | 2021-04-19 | 2022-04-15 | 深圳大学 | 一种公交单次刷卡下车站点的推算方法及智能终端 |
CN114495491A (zh) * | 2021-12-31 | 2022-05-13 | 深圳云天励飞技术股份有限公司 | 跨线出行路线确定方法、装置、计算机设备及介质 |
CN114882693B (zh) * | 2022-03-23 | 2022-11-18 | 昆明理工大学 | 一种基于刷卡数据深度挖掘的公交乘客下车站点预测方法 |
CN115691128B (zh) * | 2022-10-27 | 2023-07-18 | 大连海事大学 | 一种基于多源公交数据联合挖掘的公交站点客流推算方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914406B1 (en) * | 2012-02-01 | 2014-12-16 | Vorstack, Inc. | Scalable network security with fast response protocol |
CN103065464B (zh) * | 2012-12-24 | 2015-09-16 | 中国科学院深圳先进技术研究院 | 实时客流特征分析方法及系统 |
CN104463364B (zh) * | 2014-12-04 | 2018-03-20 | 中国科学院深圳先进技术研究院 | 一种地铁乘客实时分布和地铁实时密度预测方法及系统 |
CN105788260B (zh) * | 2016-04-13 | 2018-10-30 | 西南交通大学 | 一种基于智能公交系统数据的公交乘客od推算方法 |
CN106777703A (zh) * | 2016-12-19 | 2017-05-31 | 杭州讯阳科技有限公司 | 一种公交乘客实时分析系统及其构建方法 |
-
2017
- 2017-10-18 CN CN201710998166.0A patent/CN107818412B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107818412A (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107818412B (zh) | 一种基于MapReduce的大规模公交乘客OD并行计算方法 | |
CN105788260B (zh) | 一种基于智能公交系统数据的公交乘客od推算方法 | |
CN113256987B (zh) | 基于多源数据融合的居民出行链生成方法及共乘查询方法 | |
CN104197945B (zh) | 一种基于低采样率浮动车数据的全局投票地图匹配方法 | |
CN105809292B (zh) | 公交ic卡乘客下车站点推算方法 | |
CN103106702B (zh) | 基于云计算的公交出行服务系统 | |
CN106297280A (zh) | 一种信息处理方法和装置 | |
CN108279017B (zh) | 一种在导航过程中实时计算和添加途经点的方法 | |
CN102324128A (zh) | 基于ic卡记录的公交站间od客流预测方法及装置 | |
CN105654721B (zh) | 一种采用公交ic卡和车载gps数据计算公交od量的方法 | |
CN109903553B (zh) | 多源数据挖掘的公交车上下车站点识别和检验方法 | |
CN110310477B (zh) | 基于公交gps与手机信令数据的公交客流检测方法 | |
Leclerc et al. | Unraveling the travel behavior of carsharing members from global positioning system traces | |
CN106707301A (zh) | 一种基于定位数据的勤务巡线考核方法 | |
Marchal et al. | Postprocessing procedures for person-based global positioning system data collected in the French National Travel Survey 2007–2008 | |
CN112036757A (zh) | 基于手机信令和浮动车数据的停车换乘停车场的选址方法 | |
CN111190891A (zh) | 一种多语义轨迹数据分段存储方法 | |
CN110853156A (zh) | 融合公交gps轨迹与ic卡数据的乘客od识别方法 | |
CN111554085A (zh) | 一种公共交通一体化出行智能服务装置及其应用方法 | |
CN114358808A (zh) | 基于多源数据融合的公交od估计及分配方法 | |
CN107578619B (zh) | 基于ic卡数据测定地铁站点公共自行车服务范围的方法 | |
CN107657006B (zh) | 基于时空特性的公共自行车ic卡与地铁ic卡匹配方法 | |
CN113573238B (zh) | 一种基于手机信令的联程旅客出行链识别方法 | |
CN111444286B (zh) | 一种基于轨迹数据的远距离交通节点关联性挖掘方法 | |
CN110782098A (zh) | 一种基于出租车载客数据的定制公交规划方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |