站点位置缺失的公交客流OD估计方法及应用
2019-05-13邓一凌1严亚丹2兵34
邓一凌1,严亚丹2,韩 兵34
(1.浙江工业大学 建筑工程学院,浙江 杭州 310023;2.郑州大学 土木工程学院,河南 郑州 450001;3.南京大学建筑与城市规划学院,江苏 南京 210093;4.苏州规划设计研究院股份有限公司,江苏 苏州 215006)
优先发展公共交通是缓解交通拥堵、改善民生和促进社会公平的有效途径。基于可靠的公交数据,开展公交规划设计和运营管理对构建便捷、可靠、舒适的公共交通系统至关重要。以往公交数据的获取需要通过跟车调查、驻站调查等人工调查方法,存在耗时耗力、样本量小、难以更新的问题。信息技术的发展使得自动收费(AFC)、自动车辆定位(AVL)、自动乘客计数(APC)等自动数据采集系统(ADCS)在公共交通中应用越来越多,也使得公交数据变得非常丰富且容易获取。目前已有一些研究将这些数据用于分析乘客的出行行为、优化公交服务、制定更加精细的运行时刻表等[1-3]。
利用ADCS产生的公交数据估计公交客流OD是开展上述工作的前提。国内外的研究通常以AFC数据为基础,融合AVL数据、APC数据、公交车运行时刻表数据、公交线路和站点的位置信息,使用基于规则的方法来估计上下车站点,生成公交客流OD。AFC数据通常包含卡ID、卡类型、刷卡时间、刷卡车辆ID、消费金额,部分还会记录司机ID、线路ID、上车站点ID、下车站点ID。估计公交客流OD时,根据AFC数据中是否记录上下车站点,分为3种情况:第1种是记录上车站点和下车站点的情况,这时可以直接得到公交客流OD,比如Jang对韩国首尔公交系统的研究[4];第2种是记录上车站点、不记录下车站点的情况,通常采用公交出行链规则估计下车站点,进而得到公交客流OD,比如Trépanier等对加拿大加蒂诺公交系统的研究中就使用公交出行链规则推断出了66%的公交出行的下车站点[5],国内的研究和应用也多为这种情况[6];第3种是不记录上车站点和下车站点的情况,这时就需要用到公交车运行时刻表数据,比如Cui等利用公交车运行时刻表中记录的首末站到离站时间,结合公交站点的地理位置来估计公交车经过每一个中途站的时间,并利用从AFC数据中提取出的换乘信息进行修正,通过匹配车辆到站时间和乘客刷卡时间推断上车站点,再利用公交出行链规则估计下车站点[7],国内的一些研究也采用了类似的方法,并对局部进行了优化[8-10]。在上述国内外研究中,公交站点位置信息是必不可少的输入条件,然而在国内实际的项目实践中,往往存在公交站点位置信息缺失的情况。中小城市的公交企业和政府主管部门普遍没有现成的较高精度的公交站点位置数据。一些大城市尽管建立了包含公交系统在内的城市地理信息平台,但也存在部分公交线路缺失的问题,特别是城乡公交线路。另外,客流变化、极端天气、道路施工等造成的公交线路和站点的调整也无法在城市地理信息平台中得到及时的反馈。这对公交客流OD分析带来了很大的困难。针对公交站点位置信息缺失的情况,笔者提出利用AFC和AVL数据自动识别公交站点位置进而估计公交客流OD的方法,并在深圳市公交系统中进行应用。最后利用深圳市公交客流OD数据,设计并开发了公交规划支持系统。
1 站点位置缺失的公交客流OD估计方法
1.1 公交站点识别与上车站点推断
由于AFC数据是公交车停靠站点时乘客上车刷卡产生的,因此乘客每一次刷卡时公交车所在的位置就是对公交站点的一次推断。公交站点识别分为两步:首先计算每次乘客上车刷卡时公交车的位置,其次分公交线路将公交车的位置进行时间和空间聚类得到公交站点。识别出公交站点后,乘客的上车站点也随之产生。
AFC数据包含以下字段(card_id,route_id,bus_id,time),其中card_id为卡ID,route_id为公交线路ID,bus_id为公交车辆ID,time为刷卡时间。AVL数据包含以下字段(route_id,bus_id,gps_time,gps_loc),其中gps_time为gps记录时间,gps_loc为gps坐标。首先计算每次乘客上车刷卡时公交车所处的位置。
步骤1逐条遍历AFC数据,对每一条AFC数据,以刷卡时间time为基准,从对应公交车辆的AVL数据中选择gps_time分别早于和晚于刷卡时间且均最接近刷卡时间的两条记录。以相差时间的绝对值|gps_time-time|为权重,对筛选出的两条AVL数据中gps_loc进行加权平均得到乘客上车刷卡时公交车所处位置坐标board_loc。将两个相差时间绝对值的调和平均作为board_loc的置信度p,p越大,board_loc的可靠性越高。
如果将同一公交线路的全部AFC数据按照board_loc直接进行空间聚类,一方面很多p较小的board_loc会对聚类结果产生干扰;另一方面AFC数据较多,聚类效率很低。因此,采用两步聚类的方法,先基于刷卡时间归并AFC数据形成AFC数据组,再对AFC数据组进行空间聚类。
步骤2根据规范,同一公交线路相邻站点间距一般不小于300 m,公交车辆平均运行速度一般在12~15 km/h,因而两相邻公交站点间的运行时间极少小于60 s。将每辆公交车的AFC数据按照刷卡时间进行排序后,如果前后两条AFC数据的时间间隔小于60 s,将后一条与前一条标记为同一组;反之,则标记为新的一组。对于每一组AFC数据,从中选取p最大的board_loc作为该组AFC数据的board_loc。时间聚类后,每组AFC数据仅用1 条记录表示,包含以下字段(route_id,bus_id,board_loc,p)。
空间聚类主要有5 类方法,分别为基于分层、划分、密度、网格或模型的聚类。由于AVL数据中错误的gps_loc会造成由此计算的board_loc错误,影响聚类结果,因此选取的空间聚类方法需要能够区分噪声数据。由于事先并不知道公交线路有多少站点,因此一些需要提供期望的类簇个数作为聚类参数的方法并不适用。从噪声数据和参数需求两方面考虑,选择基于密度的聚类方法。常见的基于密度的聚类算法有DBSCAN,OPTICS,DENCLUE,考虑到计算量较大,选择最为高效的DBSCAN算法。DBSCAN算法包含两个全局参数,分别是半径ε和最小点数MinPts。如果一个点在以该点为中心、ε为半径的圆形邻域范围内被不少于MinPts个点围绕,则该点被称为中心点。如果一个点少于MinPts个点围绕但该点在某一中心点的圆形邻域范围内,则该点被称为边缘点。如果一个点既非中心点,也非边缘点,则被称为噪声点。一系列距离不超过ε的中心点和与它们相关联的边缘点组合成的高密度区域被定义为类簇,其中点与点之间的距离采用欧式距离[11]。DBSCAN算法本质是寻找类簇并扩展类簇。对任意点p,若其是核心点,则以p为中心,ε为半径的邻域内的点可以形成一个类簇;遍历类簇中的其他点,若有点q是核心点,则以q为中心,ε为半径的邻域内的点也划入类簇,递归直到类簇不能再扩展。
步骤3以同一公交线路所含公交车辆的全部AFC数据组的board_loc为输入变量,采用DBSCAN算法进行空间聚类,得到的类簇即为该公交线路的全部公交站点。生成的公交站点位置数据包含以下字段(route_id,stop_id,stop_loc),其中stop_id为站点编号,stop_loc为站点坐标。在公交站点识别完成后,全部AFC数据的上车站点坐标board_loc也随之更新为相应的stop_loc。
1.2 下车站点推断
下车站点的估计首先采用个人公交出行链规则。即当个人一天有两次或以上的公交出行时,其公交出行具有连续特征:即前一次出行的下车站点临近后一次出行的上车站点,最后一次出行的下车站点临近第一次出行的上车站点。也就是说,个人在两次公交出行之间很少夹杂步行外的出行方式。Barry等使用纽约市居民出行调查数据对公交出行链规则进行了检验,发现该规则对于90%的公交出行都是成立的[12]。
步骤4将包含上车站点的AFC数据(card_id,route_id,bus_id,time,board_loc),依次按照card_id和time进行排序。以每张card_id每天的刷卡记录为一组进行计算。如果该卡该天刷卡记录为2 次及以上,从前一次出行(或最后一次出行)所乘坐的公交线路的公交站点集中找出距离后一次出行(或第一次出行)上车站点最近的公交站点。如果两站点直线距离小于1 km(预计步行约12 min),则个人出行链规则成立,将该公交站点作为前一次出行(或最后一次出行)的下车站点alight_loc,增加到AFC数据中。如果个人出行链规则不成立,则alight_loc为空值。
对于工作日alight_loc为空值的AFC数据,接着采用个人公交出行规律性规则。通常个人在不同工作日的出行存在规律性。即如果个人在不同工作日的相近时间在相同站点乘坐相同公交线路,则认为其下车站点也相同。因此可以用某一工作日已知下车站点的刷卡记录估计另一工作日出行特征相似的但未知下车站点刷卡记录。
步骤5逐一遍历所有alight_loc为空值的AFC数据,从个人其他工作日alight_loc值非空的刷卡记录中寻找乘坐相同公交线路、在相同公交站点上车且出行时间相差1 h内的刷卡记录,将其下车站点作为alight_loc为空值的出行记录的下车站点。
对于alight_loc仍然为空值的AFC数据,采用公交线路客流分布规律性规则。即总体上认为这些alight_loc仍然为空值的刷卡记录所呈现的所有公交线路客流分布特征应与之前alight_loc已知的刷卡记录所呈现的客流分布特征一致。
步骤6基于所有alight_loc已知的AFC数据,获取乘客在任一公交线路的任一站点上车后,在该公交线路剩余站点下车的概率,针对每一条公交线路分别生成一个站点OD分布的概率矩阵POD。基于这一矩阵,逐一遍历所有alight_loc为空值的AFC数据,根据公交线路选择想应的概率矩阵,根据上车站点选择相应的行,基于该行中下车站点的概率分布,采用蒙特卡洛方法预测下车站点alight_loc。
2 深圳市公交客流OD估计及规划应用
2.1 深圳市公交客流OD估计
将上述方法应用于深圳市公交客流OD的估计。深圳市公交系统数据包含2014年9月1日—9日间500 条公交线路共8 471 辆公交车产生的57 901 062 条AVL数据,4 028 595 张公交卡产生的20 036 593 条AFC数据。AFC数据包括卡ID、交易时间、车辆ID。AVL数据包括车辆ID、线路ID、记录时间、经纬度。公交卡日均刷卡次数为0.55 次。在当天有刷卡记录的公交卡中,1 次刷卡的占52.3%,2 次刷卡的占35.5%,3 次刷卡的占7.5%,4 次及以上刷卡的占4.7%。公交车位置记录的时间间隔均值为57 s,中位数为20 s。由于有公交车长时间休息或停运等情况,均值接近中位数的3 倍。对AFC数据进行清理。从AFC数据中筛选出个人连续两次刷卡时间不足10 min且公交车辆ID相同的刷卡数据,这些数据可能是AFC系统错误或者是持卡人的代刷行为导致的数据重复,仅保留前一次的刷卡记录。
使用R语言对论文提出的方法进行编程实现。深圳市公交系统无论是线网规模还是客运量都要远高于绝大多数的国外城市,因此在程序设计中需要优化程序和算法以减少计算资源并缩短计算时间。首先采用R语言中的向量化计算代替循环,向量化计算作为特殊的并行计算方式,运算效率更高。其次使用data.table,dplyr等R语言包进行数据的清理、排序、连接、变形、统计等,这些包中的函数一般采用C或C++实现,运算效率更高。
使用DBSCAN算法识别公交站点时需要确定参数ε和MinPts的取值。从实际意义上来说,ε为能标记为同一公交站点的相邻AFC数据组之间的最大距离,MinPts为标记为中心点的AFC数据组的圆形邻域范围内最少的AFC数据组数。ε越大、MinPts越小,公交站点个数越少,同一公交站点的AFC数据组越多。参数的取值首先根据经验确定范围,ε在70~130 m范围内以10 m为步长取值,MinPts在40~100 个范围内以10为步长取值,在500 条公交线路中选择10 条已知公交站点数量的线路,分别计算相应参数取值下DBSCAN算法计算出的公交站点数量。采用K-S检验的方法对公交站点数量的真实值和预测值进行比较,检验结果D值如表1所示。D值越小,预测值和真实值的分布越类似。因此从中选择ε=90 m,MinPts=80 个作为最优的参数取值,将10 条公交线路的公交站点的预测值和真实值的对比,如图1所示,平均误差为8%。采用上述参数取值对500 条公交线路的AFC数据组进行DBSCAN空间聚类得到公交站点。
表1 站点个数预测值和真实值的K-S检验Table 1 K-S tests between estimated and real numbers of stops
图1 ε=90, MinPts=80时站点个数预测值和真实值Fig.1 Estimated and real numbers of stops when ε=90 and MinPts=80
对500 条公交线路所包含的公交站点进行识别后,可以得到所有公交出行的上车站点。接着再估计公交出行的下车站点,其中39.1%的公交出行可以用个人公交出行链规则估计下车站点,23.7%的公交出行需要使用个人公交出行规律性规则估计下车站点,剩余37.2%的公交出行则需要使用公交线路客流分布规律性规则估计下车站点。由于AFC数据中并不包含地铁刷卡的记录,因此个人公交出行链规则适用的概率降低,更多的公交出行需要用公交线路客流分布规律性规则估计下车站点。
2.2 基于公交客流OD的深圳市公交规划支持系统
传统的公交线路规划与运营管理依赖管理者的个人经验,在线路较少的发展初期能够起到良好的效果。随着城市规模的日益增大,公交线路、站点不断扩张,公交系统结构日趋复杂,经验型的规划与管理很难满足现阶段大多数城市公交发展的要求。基于公交客流OD,AVL,AFC等数据,开发了公交规划支持系统,辅助公交企业对公交线路的规划与公交运营的管理,以提升公交服务水平,改善企业运营效益,促进城市交通的可持续发展。该系统为web应用程序,使用R与shiny开发,部署于linux服务器上,可以使用浏览器直接访问,也支持跨平台应用。系统包括4 个模块。公交线路模块实现了站点数量、客运量、线路长度、线路非直线系数、配车数、发车间隔、车公里载客量、平均运距、行程时间、高峰小时系数等核心指标呈现,线路走向、站点上下客量、车辆运行图的动态展示,如图2(a)所示。可以从中发现重叠严重、绕行过多、效益不佳、运速低的问题线路,延误大、不准点的问题站点,在进行公交线路优化时可以重点关注。公交站点模块展示了公交站点和上下车人数的空间分布状况,如图2(b)所示。可以从中发现缺乏公交覆盖、公交需求与供给错配等区域,在进行公交线路的新增、删除时可以重点关注。公交客流OD模块呈现了公交客流OD的空间分布状况,并且可以根据联系强度进行筛选,如图2(c)所示。可用于判识公交客流走廊,设计公交骨干线或定制公交线,优化公交线网组织。公交可达性模块可以基于用户选择的分析地点和缓冲区半径,动态展示从该地点出发,公交系统能够覆盖的区域,如图2(d)所示。可用于重点区域的分析,比如新建的商业区、低收入的居住区等需要公交重点服务的区域。通过综合运用这些模块,可以找出常规公交运行效率低、可靠性差等问题的症结所在,应对城市空间结构调整、地铁引入等对常规公交带来的机遇和挑战。
图2 公交规划支持系统截图Fig.2 Snapshot of bus planning support system
3 结 论
高质量的公交客流OD数据是开展公交系统分析的基础。笔者对公交站点位置信息缺失情景下的公交客流OD估计方法进行了研究,并在深圳市进行了应用。开发了公交规划化支持系统,能用于辅助公交规划师进行公交系统的优化,促进公交规划与管理从经验为主的决策向数据为主的决策转变。论文使用的代码和开发的系统都已开源,可以较为容易地移植到其他城市。受到数据的制约,目前公交规划支持系统所使用的数据以公交客流OD等公交系统内部数据为主,未来可以更多地考虑公交系统以外的数据,比如街区或交通小区等微观尺度的居住人口、就业岗位、人口发展趋势、贫困人口分布等。结合内外部数据对公交进行分析,使公交规划师能够从公交所处的背景环境来思考公交系统的发展,更好地优化资源配置、改善运营效益、提升公交服务水平。
本文得到浙江工业大学校级教学改革项目(JG201816)和浙江工业大学研究生教学改革项目(2018105)的资助。
致谢:论文所使用的数据来源于2015年国际摄影测量与遥感学会(ISPRS)科学倡议数据公开大赛,在此表示感谢!