利用OSMnx进行城市路网数据的速度与通行时间推算及分析

本文还是以广州市路网为例,通过osmmx调用ox.add_edge_speeds(G)时,该函数会遍历图G 中的每条边(即每条街道),并基于一些预设的规则或街道属性(如街道类型、是否为主要道路、是否有速度限制等)来估算车辆在这条街道上行驶的平均速度。然后,这个速度值会被添加为边的属性,命名为 ''speed_kph''(表示速度,单位为公里/小时),并增加"travel_time"(表示通行时间,单位为秒)。

计算全网路网限速和通行时间

完整代码#运行环境 Python 3.11

# 导入osmnx库,用于处理地理空间数据和网络分析
import osmnx as ox# 定义地点名称,这里是广州市,位于中国广东省
place_name = "guangzhou, Guangdong, China"# 使用osmnx的graph_from_place函数,根据地点名称下载并构建该地区的街道网络图
G = ox.graph_from_place(place_name)# 为图G中的边添加速度信息。如果边缺少速度数据,osmnx会尝试根据道路类型自动估计速度
G = ox.add_edge_speeds(G)# 根据已添加的速度信息,计算图中每条边的预估旅行时间(以秒为单位)
G = ox.add_edge_travel_times(G)# 将图G转换为GeoDataFrame,仅包含边的信息(不包含节点)
# GeoDataFrame是geopandas库中的一种数据结构,专为地理空间数据设计
edges = ox.graph_to_gdfs(G, nodes=False)# 确保'higwhay'列的数据类型为字符串,以便后续的分组操作
edges["highway"] = edges["highway"].astype(str)# 对不同道路类型进行分组,并计算每种类型道路的平均长度、平均速度(千米/小时)和平均旅行时间(秒)
# 使用.round(1)对结果进行四舍五入,保留一位小数
grouped_stats = edges.groupby("highway")[["length", "speed_kph", "travel_time"]].mean().round(1)# 将处理好的街道网络图G保存为GeoPackage格式的文件,文件保存路径为"E:/data/guangzhou_network.gpkg"
ox.save_graph_geopackage(G, filepath="E:/data/guangzhou_network.gpkg")

导入ArcGISpro进行展示,并以speed作为颜色分级标签,分级方法选择''自然间断点分段法'',分了5个层级;

分级结果如图所示;

可以发现核心区的道路限速还是比较严重的,最畅通的还是高速公路;

不同路网类型速度分类汇总

引用summary_stats 这个变量对路网速度进行分类汇总,通过对 edges_gdf 这个GeoDataFrame进行分组和聚合操作得到的。edges_gdf 包含路段信息,包括它们所属的highway类型(如高速公路、主干道、次干道等)、每条边的speed_kph(速度,单位:公里/小时)和travel_time(通行时间)。

具体的分组和聚合操作如下:

  1. 分组(groupby):通过''highway''列进行分组,意味着会将所有具有相同''highway''值的行(即边)归为一组。

  2. 聚合(agg):对每个分组执行聚合操作。这里对''speed_kph''列计算了平均值''mean'',表示该''highway''类型下所有边的平均速度;同样地,也对''travel_time''列计算了平均值,但需要注意,这个平均值可能不是直接基于实际测量得出的旅行时间,而可能是基于某种假设或计算得出的。

  3. 四舍五入(round(1)):最后,将计算出的平均速度和平均旅行时间四舍五入到小数点后一位。

完整代码#运行环境 Python 3.11

