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

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

前言

最近有个中科院的学生找我,说正在做一个环保相关的课题,需要监测某个特定区域内所有道路在不同时刻的车辆通行速度(时间),问我怎么样才能获取到这样的数据。陆续有好几个人问过这个需求了,这次我花了一些时间系统整理了一下业务流程,并重新编写了代码,实现了这个功能。因此写这篇教程把思路分享给大家,并将处理好的北京市五环内各道路在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使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过