基于卡口车辆识别数据的车辆路径识别

2020-09-08 08:30张清华
交通工程 2020年4期
关键词:卡口路网阈值

张清华

(湖北省城市规划设计研究院有限责任公司, 武汉 430071)

0 引言

车辆出行路径信息含车辆出行起点、途径的路段及节点、出行终点等,结合出行时间信息,还原车辆出行路径,能获取丰富的交通时间序列信息. 车辆路径数据在现实情况下较难提取,传统调查手段诸如人工记录车辆牌照法等费时费力,抽样率低. 车辆GPS数据可分析车辆出行,可生成车辆出行路径,但因私人车辆GPS数据涉及隐私,不易获取及使用. 手机定位数据采样率高,但获取成本高,对出行方式及出行路径的判定为间接推算,实际应用壁垒较高.

目前,以智能卡口、路况监控等功能为主的交通卡口视频监控设施在国内城市普遍设置,每天生成海量车牌照信息. 除了利用车牌照数据进行车速测量、违章处罚[1]等外,融合车牌、车型、位置、时间等的车牌照数据,还可获取车辆出行OD[2]、行程时间和延误[3]等传统道路交通指标,甚至可推导传统交通调查手段较难以全样获取的毗邻区域交通量[4]、出行轨迹[5]、通勤交通[6]等指标. 本文基于OSM、Python、VBA等搭建了一种简易的车辆识别数据分析方法,利用仙桃市城区数据,获取了车辆出行路径,为后续识别车辆OD、路段流量统计、路段旅行时间分析等提供技术支持.

1 现有研究

1.1 车辆出行行为

基于机动车出行被连续检测的条件可认为:车辆在1次完整的出行中,下一卡口识别点往往是上一卡口识别点的下游节点,且在当次出行中的最后一个卡口识别点为当次出行的终点.

如图1所示,基于车辆连续出行的前提,结合仙桃市卡口车牌识别数据中存在多次出行记录的车辆记录,可将车辆出行行为概括为2种形式:

1)单次出行无中断:在一次出行中,驾驶人在设置卡口的节点Ai被识别记录,Ai即为本次机动车出行的起点O1,经连续行驶,最终在Dk被卡口结束本次出行,Dk即为本次机动车出行的终点D1.

2)多次出行:通常情况下,车辆出行链包含了车辆在1 d之内的所有出行,即在多个OD对之间发生了出行行为. 在图示2次出行中,驾驶人在设置卡口的节点Ai被识别记录,Ai即为本次机动车出行的起点O1,经连续行驶,最终在Cj卡口结束第1次本次出行,Cj即为本次机动车出行的终点D1;经过一段较长时间的停顿或中断,Cj节点再次检测到同一车辆的记录,此处的Cj节点即为下一次出行的起点O2,经连续行驶,最终在Dk被卡口结束出行,Dk即为下一次机动车出行的终点D2.

图1 典型车辆出行行为(左:单次出行,右:多次出行)

1.2 既有研究

高速公路采用加密路段视频卡口检测设备,以密度换准确率,解决车辆路径识别计算难题,虽城市路网及居民机动车出行条件较高速公路车辆出行更为复杂,且卡口设备布设存在一定的稀疏性,但基于机动车连续性出行及出行时间较短的特性,仍能识别驾驶人出行路径,具体需解决卡口间路径推算及出行链打断判断2个难点.

城市卡口主要沿城区出入口、干路节点等布设,在实际布设中未考虑路径推算需求. 在不同卡口间距不等前提下,需考虑路径选择模型,以便对相邻卡口间车辆行驶路径进行还原. 车辆出行链包含了车辆在1 d之内的所有出行,即在多个OD对之间发生了出行行为. 将1辆车辆被卡口识别记录的数据按时间排序后,可得到其全天的出行记录. 因大部分车辆每天的出行链都包括多次出行,即存在多个OD对,为此需要对车辆出行链进行划分.

王蓓[4]仅处理卡口间序列,建立卡口上下游子序列,不考虑卡口间具体路径选择,再建立车辆出行距离与出行时距判断条件用以识别出行链阈值. 王龙飞[5]利用栈式存储结构结合图论中深度优先搜索算法,获得卡口间1次可达路径,而后,采用有效行驶速度区间[15 km/h,60 km/h]计算旅行时间阈值. 龚越[6]采用最短路径进行路径识别,之后同样采用卡口间时间阈值条件识别出行链.

路径选择涉及图论寻优算法,对普通规划设计人员能力要求较高,因此最短路径应用最广,但需具备相应的编程能力. 同时,卡口间旅行时间既受到平均车速影响,又需考虑中途停车、加油、事故等因素. 此外,卡口间距离越短,其旅行时间阈值相应越小,单一选取车速或固定的时间阈值均有一定缺陷.

2 基础方法

2.1 整体思路

基于既有研究提出了一种实用的卡口车辆识别数据处理、车辆路径及出行链推算的方法,见图2.

