左精力 王秋平 陈 君
(西安建筑科技大学土木工程学院 西安710055)
城市公交系统在运行过程中产生大量公交车辆GPS数据和公交IC卡数据,其具有采集方便、样本量大、覆盖面广、连续记录等优点信息[1-2],若能准确获得公交IC卡乘客的上车站点信息,可为公交系统的规划和管理提供重要的决策信息[3-5]。
对于公交车辆GPS数据和公交IC卡数据有对应关系表,且公交时刻表完整的情况,为了推算IC卡数据对应站点信息,Zhao等[6]结合AFC及AVC数据获取上车站点;BARRY等[7]利用GPS数据和IC卡数据进行融合,获取到公交车行驶日志,利用行驶日志及融合数据推算上车站点;马晓磊等[8]对北京公交GPS数据和IC卡数据通过SIM卡信息进行融合,推算上车站点;陈君等[9]将公交IC卡数据与公交GPS数据进行关联,结合调度数据推算公交IC卡乘客上车站点;秦政[10]通过对公交IC卡和GPS数据的分析,给出了利用IC卡和GPS数据推导乘客上下车站点的判别方法。对于公交车辆GPS数据和公交IC卡数据有对应关系表,但二者存在系统时间差的情况,为了推算IC卡数据对应站点信息,陈绍辉等[11]对北京公交GPS数据和IC卡数据首先推算站点运行时间,进行首站匹配获得时间偏差后,利用禁忌搜索算法进行二次匹配;李海波等[12]为了修正公交IC卡数据时间偏差,提高上车站点识别的准确性,在分析公交乘客上车刷卡行为的基础上,提出了基于AVL数据的公交IC卡数据时间修正方法;程晓明等[13]通过密度聚类算法对IC卡数据进行聚类,寻找刷卡中值,再结合公交时刻表站点匹配求系统时间差,利用禁忌搜索算法进行二次匹配。
但对于GPS数据和IC卡数据无直接对应关系表,且系统存在不规律时间差的情况,还没有较完整的数据融合算法。针对此种情况,以西安市公交数据为例,采用位置匹配、时间最大相似度、时间平均偏差算法,对二者的数据进行融合算法研究,并以南宁市已知对应关系的公交数据进行算法验证,让原本没有关联的2个数据一一对应,从而可以方便的计算上车刷卡的时间、线路和位置。
采用西安市2017年某1 d的公交数据,包括公交GPS数据和IC卡数据,公交GPS数据来自公交调度管理系统,公交刷卡数据来自公交运行收费系统。从网络爬取公交线路站点数据(精度<20 m),基本数据结构见表1。
表1 基本数据结构Tab.1 Basic data structure
1)GPS数据(Data_A)。包含217条线路5 192辆公交车,共计21 104 785条轨迹记录。轨迹记录时间间隔为1~30 s的不规则分布,时间精度为1 s;线路编号和车辆编号不能对应实际线路和车辆;坐标采用WGS-84世界坐标系。
2)IC卡数据(Data_B)。取与GPS轨迹数据同时间段的数据集,包含192条线路5 413个设备,共2 997 772行记录。其中刷卡模式为上车刷卡,时间精确到1 s。线路编号、车辆编号不能对应实际线路、车辆。
3)公交站点坐标数据(Data_C)。通过Python数据爬取全市区385条公交线路数据,坐标转换为WGS-84世界坐标系(原为百度BD-09坐标系)。
数据特征如下。
1)GPS数据、IC卡数据没有标明实际线路名,没有刷卡站点数据。
2)Data_A与Data_B中时间不同步,有未知时间差,且每台车时差不等。
3)各数据源的线路、车辆、卡号等无对应关系表。
为了获得每个刷卡记录的实际上车站点和实际线路,需要先解决公交GPS轨迹数据与IC卡数据融合问题,基于数据类型和特点,为实现2个数据库融合,需要解决以下5个问题。
1)判断GPS数据(Data_A)中每辆公交实际对应的公交线路。
2)根据实际公交线路站点信息和GPS数据,判断每辆公交的运行时刻表。
3)计算GPS数据(Data_A)与IC卡数据(Data_B)的设备号对应关系。
4)计算GPS数据(Data_A)与IC卡数据(Data_B)的时间修正值。
5)计算IC卡数据(Data_B)每条记录实际线路、站点名。
公交车大部分时间运行在固定线路上,且城市中不存在具有完全相同路径的不同公交线路。常用的4种基于距离的轨迹相似性度量算法,分别为离散弗雷歇距离(DFD)[14]、动态时间规整(DTW)[15]、最长公共序列(LCS)[16]以及实序列编辑距离(EDR)[17],本研究通过DFD进行相似度计算(见式(1)~(2)),可以求出二者的对应关系。
式中:gps_A为公交GPS轨迹向量[Lon,Lat];gps_C为公交线路站点坐标向量[ZD_Lon,ZD_Lat];A d为轨迹向量gps_A中每个点到gps_C中最近点组成的距离向量。
式中:num(Ad K AC越大,则轨迹向量gps_A越相似于轨迹向量gps_C。同理,互换gps_A和gps_C在式(1)中的位置,可求得相似度K CA。对于Bus_m线路Bus_i公交全天轨迹向量gps_A,和所有线路站点向量遍历计算,分别求最大K AC和K CA对应线路,若二者大于判断阈值且对应的同1条线路,则可判断Bus_m线路Bus_i公交与此实际线路高度相似,可以判断二者具有实际对应关系。 公交车辆一般按计划在固定线路上逐个站点停靠,因此具有固定的停靠点和固定的运行方向。车辆运动状态下GPS有惯性方向修正,在车辆停止情况下可能会出现不同程度的位置漂移,而车辆运行时刻表主要是车辆停车靠站时间,如果直接采用未经处理的GPS数据进行判断,会出现较大的偏差,因此需要先对原始的GPS数据根据实际情况进行数据清洗,然后再进行停车靠站判断。 2.2.1 GPS数据(Data_A)清洗 轨迹数据清洗旨在去除轨迹中的冗余点和噪音点,常采用曲线拟合、特征分析等方法进行处理[18]。根据需要去掉漂移点,保留正确的位置记录,通过大量的数据观察发现GPS轨迹数据是间隔的若干时间序列位置点,前后的时差、距离、速度、转角数值都在一定范围内,数据特征如下。 时差dt∈[1,1 200],时差为前后2点记录的时间差,s。时差为0则表明数据重复记录,时差较大时则可能是非行驶状态。距离dl∈(0,2 000],为前后2点的直线距离,m。前后距离应该大于0,距离过大则可能是信号中断。速度dv∈(0,50],前后2点距离和时间的比值,km/h。前后速度应大于0,城市公交运营车速一般不大于50 km/h。转角dθ∈[100°,180°],车辆实际轨迹一般不会出现小转角,小转角一般为漂移点。 根据以上规律,对Data_A进行轨迹数据清洗流程如下。 步骤1。按时间排序,计算前后相邻2点的dl,dt,dv,dθ。 步骤2。去除dl,dt,dv,dθ阈值外所在行记录; 步骤3。重复步骤1~2,计算2次,完成数据清洗,获得清洗后轨迹数据Data_a。 数据清洗前后的效果见图1。 图1 数据清洗Fig.1 Trajectory data cleaning 2.2.2 公交车辆运行时刻表判断 公交车辆在固定线路上运行,遇到计划内的站点需要减速停车靠站,乘客上下完成后加速离开前往下1站,无乘客上下车时仍需要进站停靠。对于已知实际运行线路的某1个具体公交运行轨迹,可以根据轨迹点与站点的距离判断是否通过了站点。但因为GPS数据精度问题,仅采用距离判断会将部分对向站点识别为停靠站,因此需要增加行车方向和线路方向一致性判断,公交车辆运行时刻表判断流程如下。 步骤1。对公交站点坐标数据(Data_C)按照实际运行排布,计算每1站到下1站的运行方向角dθc(方向角为与正北方向顺时针小于360°的夹角)。 步骤2。对清洗后轨迹数据(Data_a),计算每1个点运行方向角dθa;计算每1个站点距离阈值dlc范围内的轨迹点,当这些轨迹点对应的方向角dθa与dθc夹角小于10°时,可判断这些轨迹点对应的时间段是车辆停车靠站的时间段,见图2。 步骤3。某线路上某辆车的轨迹,计算所有站点对应的到站时间段,可得到此车辆在当天的运行时刻表矩阵Stop_t。 图2 车辆轨迹与公交站点位置关系Fig.2 Relationship between vehicle curves and bus stop location 取1辆车1 d的运行时刻表矩阵Stop_t,在IC卡记录中任取1辆车当天的刷卡时间记录Card_t,若Card_t中时间大部分落在Stop_t的记录范围内,则二者大概率是同1辆车产生的数据(见图3),否则二者大概率没有联系,见图4。 图3 公交到站时间与刷卡时间匹配Fig.3 Bus arrival time matching the time for swiping cards 图4 公交到站时间与刷卡时间不匹配Fig.4 Bus arrival time not matching the time for swiping cards 另外根据实际运行状况和数据观察,每辆车的刷卡系统时间不统一,存在未知时间偏差,需要对每辆车的刷卡时间做修正。对于某1个Stop_t和任1个Card_t,可以计算二者在dt i修正下的时间相似度和累计时间偏差值,从而判断二者是否存在对应关系。 2.3.1 时间相似度 对绝大部分车辆,1 d的Card_t数量足够大,Card_t在dt i修正下落在Stop_t停车区间上的数量与Card_t自身数量的比值,可以用来表征二者的相似程度,相似度足够大则可判断二者可能相似。通过计算dt i∈[t1,t2]的所有相似度,并绘制曲线,若超过阈值且具有明显凸峰特征,则可判断在此极值对应的时间修正下,二者相似。 对刷卡时间进行修正。 时间交集。 时间分布相似度。 式中:num(Card_t i)为Card_t i的数量;num(SC_t i)为SC_t i的数量。 对dt i∈[t1,t2]间隔为t的所有修正后刷卡时间进行计算,得到相似度集合:Ρ=[ρ1,ρ2,…,ρn]。以dt i为横轴,以Ρ为纵轴绘图,见图5~6。 图5 刷卡时间修正变化与停车靠站时间相似度曲线——匹配关系Fig.5 Similarity curve between the correction time of swiping cards and the parking time:matching relationship 图6 刷卡时间修正变化与停车靠站时间相似度曲线——非匹配关系Fig.6 Similarity curve between the correction time of swiping cards and parking time:mismatched relationship 对于每组匹配曲线,可求最大相似度ρmax=max(Ρ)和对应修正时间为tx。若同时符合以下判断标准,可认为Stop_t和Card_t在修正时间tx下高度相似。 1)最大相似度ρmax>0.6。 2)相似度集合Ρ的图形分布具有明显的凸峰特性,见图6。 在图5中,时间修正-156 s位置处,相似度增大到0.85,其他时间修正下相似度为0.2~0.3,表明刷卡时间序列在经过-156 s修正后,与停车靠站时间具有高相似性;在图6中,相似度均小于0.31,且无凸峰特性,则刷卡时间与停车靠站时间低相关。 时间相似度曲线法特点是时间计算简单,计算量小,实现速度快,对于dt i∈[-500,500],通过实列发现普通计算机上1次匹配耗时约为0.01~0.02 s,适用于大规模的筛选计算,但是算法上依赖公交运行时刻表的准确性,没有落在停车区间的数据会被忽略。 2.3.2 时间平均偏差 公交IC卡站点判断经常采用k-means聚类算法分析上车站点位置[19],本研究对任意2个Stop_t和Card_t,计算Card_t中每次刷卡时间与Stop_t中最接近时间的时间差平均值,当二者记录同1辆车数据时,刷卡时间发生在停车时间范围内,则时间差平均值应该接近于零,否则会较大,利用这个规律可以用时间平均偏差法进行对应关系判断。 利用式(3),刷卡时间进行修正后为Card_t i,求Card_t i中第j个时间ct j与Stop_T点的最小差值 遍历计算,得最小差值集合为DN=[dn1,dn2,…,dn j]。 时间平均偏差为 式中:sum(DN)为DN中所有值之和。 对dt i∈[t1,t2]间隔为t的所有修正后刷卡时间进行计算,得到时间平均偏差集合DX=[dx1,dx2,…,dxi],以dt i为横轴,以DX为纵轴绘图见图7~8。 图7 刷卡时间修正变化与停车靠站时间平均偏差曲线——匹配关系Fig.7 Average deviation curve between the correction time of swiping cards and the parking time:matching relationship 图8 刷卡时间修正变化与停车靠站时间平均偏差曲线——非匹配关系Fig.8 Average deviation curve between the correction time of swiping cards and the parking time:mismatched relationship 对每组曲线求最小时间平均偏差dxmin=min(DX)和对应修正时间为ty。若同时符合以下判断标准,可认为Stop_t和Card_t在修正时间ty下高度相似。 1)最小时间平均偏差dxmin<20。 2)时间平均偏差集合DX的图形分布具有明显的凹峰特性,见图7。 在图7中,时间修正-155 s位置处,时间平均偏差为2.25 s,其他时间修正下时间平均偏差均大于20 s,表明刷卡时间序列在经过-155 s修正后,与停车靠站时间具有高度相似性;在图8中,时间平均偏差均大于250 s,且无凹峰特性,则刷卡时间与停车靠站时间低相关。 时间平均偏差曲线法的特点是改善了时间相似度曲线法的缺点,可以计算任何刷卡点与最近停车时间区间的关系,但是相对来说计算量较大,本案例中对于dt i∈[-500,500]通过实列发现普通计算机上1次匹配耗时为9~16 s,计算量是前者的上千倍,对于大规模计算效率较低,适用于通过时间相似度确定关系后的数据验证计算。 通过时间相似度法和时间平均偏差法的配合使用,可以计算任意车辆GPS轨迹数据与IC卡数据之间的相似程度,再通过多天的数据验证,可完全锁定二者的对应关系和修正时间。 从西安市公交大数据中选取5条线路3 d的GPS轨迹数据进行试算,共包括195辆公交车。从数据库以线路为单位调取数据,以GPS轨迹数据中线路编号为第1层循环单元,车辆编号为第2层循环单元,每条线路分3个步骤步进行运算。 步骤1。GPS数据(Data_A)与公交线路(Data_C)匹配。取经纬度栅格化精度d1=0.000 5°(距离精度约为50 m),简化化轨迹点数量,线路距离阈值取200 m,轨迹阈值取500 m,利用式(1)~(2)进行公交线路匹配计算,匹配结果见表2,共识别191辆车,线路总识别率97.3%,可以完全确定每1个轨迹线路编号对应的实际线路名。对于没有识别的4辆车,发现轨迹数据量过少,实际上可能当天没有参与运营活动。 表2 GPS轨迹数据与公交线路匹配统计Tab.2 Matching statistics of the GPS track data and bus routes 步骤2。公交运行时刻表判断。取时差d t小于1 s、距离dl小于1 m、速度dv小于2 km/h或大于50 km/h、转角dθ小于120°为依据,利用轨迹数据清洗流程对原始轨迹点进行数据清洗;清洗后的轨迹数据,结合已经匹配的实际线路,取站点判断阈值dlc=50 m、方向角dθa与dθc的小夹角小于10°,利用公交车辆运行时刻表判断流程,判断经过每1站的轨迹时间段,再转化为公交运行时刻表,191辆可识别线路车辆可以全部进行公交时刻表判断计算,统计数据见表3。 表3 公交运行时刻表判断结果统计Tab.3 Result statistics of judging bus operation timetable 步骤3。GPS数据(Data_A)与IC卡数据(Data_B)匹配。设置时间偏差范围[t1,t2]=[-500,500],步长t3=10 s。取所选线路中某1条线路上1辆车的时刻表数据和所有刷卡数据,采用时间相似度算法式(3)和式(5),进行车辆和刷卡设备的逐一匹配,找到估计数据线路编号Bus_m和刷卡数据线路编号Card_m的对应关系,再根据时间相似度算法匹配计算同1条线路下车辆编号Bus_i和Card_i的对应关系,初步找到对应关系后使用时间平均偏差法式(6)~(7)进行关系验证。根据实际计算条件采用普通电脑,上述参数下2条轨迹与5 413辆车的刷卡数据进行相似度曲线数据计算总耗时95.81 s,平均每次计算耗时约为0.017 7 s。通过对各条轨迹线路进行循环匹配,获取了对应的刷卡线路编号和刷卡车辆编号。进一步通过另外2 d的数据对对应关系进行验证性计算,结果一致。匹配统计结果见表4,对识别出具体线路的轨迹达到了100%的识别率。 表4 GPS轨迹数据与IC卡数据匹配结果统计Tab.4 Statistics of matching results between GPS track data and IC data 根据以上方法求出刷卡数据Data_B对应的实际线路,进行时间修正后可以根据对应的Data_A轨迹数据时间所在经纬度,通过经纬度可以获取具体的线路站点位置,从而获得刷卡数据的线路、站点名、方向等信息。 以上车辆及设备编号为数据库内部编号,无法通过实际调研来验证算法的可靠性和准确性。本研究以IC卡数据、GPS轨迹数据、站点位置数据中线路、车辆、时间相互对应的广西南宁市2018年12月1日全天16条线路进行算法验证,其中包括350个设备的IC卡数据、359个设备的GPS轨迹数据、全市线路站点及坐标数据。 采用本数据融合算法,对以上数据进行融合计算,获得的结果与实际对应关系进行对比,获得算法的匹配度。 1)GPS数据(Data_A)与公交线路(Data_C)匹配验证。对案例中的每辆车轨迹和对应的实际公交线路按照坐标位置进行线路匹配并绘图,359个设备的GPS轨迹数据中可计算出357条对应线路,未匹配出线路的2个设备记录数据异常,超出市区范围。与数据库中已知对应线路进行对比,有357个设备与实际线路完全相同。结果显示,当设备轨迹记录正常时,本算法具有100%准确性。 2)轨迹数据公交站点停靠时间判断验证。通过算法获取357个设备记录的GPS数据与实际站点的运行时刻表,获得349个设备的有效运行时刻表。存在8个设备的运行时刻表数据量少于10条,无法用于后续计算。 得出的停靠时间对应的坐标,与实际线路上站点位置进行绘图比较,符合大部分公交车辆的运行规律。对停车靠站时间与对应的修正后刷卡数据数据进行对比,发现绝大部分刷卡记录落在停车靠站时间段上,所占比例与实践相似度结果一致。 3)GPS数据(Data_A)与IC卡数据(Data_B)匹配验证。采用时间相似度法和时间平均偏差法绘制曲线,对350个设备的IC卡数据和349个设备的运行时刻表进行融合匹配计算,共获得336对具有明显特征的对应关系,并与实际对应数据对比,与真实关系完全对应。实际数据中,350个设备的IC卡中,存在6个无GPS设备对应,实验有效IC设备为344个。IC卡系统和GPS系统时间偏差实际为0,时间相似度法中平均时间偏差为11 s,时间平均偏差法中平均时间偏差为22 s,案例验证平均时间偏差为IC卡时间需要修正16.5 s。 验证案例中350辆车,获得336对对应关系,融合算法验证效率为96%;考虑实际情况,只有344辆车存在实际对应关系,则算法准确率为97.67%。 根据公交车GPS数据和IC卡数据的时空特性,对无直接关联的2个数据进行关联计算,方法具有以下特点。 1)采用时间相似度算法快速匹配、时间平均偏差算法进行关系验证,多天数据进行关系固定,可以解决公交GPS与IC卡数据分离无法直接关联的问题。 2)采用可修正步进时间修正遍历算法,可对不在同一时间轴,且具有大时间偏差的GPS数据和IC卡数据进行快速分析,可以节约大量计算耗时。 3)采用低耗时的时间相似度算法寻找对应关系,利用对运行时刻表精度要求低的时间平均偏差算法进行关系验证,结合多天的数据,可以高精度的确定二者关系。 国内外公交系统中GPS和IC卡不是1个系统的情况大量存在,给上下车站点判断造成了很大的困难,通过数据融合计算,可以高精度的实现关系匹配,为原本难以应用的数据提供了有效的处理方法,可以推进公交大数据更加广泛的应用。但限于轨迹数据的精确度和上车时间判断的模糊性,无法实现完全的关系识别判断;在进行时间纠偏时,采用了修正遍历计算法,增加了计算量,对于超大规模城市的公交数据匹配计算,时间成本较大。另外,本算法假设前提为乘客在已知固定站点上车,对于某些运行不规范的线路,计算参数设置还需要更深一步的研究。2.2 公交运行时刻表判断
2.3 刷卡数据时间修正与GPS数据关联分析
3 算法试验
4 算法验证
5 结束语