import osmnx as ox
import pandas as pd  # 新增导入pandas库用于数据处理和导出Excel
import matplotlib.pyplot as plt# 设置下载和分析的城市地点
place_name = "guangzhou, Guangdong, China"# 下载并构建指定城市的街道网络图
G = ox.graph_from_place(place_name)# 为图中缺失速度信息的边添加默认速度数据,依据道路类型进行估算
G = ox.add_edge_speeds(G)# 根据每条边的速度数据,计算并添加预估的旅行时间(以秒为单位)
G = ox.add_edge_travel_times(G)# 将原始地理坐标系下的图投影到UTM坐标系,这一步骤便于进行距离相关的计算
G_projected = ox.project_graph(G)# 将投影后的图转换为只包含边信息的GeoDataFrame,GeoDataFrame是geopandas库中用于处理地理数据的数据结构
edges_gdf = ox.graph_to_gdfs(G_projected, nodes=False)# 确保'highway'列的数据类型为字符串,便于接下来的分组操作
edges_gdf["highway"] = edges_gdf["highway"].astype(str)# 按照道路类型对边进行分组,并计算每种类型道路的平均速度(千米/小时)和平均旅行时间(秒),结果四舍五入到一位小数
summary_stats = edges_gdf.groupby("highway").agg({"speed_kph": "mean", "travel_time": "mean"}).round(1)
print(summary_stats)# 导出计算结果到Excel文件
# 指定导出的文件路径和名称
output_file = "Guangzhou_Road_Speeds_and_Travel_Times.xlsx"
# 将summary_stats DataFrame导出为Excel文件
summary_stats.to_excel(output_file, index=True)
print(f"数据已成功导出到 {output_file}")

导出的路网速度进行分类汇总xlsx结果如下;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/378019.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Logistic回归算法原理详解及应用

目录 引言 基本原理 损失函数 参数估计 优缺点 应用 Logistic回归优化算法 具体案例 引言 逻辑回归(Logistic Regression)是一种广泛用于分类问题的统计方法,尤其是二分类问题。尽管名字中有“回归”二字,但它实际上是一…

Vue3总结汇总(不间断更新)

一、常用依赖插件汇总 1.1 依赖 UI组件库:1、AntDesignVue2、ElementPlus 网络请求:axios 组件通信:mitt ID生成:nanoid 路由:vue-router 三维:cesium 构建工具:Vite vite-plugin-vue-setup-extend:简化set…

编译打包自己的云手机(redroid)镜像

前言 香橙派上跑云手机可以看之前的文章: 香橙派5plus上跑云手机方案一 redroid(带硬件加速)香橙派5plus上跑云手机方案二 waydroid 还有一个cuttlefish方案没说,后面再研究,cuttlefish的优势在于可以自定义内核且selinux是开启的&#xf…

推荐5个实用的可视化工具

面对海量的数据,我们应该如何高效地提取其价值,让复杂的信息一目了然?这正是可视化工具大显身手的舞台。今天,我就来分享几款非常好用的数据可视化工具,它们不仅能够帮助你轻松驾驭数据,还能让你的工作汇报…

HCIE是什么等级的证书?

HCIE(华为认证互联网专家,Huawei Certified Internetwork Expert)是华为认证体系中的最高等级证书。它要求考生具备在复杂网络环境中规划、设计、部署、运维和优化网络的能力。HCIE认证是华为认证体系中最具挑战性和含金量的认证之一&#xf…

鸿蒙语言基础类库:【@ohos.application.testRunner (TestRunner)】 测试

TestRunner TestRunner模块提供了框架测试的能力。包括准备单元测试环境、运行测试用例。 如果您想实现自己的单元测试框架,您必须继承这个类并覆盖它的所有方法。 说明: 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-…

浪潮天启防火墙TQ2000远程配置方法SSL-V偏、L2xx 配置方法

前言 本次设置只针对配置V偏,其他防火墙配置不涉及。建议把防火墙内外网都调通后再进行V偏配置。 其他配置可参考:浪潮天启防火墙配置手册 配置SSLVxx 在外网端口开启SSLVxx信息 开启SSLVxx功能 1、勾选 “启用SSL-Vxx” 2、设置登录端口号&#xff0…

使用Apache服务部署静态网站

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、网站服务程序 ​二、配置服务文件参数 ​三、SELinux安全子系统 四、个人用户主页功能 ​五、虚拟网站主机功能 六、Apache的访问控制…

CSA笔记1-基础知识和目录管理命令

[litonglocalhost ~]$ 是终端提示符,类似于Windows下的cmd的命令行 litong 当前系统登录的用户名 分隔符 localhost 当前机器名称,本地主机 ~ 当前用户的家目录 $ 表示当前用户为普通用户若为#则表示当前用户为超级管理员 su root 切换root权限…

计算器原生js

目录 1.HTML 2.CSS 2.JS 4.资源 5.运行截图 6.下载连接 7.注意事项 1.HTML <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

pytorch学习(六):卷积层的使用

卷积函数的概念 卷积核从输入特征图的左上角开始&#xff0c;按照设定的步长&#xff08;Stride&#xff09;滑动。步长决定了卷积核每次滑动的像素数&#xff0c;这里我们假设步长 s1。在每次滑动时&#xff0c;卷积核与输入特征图对应位置的元素相乘&#xff0c;然后将这些乘…

Linux C语言基础 day9

目录 思维导图 学习目标&#xff1a; 学习内容&#xff1a; 1. 值传递与地址传递&#xff08;非常重要&#xff09; 1.1 值传递 1.2 地址传递 2. 递归函数 2.1 递归的概念 2.2 递归条件 2.3 递归思想 3. 指针 3.1 指针相关概念 3.2 指针变量的定义 3.2.1. 定义格…

对于GPT-5在一年半后发布的期待!

首先&#xff0c;如果GPT-5真如OpenAI首席技术官米拉穆拉蒂&#xff08;Mira Murati&#xff09;在采访中所透露的那样&#xff0c;在一年半后发布&#xff0c;并在某些领域达到博士级的智能&#xff0c;这无疑将是一个令人振奋的消息。这一预测不仅反映了AI技术的快速发展&…

Raw Socket(二)循环队列收发数据

完整代码在&#xff1a; 添加链接描述 其中tcp_handshake文件夹是实现TCP三次握手的demo。 完整代码参考&#xff1a; https://github.com/praveenkmurthy/Raw-Sockets 代码实现基于raw socket的TCP协议&#xff0c;发送http请求包并接收回包&#xff0c;…

C# Winform布局控件的几种方式

在 C# WinForms 应用程序中&#xff0c;布局控件和布局管理器可以帮助开发者创建响应式的用户界面&#xff0c;即使在窗口大小改变时也能保持控件的正确位置和尺寸。 通常我们采用Panel和Dock&#xff0c;辅助Anchor实现类似如下的布局。 以下是几种常见的布局控件和方法&…

07:串口通信二

串口编程 1、与波特率之相关的寄存器2、PCON寄存器3、SCON寄存器4、配置的代码分析5、向PC发送一段字符串6、PC机向单片机发送字符控制LED1灯的亮灭 1、与波特率之相关的寄存器 如图&#xff0c;与串口通信相关的寄存器主要是SCON和PCON寄存器。 2、PCON寄存器 SMOD&#xff1…

普通人还有必要学习 Python 之类的编程语言吗?

在开始前分享一些编程的资料需要的同学评论888即可拿走 是我根据网友给的问题精心整理的对于编程的重要性&#xff0c;这里就不详谈了。 未来&#xff0c;我们和机器的交流会越来越多&#xff0c;编程可以简单看作是和机器对话并分发给机器任务。机器不仅越来越强大&#xff0…

java面向对象进阶篇--static

一、前言 java进阶篇已经开始了&#xff0c;先从面向对象开始&#xff0c;由于时间原因今天就只更新了static部分&#xff0c;内容上特别详细&#xff0c;一些特别的注意事项也在反复的提醒大家。 温馨提示一下&#xff0c;往后的java篇会越来越难&#xff0c;希望大家能够坚…

IOS上微信小程序密码框光标离开提示存储密码解决方案

问题&#xff1a; ios密码框输入密码光标离开之后会提示存储密码的弹窗 解决方案 1、在苹果手机上面把 “自动填充密码”关闭&#xff0c;但是苹果这个默认开启&#xff0c;而且大部分客户也不会去自己关闭。 2、欺骗苹果手机&#xff0c;代码实现。 先说解决思路&#xf…

玩转HarmonyOS NEXT之IM应用首页布局

本文从目前流行的垂类市场中&#xff0c;选择即时通讯应用作为典型案例详细介绍HarmonyOS NEXT的各类布局在实际开发中的综合应用。即时通讯应用的核心功能为用户交互&#xff0c;主要包含对话聊天、通讯录&#xff0c;社交圈等交互功能。 应用首页 创建一个包含一列的栅格布…