一种基于Flink的交通协调通行参数计算方法与流程
- 国知局
- 2024-07-31 21:02:36
本发明属于智能交通控制系统领域,具体涉及一种基于flink的交通协调通行参数计算方法。
背景技术:
1、随着物联网、移动互联网和城市智能交通系统的快速发展,交通数据量大大提升,进入了大数据时代。交通数据中包含大量有价值的数据,这些数据对智能交通行业的发展起到了巨大的推动作用。传统数据分析系统受资源的限制,运算效率低下,已无法满足大数据处理的需求。
技术实现思路
1、本发明所要解决的技术问题是针对现有技术的不足,提供一种设计合理,运算效率高,能实时挖掘数据中存在的价值的基于flink的交通协调通行参数计算方法。该方法具有利用海量卡口过车数据实时统计线路通行参数的功能,为城市智能交通提供运行状态、线路协调配时评价等重要信息。
2、为了实现上述目的,本发明采用了如下技术方案:
3、一种基于flink的交通协调通行参数计算引擎,其特点是,该方法基于flink流式处理引擎,在该引擎上运行车辆线路统计模块、车辆线路扩展统计模块、线路通行参数统计模块、线路通行参数扩展统计模块;
4、车辆线路统计模块,向线路通行参数统计模块输出车辆线路的线路编号、旅行时间、开始时间、结束时间、车牌号、车牌颜色、经过的卡口编号、交叉口编号、经过卡口的时间;
5、线路通行参数统计模块,对车辆线路统计模块提供的上述参数进行统计分析,输出线路编号、线路统计的开始时间、结束时间、平均旅行时间、平均速度、延误、流量、起始卡口编号、终点卡口编号、起始交叉口编号、终点交叉口编号;
6、车辆线路扩展统计模块,向线路通行参数扩展统计模块输出车辆线路的线路编号、旅行时间、开始时间、结束时间、车牌号、车牌颜色、经过的卡口编号、交叉口编号、经过卡口的时间,以及在每个交叉口是否停车;
7、线路通行参数扩展统计模块,对车辆线路扩展统计模块提供的上述参数进行统计分析,输出线路编号、线路统计的开始时间、结束时间、平均停车次数、协调流量,
8、通过flink流式处理引擎对上述车辆线路的数据进行统计分析,得到线路通行参数,将线路通行参数提供给用户或其他系统进行决策分析,以实现交通协调。
9、上述所有模块均是基于flink流式处理引擎进行开发的,假设所有设备和服务器具有统一的校时源,采用eventtime作为flink内部时间;
10、flink接收卡口过车记录产生原始卡口过车数据流,将过车时间作为事件时间,水位线为过车时间-x秒(x可以根据数据的延迟修改)。
11、flink接收灯态数据产生原始灯态数据流,将灯态时间作为事件时间,水位线为灯态时间-x秒(x可以根据数据的延迟修改)。
12、本发明所要解决的技术问题还可以通过以下技术方案实现,该方法为,利用flink流式处理引擎,对于估算的时间范围内的所有卡口过车数据,按照连续经过线路配置表中的线路,每隔一段时间进行车辆统计,结合信号机灯态数据,输出车辆通过线路上交叉口的时间和空间参数,根据车辆通行的时间和空间参数统计线路的通行参数,将统计到的线路通行参数提供给用户或其他系统进行决策分析,以实现交通协调。上述线路配置表按照线路规划进行人工配置。
13、本发明所要解决的技术问题还可以通过以下技术方案实现,在所述连续经过线路配置表中保存有所有需要flink计算的线路数据,
14、该线路数据包括线路编号、路段长度列表(编号以自定义符号分割)、线路自由流时间、路段自由流时间列表(编号以自定义符号分割)、路段上的交叉口列表(编号以自定义符号分割)、上行方向路线上的卡口编号列表(不同交叉口的卡口列表编号以自定义符号*-分割,相同交叉口的卡口列表以#分割)、下行方向路线上的卡口编号列表(不同交叉口的卡口列表编号以自定义符号*-分割,相同交叉口的卡口列表以#分割)、上行方向路线上的相位列表(编号以自定义符号分割)、下行方向路线上的相位列表(编号以自定义符号分割)。为了方便,本发明中的自定义符号以*表示。
15、本发明所要解决的技术问题还可以通过以下技术方案实现,在所述连续经过线路配置表中,保存每一个交叉口的每一个车道和相位列表的关系,采用车道:相位=1:n的方式,这是因为某一车道可能对应多个转向,即可能对应多个相位,这种对应关系能够处理线路存在转向的情况,例如:交叉口a的西方向是交叉口b,交叉口a的北方向是交叉口c,先要同时计算线路1(交叉口a的南向东左到交叉口b的东向西,交叉口a的南向东左转协调了交叉口b的东向西)和线路2(交叉口a的南向北直行到交叉口c的南向北直行,交叉口a的南向北直行协调了交叉口c的南向北直行)的线路通行参数,如果交叉口a的南方向车道x对应南向东左转和南向北直行,这样车道:相位=1:n的表达方式可以同时计算线路1和线路2,否则会有数据丢失的情况。
16、本发明所要解决的技术问题还可以通过以下技术方案实现,车辆线路统计模块进行如下操作:
17、(1)按照车牌号和车牌颜色对原始卡口过车数据流进行分组;
18、(2)对原始卡口过车数据流滑动开窗,窗口大小为一个小时,滑动间隔为y分钟(y可配置,具体取值依赖于需要输出数据的间隔),生成有窗口的过车数据流;
19、(3)车辆线路窗口函数对有窗口的过车数据流进行如下处理:
20、步骤1:获取一辆车的卡口过车纪录列表,并按照过车记录中的过车时间升序排列,抽取其中的卡口编号,以逗号分隔生成卡口编号字符串cpstrs;
21、步骤2:遍历线路配置表中的所有线路;
22、步骤3:对于上行方向,获取线路的上行方向的线路卡口列表,线路卡口列表中保存线路上行方向上每个交叉口的卡口列表,每个交叉口的卡口列表由“#”分隔,各个交叉口的卡口列表之间以*-分隔。以线路卡口列表构造正则表达式pattern,该正则表达式表示含义如下:包含的都是卡口编号并以逗号分隔;第一个卡口必须是线路卡口列表中第一个交叉口的卡口编号,最后一个卡口必须是线路卡口列表中最后一个交叉口的卡口编号;每一个交叉口的卡口编号可能连续出现;除了第一个交叉口和最后一个交叉口的卡口编号必须出现,中间的交叉口的编号可以不出现,如果出现,那么必须按照上行方向经过交叉口的顺序出现。
23、步骤4:将正则表达式pattern和cpstrs匹配,获取每一个匹配项对应的卡口过车列表,如果卡口过车列表满足以下条件,就认为计算出了一个符合条件的车辆线路:车辆在最后一个交叉口的过车时间在最近y分钟的时间范围内,且在每一个交叉口,车辆所经过车道对应的相位列表必须包含线路在该交叉口的上行方向配置的相位号;
24、步骤5:对于下行方向,获取线路的下行方向的线路卡口列表,线路卡口列表中保存线路下行方向上每个交叉口的卡口列表,每个交叉口的卡口列表由“#”分隔,各个交叉口的卡口列表之间以*-分隔。以线路卡口列表构造正则表达式pattern,该正则表达式表示含义如下:包含的都是卡口编号并以逗号分隔;第一个卡口必须是线路卡口列表中第一个交叉口的卡口编号,最后一个卡口必须是线路卡口列表中最后一个交叉口的卡口编号;每一个交叉口的卡口编号可能连续出现;除了第一个交叉口和最后一个交叉口的卡口编号必须出现,中间的交叉口的编号可以不出现,如果出现,那么必须按照下行方向经过交叉口的顺序出现。
25、步骤6:将正则表达式pattern和cpstrs匹配,获取每一个匹配项对应的卡口过车列表,如果卡口过车列表满足以下条件,就认为计算出了一个符合条件的车辆线路:车辆在最后一个交叉口的过车时间在最近y分钟的时间范围内,且在每一个交叉口,车辆所经过车道对应的相位列表必须包含线路在该交叉口的下行方向配置的相位号;
26、(4)输出上行方向和下行方向中符合条件的车辆线路的线路编号、旅行时间、开始时间、结束时间、车牌号、车牌颜色、经过的卡口编号、交叉口编号、经过卡口的时间到流式存储,并形成车辆线路流。
27、该模块利用正则表达式进行目标线路表达可以解决线路中间卡口过车记录由于异常情况丢失的问题,也可以解决在车辆在同一交叉口出现多次的问题(被多个卡口拍到)。
28、所述线路通行参数统计模块进行如下操作:
29、(1)将车辆线路流中的结束时间作为事件时间,水位线为结束时间;
30、(2)按照线路编号和线路中第一个交叉口编号对车辆线路流进行分组;
31、(3)对车辆线路流滚动开窗(窗口大小y分钟,y可配置,具体取值依赖于需要输出数据的间隔);
32、(4)线路窗口函数对车辆线路流进行如下处理:
33、步骤1:为了排除车辆在路段上异常停车,导致通过线路时间异常,构建了动态检测模型,即,对车辆线路流中的所有线路时间进行k-medoids聚类,簇的数量k=1,经过迭代计算出簇中心,根据簇中心对线路车辆线路进行过滤,过滤条件为车辆线路的旅行时间大于线路自由流时间的一半,小于簇中心的1.5倍;
34、步骤2:计算过滤后车辆线路的平均旅行时间;
35、步骤3:根据路线的长度,计算过滤后车辆线路的平均速度
36、步骤4:如果过滤后车辆线路的平均旅行时间小于自由旅行时间,将0作为延误;否则将平均旅行时间减自由旅行时间作为延误;
37、(5)输出线路编号、线路统计的开始时间、结束时间、平均旅行时间、平均速度、平均延误、流量、起始卡口编号、终点卡口编号、起始交叉口编号、终点交叉口编号到数据库。
38、所述车辆线路扩展统计模块进行如下操作:
39、(1)将原始灯态数据流和原始卡口过车数据流分别按照时间+交叉口编号+相位编号分组后进行intervaljoin操作,下限时间为-z分钟,上限时间为z分钟(z可以根据数据的延迟修改),z的值由卡口设备的校时源和信号机设备的校时源时间的差值而定;
40、(2)通过合并函数,将卡口过车信息和灯态信息合并,输出包含相位剩余时间、相位编号、相位灯态、交叉口编号、过车时间、卡口编号、车牌号、车牌颜色的合并流;
41、(3)按照车牌号和车牌颜色对合并流进行分组;
42、(4)对合并流滑动开窗,生成有窗口的合并流(窗口大小为一个小时,滑动间隔为y分钟,y可配置,具体取值依赖于需要输出数据的间隔);
43、(5)车辆线路窗口函数对有窗口的合并流进行如下处理:
44、步骤1:获取一辆车的卡口过车纪录列表,并按照过车记录中的过车时间升序排列,抽取其中的卡口编号,以逗号分隔生成卡口编号字符串cpstrs;
45、步骤2:遍历线路配置表中的所有线路;
46、步骤3:对于上行方向,获取线路的上行方向的线路卡口列表,线路卡口列表中保存线路上行方向上每个交叉口的卡口列表,每个交叉口的卡口列表由“#”分隔,各个交叉口的卡口列表之间以*-分隔。以线路卡口列表构造正则表达式pattern,该正则表达式表示含义如下:包含的都是卡口编号并以逗号分隔;第一个卡口必须是线路卡口列表中第一个交叉口的卡口编号,最后一个卡口必须是线路卡口列表中最后一个交叉口的卡口编号;每一个交叉口的卡口编号可能连续出现;除了第一个交叉口和最后一个交叉口的卡口编号必须出现,中间的交叉口的编号可以不出现,如果出现,那么必须按照上行方向经过交叉口的顺序出现。
47、步骤4:将正则表达式pattern和cpstrs匹配,获取每一个匹配项对应的卡口过车与灯态列表卡口过车列表,如果卡口过车列表满足以下条件,就认为计算出了一个符合条件的车辆线路:车辆在最后一个交叉口的过车时间在最近y分钟的时间范围内,且在每一个交叉口,车辆所经过车道对应的相位列表必须包含线路在该交叉口的上行方向配置的相位号;
48、步骤5:对于下行方向,获取线路的下行方向的线路卡口列表,线路卡口列表中保存线路下行方向上每个交叉口的卡口列表,每个交叉口的卡口列表由“#”分隔,各个交叉口的卡口列表之间以*-分隔。以线路卡口列表构造正则表达式pattern,该正则表达式表示含义如下:包含的都是卡口编号并以逗号分隔;第一个卡口必须是线路卡口列表中第一个交叉口的卡口编号,最后一个卡口必须是线路卡口列表中最后一个交叉口的卡口编号;每一个交叉口的卡口编号可能连续出现;除了第一个交叉口和最后一个交叉口的卡口编号必须出现,中间的交叉口的编号可以不出现,如果出现,那么必须按照下行方向经过交叉口的顺序出现。
49、步骤6:将正则表达式pattern和cpstrs匹配,获取每一个匹配项对应的卡口过车与灯态列表卡口过车列表,如果卡口过车列表满足以下条件,就认为计算出了一个符合条件的车辆线路:车辆在最后一个交叉口的过车时间在最近y分钟的时间范围内,且在每一个交叉口,车辆所经过车道对应的相位列表必须包含线路在该交叉口的下行方向配置的相位号。
50、步骤7:对于符合条件的车辆线路,默认第一个交叉口不停车,如果到达下一个交叉口的红灯剩余时间大于1s或者路段旅行时间大于自由流时间的1.5倍,那么认为到达下一个交叉口需要停车。
51、(6)最后输出线路编号、旅行时间、开始时间、结束时间、车牌号、车牌颜色、经过的卡口编号、交叉口编号、经过卡口、在每个交叉口是否停车到流式存储,并形成车辆线路扩展流。
52、该模块利用正则表达式进行目标线路表达可以解决线路中间卡口过车记录由于异常情况丢失的问题,也可以解决在车辆在同一交叉口出现多次的问题(被多个卡口拍到)。
53、所述线路通行参数扩展统计模块进行如下操作:
54、(1)将车辆线路扩展流中的结束时间作为事件时间,水位线为结束时间;
55、(2)按照线路编号和线路中第一个交叉口编号对车辆线路扩展流进行分组;
56、(3)对车辆线路扩展流滚动开窗(窗口大小y分钟,y可配置,具体取值依赖于需要输出数据的间隔)
57、(4)线路窗口函数对车辆线路扩展流进行如下处理:
58、步骤1:为了排除车辆在路段上异常停车,导致通过线路时间异常,构建了动态检测模型,对车辆线路扩展流中的所有线路时间进行k-medoids聚类,簇的数量k=1,经过迭代计算出簇中心,根据簇中心对线路车辆线路进行过滤,过滤条件为车辆线路的旅行时间大于线路自由流时间的一半,小于簇中心的1.5倍。
59、步骤2:计算过滤后车辆线路的平均停车次数;停车次数为0车辆的认为是协调车辆,计算总协调车辆数(协调流量)
60、步骤3:输出线路编号、线路统计的开始时间、结束时间、平均停车次数、协调流量到数据库。
61、与现有技术相比,本发明中所述的车辆线路统计模块、车辆线路扩展统计模块、线路通行参数统计模块、线路通行参数扩展统计模块均是基于flink流式处理引擎进行开发的,能够实时对海量卡口数据进行统计分析,实时挖掘数据中存在的价值。
62、本发明所述的方法具有对大数据的海量数据处理能力,输出参数丰富,实时性强,可配置输出周期;鲁棒性强,可以容忍线路中部分卡口存在异常或者车辆过车记录丢失的情况,可集成于实际道路交通控制系统中。
本文地址:https://www.jishuxx.com/zhuanli/20240731/188083.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表