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

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

前言

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

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn