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

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

前言

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

相关文章

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

springboot的controller中如何获取applicatim.yml的配置值

《springboot的controller中如何获取applicatim.yml的配置值》本文介绍了在SpringBoot的Controller中获取application.yml配置值的四种方式,... 目录1. 使用@Value注解(最常用)application.yml 配置Controller 中

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

Python包管理工具uv下载python版本慢问题解决办法

《Python包管理工具uv下载python版本慢问题解决办法》uv是一个非常快的Python包和项目管理器,用Rust编写,使用热缓存安装Trio的依赖项的速度对比,:本文主要介绍Python包... 目录发现问题对于 MACOS / linux 用户 (zsh/bash):对于 Windows 用户:总

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