持续获取道路的车速和拥堵状态--附北京五环内全天路况下载

本文主要是介绍持续获取道路的车速和拥堵状态--附北京五环内全天路况下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近有个中科院的学生找我,说正在做一个环保相关的课题,需要监测某个特定区域内所有道路在不同时刻的车辆通行速度(时间),问我怎么样才能获取到这样的数据。陆续有好几个人问过这个需求了,这次我花了一些时间系统整理了一下业务流程,并重新编写了代码,实现了这个功能。因此写这篇教程把思路分享给大家,并将处理好的北京市五环内各道路在2023年3月23日全天不同时段(每30分钟采集一次)的速度和拥堵状态提供给大家下载研究。

需求分析

干交通这行,不管是交通设计、分析还是预测,经常需要知道某个区域内道路的拥堵状态,即某条路堵不堵,什么时候堵,堵多久,最好还能知道通行速度。要怎么做呢?我们最容易想到的是找交警要数据,但是不少人没有这个途径,而且交警的数据更多关注的是车流量,不一定能满足我们的需求。还有一种方式是直接看高德等图商的官网,上面会用红黄绿表示道路拥堵与否,如果只关注一两条路的话还行,但是你得盯着电脑一直看,而且只能定性的得到红黄绿(拥堵缓行畅通),不能得到通行速度。以上方法都不能满足我们获取持续路况的需求。

解决途径

最好的方法还是用图商的导航接口。百度、高德、腾讯都有免费的路径规划接口,规则大致相同,都是输入起终点坐标,接口返回途径道路的矢量坐标、路名、长度、通行时间等信息。自然我们就能想到,如果周期性比如每5分钟去导航同一条路,不就可以持续的得到这条路的路况数据了吗?另外,用不同的起终点多次调用接口,不就可以获取某区域内多条道路的数据了吗?答案是肯定的。本文基于以上两个思路,向大家介绍如何使用高德路径规划接口持续获取道路的车速和拥堵信息,并向大家分享我已经处理好的北京五环内主要道路一天的路况数据。

效果展示

我先给大家介绍下最终处理好的数据是什么样的,让大家先有个直观的了解,后面再来讲如何处理数据。最终数据包括:

  • 基础路网数据

本例为北京五环内路网的shp文件(图1),字段包括路名、长度、方向和路段ID,该shp包含68206条记录,每条记录代表一条小路段(高德称其为tmc)。放了张交大西门外的大柳树路的局部路网(图2)方便大家理解,图中的箭头是小路段的终点,也代表这路段的方向,这条路从南到北总长约1.2公里,被划分成了19条小路段,每条小路段有唯一的编号ID。

26bd6b01cd6e6a03d1cb46ea1ef9dfe5.jpeg

fcce079907fe7a9303735f3a50203bd9.jpeg

  • 路段分时段数据(excel)

包含每条小路段在不同时刻的速度和拥堵状态。时间取的是2023年3月23日(一个普通的工作日)全天0时到24时的数据,每半小时抓取一次。表中速度是定量指标,单位为km/h;拥堵状态是定性指标,取值为畅通、缓行、拥堵和严重拥堵;

我们可以从路网中筛选出所关注的小路段,如图2中的我标记了7的路段,其在路段分时段数据表中的ID为31570,则excel中的数据如图3和图4所示。

6f61eb19375622861ff2bc96118b7bad.jpeg

80a911f6bb74ff95fec537abf11ece1a.jpeg

从图4可以看到,白天早晨7点到晚上8点之间,该路段的通行速度明显比其它时段低;大柳树路不是主干路,速度波动不够大,我再放一张西直门立交桥的,车速差别就很明显了,早晚高峰也清晰见,见图5和图6。

0b9e4237b9f6f96ae31e5b46a3aefd61.jpeg

aab4cdd36ce65e5eeea7a735f1f072ad.jpeg

再强调一次,速度是定量指标,拥堵状态是定性指标,这是两个不同的维度,比如高速公路车速50km/h就算缓行了,而城市道路同样的速度则妥妥算畅通,要用哪个指标取决于你的数学模型。

数据处理过程

数据处理过程很复杂,因为涉及到很多细节,这些细节我之前在其它文章中已经写过,后面我会仅列出来,不再细说。这里主要讲一下数据处理的总体流程:

步骤1:利用高德路径规划接口,获取基础路网数据(类似本例中的北京五环路网shp文件)。详细过程见我之前的文章。如果你关注的路段比较多,OD点对就多弄一些,不多的话就就少一些;另外,原教程中的一些拓扑处理在本文的场景下是无需处理的;

《利用高德导航接口获取模型级交通路网数据》

步骤2:对基础路网的每一条路段进行唯一的ID标号,用于后期的匹配;

步骤3:在某一个时刻获取并保存基础路网中路段的实时车速,记录获取时刻;详细过程见之前文章:获取道路实时车速—以东南大学为例;

《获取道路实时车速》

步骤4:以一定频率周期性执行步骤3,获得路段在不同时刻的路况数据集合;

步骤5:根据基础路网中的路段ID,对后期获取的所有路段进行ID编号,即可得到路段分时段数据。

示例数据下载

数据内容:即上文所述的

  • 北京五环内路网的shp文件

路段分时段数据(CSV)2023年3月24日全天(每半小时一批次),共计3327948条记录

  • 数据下载方式:关注本人微信公众号“数牍小点子”,发送bj0323即可获得下载地址。

扫描加入免费的「智慧城市之智慧交通」知识星球可了解更多行业资讯和资料。

欢迎加入智能交通技术群!

联系方式:微信号18515441838

这篇关于持续获取道路的车速和拥堵状态--附北京五环内全天路况下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814481

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Spring Boot中获取IOC容器的多种方式

《SpringBoot中获取IOC容器的多种方式》本文主要介绍了SpringBoot中获取IOC容器的多种方式,包括直接注入、实现ApplicationContextAware接口、通过Spring... 目录1. 直接注入ApplicationContext2. 实现ApplicationContextA

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499