图2 技术流程图

1)对原始车辆牌照数据进行预处理后,获得所有车辆按时间进行排序的车辆基础序列记录表.

2)将卡口信息表投影至OSM地图,获取卡口间实际距离矩阵,并经计算转换出卡口间旅行时间阈值矩阵.

3)基于车辆多次出行的连续性条件,采用旅行时间阀值条件匹配算法将车辆全部卡口识别数据打断,获取出行链表.

4)利用获得的出行链表,开展车牌识别数据应用分析.

2.2 关键技术

1)卡口间路径及旅行时间矩阵

卡口间路径计算类似于导航的简单应用,要实现这一功能,需要构建道路网络,能计算道路长度、求取最短路径和规划路线等,通常依赖地图公司提供的LBS接口,而此类接口对调取次数有限制.

networkx是一款用于复杂网络分析Python第3方包, OSMnx依赖networkx等开发分析OSM路网的另一款Python第3方包,OSMnx配合networkx,可实现调取现状机动车路网、卡口投影、最短路径计算等功能,使交通规划设计人员专注数据分析本身.

结合Song[8]的研究,基于OSM开源路网,利用Python第3方库既可方便的调取卡口间最短路径,亦可获得卡口间路网距离矩阵,计算思路如下:

①在Python3.x中加载OSMnx,并下载指定区域机动车路网,读取卡口信息表,并投影至OSM路网中最近的节点.

②加载networkx,基于OSM机动车路网,批量计算指定节点间最短路径长度(亦可获得卡口间最短路径信息).

③解码指定节点距离矩阵获取卡口间路网距离矩阵(对异常数据对,用欧式距离乘计算系数补齐).

2)卡口间旅行时间阈值矩阵

经预处理后的卡口车牌识别数据序列中,同一车牌全部的记录均按时间排序,仅需将后一记录与前次记录的时刻相减,即可获得同一车辆通过前后两卡口的旅行时间. 对存在多次出行的车辆,一个可行的出行链打断方式是设定旅行时间阈值,当车辆通过卡口间的旅行时间超过阈值,即对出行链进行打断.

获取了卡口间路网距离矩阵,下一步需将其转换为旅行时间阈值矩阵. 参考前述研究,卡口间旅行时间既受到平均车速影响,又需考虑中途停车、加油、事故等因素. 此外,卡口间距离越短,其旅行时间阈值相应越小,单一选取车速或固定的时间阈值均有一定缺陷. 为此,本文提出一种综合考虑最小车速、距离及中途延误等因素的卡口间旅行时间阈值计算算法,设定最小行程车速10 km/h,计算获得最小车速行程时间. 而后,引入里程延误,包括路口延误及路段延误,其中路段延误设定为每1 km里程行程时间增加180 s,路口延误取固定值500 s,最终综合最小车速行程时间、路口延误及路段延误等因素设计计算公式,且设定最大旅行时间阈值为2 100 s.

T=500+L180+3 600L/V;T≤2 100

(1)

式中,T为旅行时间阈值/s. 当计算数值超过2 100 s(35 min)时,旅行时间阈值取2 100 s,否则,取计算值;L为卡口间路网实际距离/km;V为车辆最小行程车速/km·h-1,本文设定为10 km/h.

3)生成车辆出行链

车辆出行链的打断对于分析车辆OD及研究路网上、下游流量链路来源等具有重要的作用,确定同一车辆上、下2个卡口记录间有效的旅行时间阈值,是出行链打断的关键. 基础序列记录表中包含车辆通过卡口的时刻,同一车辆上、下2个卡口过车数据的差值为实际记录的旅行时间t,再利用本文提出的卡口间旅行时间阈值计算出相邻卡口间合理的旅行时间阈值T,并比较t与T值,即可完成车辆出行链的打断. 图3为详细流程图,具体算法如下:

Setp1:导入基础序列记录表,读取第1条记录,并标记i=1;

Setp2:记录读取车牌=A车辆总记录数M,读取第k=1条出行记录,其中M在前述基础序列出行表中已进行了计算标记,此处仅需读取即可;

Setp3:读取车牌=A车辆下一次出行记录;

Setp4:判断i+k-1≤M-1,遍历车牌=A车辆记录,当读取的记录个数不到最后一行时,进入步骤5,否则表示车牌=A车辆记录全部计算完全,i=i+M,M=0,返回读取下一车牌记录;

Setp5:计算当前车辆当前卡口出行时刻与同一车辆下一相邻出行时刻的旅行时间差值t,调取当前卡口与下一相邻卡口间综合考虑最小车速、距离及中途延误等因素后的卡口间旅行时间阈值T;

Setp6:比较t与T,当t

Setp7:判定是否至倒数第2条记录,不满足转至Setp3,满足则存储车辆出行信息,并结束程序.

图3 车辆出行链划分流程图

3 实例

3.1 基础数据

本研究原始数据包括2个重要的数据表:过车信息数据表,由仙桃市交警支队提供(2019-03-02全天记录)和卡口信息表.

过车信息数据表记录了各车辆被城区卡口识别的详细信息,由车牌号码、路口名称、车道、方向、车牌类型、时刻、车速、车牌颜色等多达14个字段组成,核心字段包括车牌号码、路口名称、方向、时刻等.

卡口信息表记录各卡口类别、卡口名称及地理位置坐标信息,核心字段包括各卡口点位名称、经度、纬度等. 卡口点位信息表同过车信息数据表经字段匹配,过车信息数据成为具有时刻信息及地理位置信息的空间数据,这对后续计算车辆出行链尤为关键. 仙桃市主城区卡口点位分布情况见图4.

图4 卡口点位分布图

3.2 数据预处理

受设备故障、识别精度误差、环境干扰等因素影响,卡口过车数据需进行预处理,提高基础数据质量,具体包括:

1)未识别数据清洗

原始过车信息表内车牌号码字段存在一定丢失情形,无法进行出行链匹配,需删除此类无效数据.

2)重复数据清洗

道路拥堵及其他未知因素可造成同一车辆在短时间内的重复记录,也需进行清理:

①按照车牌号码、时刻对去除未识别数据后的过车信息表进行排序;

②对存在2条以上记录的同一车辆,计算每一条数据与前一条数据的时间差;

③借鉴王握[9]研究,对时间差<300 s,且车牌号码、路口名称、方向等信息相同的记录,予以去重.

3)车辆信息数据重排序

汇集各车辆当天全部过车信息数据,统计其总出现次数,按时间排序后标记次序,并删去仅包含一次记录的数据,保留包含2次及2次以上记录的数据,生成如表1所示车辆基础序列记录表,作为后续车辆出行链分析的基础数据表.

表1 车辆基础序列记录表

3.3 卡口间距离及旅行时间阈值

采用2.2节方法,首先调取python第3库OSMnx及networkx,批量调用single_source_dijkstra_path_length函数获得卡口间路网距离矩阵,表2为以行列式形式展示的路网距离矩阵.

表2 路网距离矩阵行列式

实例中获取的卡口样本数量少且均位于城市关键出入口及主要干路,卡口节点均可方便匹配OSM路网并获取任意两卡口间路网距离及最短路径. 对其他城市而言,考虑路网节点差异或数据集较大的情形,可能存在部分异常的距离值(过大或过小),需要再做一些处理来对这些异常值进行处理.

本文计算了仙桃城区卡口间实际路网距离和直线距离,并统计路网距离与直线距离比值. 见图5,当路网距离在2 km以内时,路网距离与直线距离比值波动最大,超过2 km以后,比值系数为1.10~1.42,因此,对于可能存在的异常数据,推荐采用欧式距离乘1.4(平均直线系数)补齐异常距离数据.

为将路网距离矩阵转换为旅行时间阈值矩阵,提出一种综合考虑最小车速、距离及中途延误等因素的卡口间旅行时间阈值计算算法,结合出行链打断算法,利用VBA编程,即可获得车辆出行链及车辆出行路径信息. 表3截取了部分计算数据,其中鄂AM****车牌全天被卡口识别9次,利用出行链打断算法获得4条出行链,对应4次出行,各次出行的完整出行节点对及上下游节点对均被提取出来,并对下游节点的异常时刻进行了修正. 车辆出行链表作为基础信息表,通过算法处理,可进一步获取车辆出行OD、路段及节点流量、路段旅行时间等时空数据,图6即为提取车辆全部出行链并扩样后的卡口间OD分布图.

图5 卡口间路网距离与路网直线系数分布

表3 车辆出行链表

4 总结

卡口车牌识别数据在推算车辆出行路径方面具有其他数据无法比拟的优势,但其中涉及空间数据匹配及图论中的路径计算算法等,存在一定的技术难度. 采用python、VBA联合编程手段,首先调取python第3库OSMnx及networkx,采用属性查询方式直接获得卡口间路网距离矩阵并计算卡口间旅行时间阈值矩阵,简单直观且无调取次数限制. 其次,利用VBA编写脚本,采用本文提出的卡口间旅行时间阈值计算及出行链打断算法,快速识别车辆出行路径. 相较于传统的通过人工抽样调查推算车辆OD或构建交通模型模拟车辆路径而言,提供一种更加经济、快速、简便的车辆路径识别方法.

图6 卡口间OD分布

猜你喜欢
卡口路网阈值
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于CS-TWR的动态阈值贪婪算法成像研究
L卡口“马拉松”联盟的前世今生
基于自适应阈值和连通域的隧道裂缝提取
打着“飞的”去上班 城市空中交通路网还有多远
省际路网联动机制的锦囊妙计
首都路网 不堪其重——2016年重大节假日高速公路免通期的北京路网运行状况
路网标志该如何指路?
基于迟滞比较器的双阈值稳压供电控制电路
高速公路车道高清卡口系统实施方案