Python实现基于OSM地图数据的交通需求生成——Grid2demand

osm数据下载 python_【神器】你想要的交通网络数据,三行代码搞定! 今天跟大家分享一款由美国亚利桑那州立大学ASU Trans+AI Lab团队开发的开源python依赖库——OSM2GMNS。无需调用地图API,通过OpenStreetMap导出地图数据包,仅需三行代码即可从中提取多模式交通网络数据并输出为符合GMNS (General Modeling Network Specification) 标准的路网文件。从此不再为路网数据而烦恼!有啥用没听... 阅读详情
AI摘要

Grid2demand是一款基于osm2gmns的交通需求预测工具,它能够根据建筑物属性和出行率表计算出行需求,并生成OD矩阵。本文介绍了Grid2demand的安装、使用流程,包括划分网格、获取交通发生率和吸引率等步骤。

1. Grid2demand简介

出行需求是交通规划的根基,其产生与土地性质密切相关。以校园为例,上课前的主要出行需求是从宿舍区至教学区,下课后则反之;而在承办大型赛事期间,校园场馆附近的交通量则会明显增加。
放到城市中,甚至是更大范围的区域中也是一样。一次出行总存在一个出发地 (Origin) 和一个目的地 (Destination)。在不同的出行目的下,居住、商业、工业等不同属性的用地有不同的交通产生率和吸引率。
Grid2demand利用osm2gmns生成的poi.csv,即可根据建筑物属性和出行率表(可自定义)得到指定出行目的下的出行需求,进而利用经典重力模型即可生成OD矩阵。把交通需求进一步做细到建筑物 (Point Of Interest)。

2. 安装

打开电脑Command Prompt或Anaconda Prompt,输入如下命令行,通过pip安装。

pip install grid2demand

3. 使用教程

(1)下载目标路网文件
在OpenStreetMap 中选择指定区域,将地图数据导出。
在这里插入图片描述
(2)利用osm2gmns获取路网信息和POI数据
启动Python编程环境,运行以下代码即可获取路网信息和POI数据。输出的node.csv和poi.csv将作为grid2demand的输入。

import osm2gmns as og
net = og.getNetFromOSMFile('map.osm',network_type=('railway','aeroway','auto'),POIs=True,default_lanes=True,default_speed=True)
og.connectPOIWithNet(net)
og.generateNodeActivityInfo(net)
og.outputNetToCSV(net)

『注意』
由于OpenStreetMap为开源地图,POI信息可能存在空缺或不准的情况,需要手动修订。
在这里插入图片描述
若poi.csv中name列为乱码,可能存在编码错误,请检查系统编码语言和读取csv的软件编码语言是否一致,或直接清空name列内容再运行grid2demand。

(3)调用grid2demand并读取输入文件

import grid2demand as gd
gd.ReadNetworkFiles()

(4)划分网格
与传统的交通小区不同,我们将研究区域划分为方格网。用户可自定义单元格数量或每个单元格的宽度和高度(米)。因须与地理坐标系匹配,在给定单元格尺寸的时候还需给定研究区域的纬度。在研究区域外围还设立有虚拟小区,用于描述进出研究区域的交通量。

gd.PartitionGrid(number_of_x_blocks=None,number_of_y_blocks=None,cell_width=1000,cell_height=1000,latitude=30)

(5)获取各建筑物类型的交通发生率和吸引率
不同出行目的下,同一建筑物的吸发率可能不同。用户可自定义出行率表poi_trip_rate.csv和出行目的。
在这里插入图片描述

gd.GetPoiTripRate(trip_purpose=1)

(6)计算各点的交通发生量和吸引量
对于POI点,根据不同建筑物的吸发率和建筑物的占地面积(也可手动修改poi.csv中的area属性为建筑面积、停车位、人数等测量单位)可计算各点的交通发生量和吸引量。对于进出研究范围的道路边界点(卡口),默认交通发生量和吸引为1000。

gd.GetNodeDemand()

(7)计算各交通小区间的可达性
默认根据小区质心间的直线距离计算,用户也可在accessibility.csv中自定义小区间的可达性为时间、费用等。

gd.ProduceAccessMatrix(latitude=30)

(8)用重力模型得到交通分布
在这里插入图片描述
用户可自定义出行目的及阻抗函数的系数,得到小区间的出行分布。


gd.RunGravityModel(trip_purpose=1, a=None, b=None, c=None)

在这里插入图片描述

(9)生成点到点的需求 (optional)
为便于后续做路径规划和交通分配,根据上一步得到的小区间的OD分布,随机获取各小区内的点,生成点到点的需求。

gd.GenerateAgentBasedDemand()

在这里插入图片描述

(10)可视化 (optional)
在QGIS中添加图层,导入输出的demand.csv,zone.csv等。
在这里插入图片描述

右键已添加的demand图层,选择“Properties”,设置“Symbology”为“Graduated”,选择“Value”为“volume”,即可实现根据出行量的可视化。
在这里插入图片描述

方格网边界外的需求则表示道路边界点产生、吸引的虚拟小区需求。
在这里插入图片描述

4. 为什么是网格状交通小区

传统的交通小区通常沿铁路、河流等天然屏障划分,遵循行政区划,以便交通调查和统计资料的获取,但难以克服空间异质性。
以美国国家植物园所在的交通小区为例,统计调查中的小区 (census tract) 为下图中的红色边框。传统的交通模型多是将这样的census tract作为交通小区 (Traffic Analysis Zone)进行需求分析,而忽视了小区内实际客流吸发点的分布。
通过划分方格网,可以将小区的交通吸发量与实际客流吸发点很好地结合,一定程度上降低了空间异质的影响,使OD出行分布更加精准。
在这里插入图片描述

目前osm2gmns,grid2demand等输出文件需借助QGIS和NeXTA进行可视化,下一步将介绍plot4gmns包,实现在python环境下对上述输出文件进行可视化。

参考

  1. https://mp.weixin.qq.com/s/6H791uKUR3EJWXErGW2pAA
【QGIS、OSM】利用python开源工具实现指定区域的交通分配 如果从osmgnms和grid2demand得到的node.csv,我们要修改path4gnms代码中的utils.py的四处设置。利用QGIS实现可视化,得到的link_performance.csv,参数有volume和VOC。改完这四处代码,就可以运行path4gnms中的tutorial.ipynb了。 阅读详情

相关推荐

从WHU-Sen-City项目解析智慧城市仿真平台:架构、工具链与实战指南

仿真技术是智慧城市与数字孪生领域的基础支撑,它通过在虚拟环境中构建高保真模型来模拟真实世界。其核心原理在于利用计算机图形学、物理引擎和传感器模型,生成可控、可重复的多模态数据。这项技术的价值在于能极大降低算法验证与方案试错的成本与风险,并安全模拟极端场景。在智慧交通、自动驾驶、城市感知等应用场景中,仿真平台成为连接算法研究与工程落地的关键桥梁。以WHU-Sen-City为代表的综合性仿真平台,集成了三维建模、交通流仿真与多传感器模拟,为解决数据获取难与实验复现性差等痛点提供了标准化方案。通过整合SUMO、R

cuanwei9356的博客 407

学习GIS/OSM手札之ASU Trans+AI Lab产品使用(二)

通过研究grid2demand的说明文档https://github.com/asu-trans-ai-lab/grid2demandhttps://github.com/asu-trans-ai-lab/grid2demand 配合在ASU Trans+AI Lab平台上的实践发现 osm_gmnshttps://asu-trans-ai-lab.github.io/#/ ,输出文档中input_agents.csv是决定agent运行的关键。另外输入和输出文档的关系挂在下面以免以后找不到了:

Wang_Yizhi97的博客 453

Python通过OSM获取全国屋顶数据(经纬度、轮廓、面积、地址等)

本文实现了使用Python通过OSM获取全国屋顶数据(经纬度、轮廓、面积、地址等)的效果,详细过程和效果可参考以下内容。

DooDoo~的博客 2152

plot4gmns:面向通用建模网络范式(GMNS)的快速可视化【v0.1.1】

一款面向通用建模网络范式(GMNS)的快速可视化工具。

Better.C的博客 2121

Python库osm2gmns 0.6.2版本:OSM数据转换为GMNS格式

osm2gmns是一个开源的Python库,主要用于将OpenStreetMap(OSM)数据转换为GMNS(Global Model for Network Simulation)格式,以满足交通模拟和网络建模的需求。它的主要作用是简化了从OSM数据到交通模型输入数据的转换过程,使得研究人员和开发者能更专注于模型开发和分析,而不必花费大量时间在数据预处理上。对于想要开始使用osm2gmns的开发者来说,安装过程非常简单。通过Python的包管理工具pip,用户可以轻松地安装osm2gmns。

weixin_35433448的博客 888

OsmGT:Python库,用于在开放式街道地图(和POI)上提取道路网络,以便使用图形工具创建图形或计算最短路径和等时线

OsmGT 基于(GT)的OpenStreetMap(OSM)网络分析: 从位置名称或边界框(道路和城市)加载数据 图形创建(和拓扑处理) 异位酮生成器 最短路径 演示版 要在活页夹上玩笔记本: 如果您不想等待(OsmGt docker构建需要在myBinder上花费时间),则可以找到jupyter笔记本的html版本:单击以获取结果 文献资料 如何安装 仅在Linux上 conda install -c amauryval osmgt 如何运行dockerfile docker build -t osmgt . && docker run -p 8888:8888 osmgt:latest

Python实现OSM地图数据解析——OSM2Rail

开源python依赖库——OSM2Rail,不仅提供了更精确的铁路网络解析结果,而且实现了OpenStreetMap地图数据包自动下载,同时在GMNS标准的基础上扩展了铁路数据字段,将解析数据输出为符合GMNS-Rail 标准的路网文件。轻松获取想要的铁路网络数据!

Better.C的博客 4144

Python库 | MapMatching4GMNS-0.2.8.tar.gz

资源分类:Python库 所属语言:Python 资源全名:MapMatching4GMNS-0.2.8.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

离线OSM数据条件下,出租车轨迹数据的地图匹配

osmnx库由于受到网络限制很难较为完整的获取一个城市或更大范围的路网数据。为了解决这个问题,本人采用了osm2gmns库,构建网络并进行地图匹配,实现了和交通数据小旭学长一样的效果。

weixin_45562896的博客 2988

Python库 | osm2gmns-0.0.4.tar.gz

资源分类:Python库 所属语言:Python 资源全名:osm2gmns-0.0.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2859

为OSM地图建立网络拓扑关系,导出shp文件

为OSM地图建立网络拓扑关系,导出shp文件

imlpf的专栏 1586

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7)

weixin_44312889的博客 6310

【功能上新】Python实现OSM地图数据解析——OSM2Rail

一款开源的铁路网络建模工具

Better.C的博客 3206

深度学习|卷积神经网络

介绍卷积神经网络基本理论,包括卷积层、池化层和全连接层,并阐述LeNet卷积神经网络的构建过程。

weixin_58243219的博客 5727

LABVIEW学习之MODBUS-TCP通讯

LABVIEW学习之MODBUS-TCP通讯 1,MODBUS-TCP通讯介绍: MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。 2,MODBUS通讯所需的函数: 安装了DSC模块之后可以在数据通信内找到相关函数 3 ,主VI 主要思路就是使用状态机来进行连接 读取 写入 断开。使用枚举类型来选择状态: 1,连接 2,写入多个M继电器: 3,写入单个M继电器 4,写入双字节D...

风动9527的博客 2万+

Nested Logit交通方式划分-基于Biogeme

前段时间做交通模型,需要用到nested-logit模型做交通方式划分,常用的工具有SPSS、TransCAD,近期发现一个开源的软件Biogeme,尝试着做了一下。 1.原理部分可参考概率论书籍和关宏志教授的《非集计模型交通行为分析的工具》,书籍网址:https://www.mayiwenku.com/p-1111913.html 2.biogeme官网:http://biogeme.epfl.ch/,官网上有软件,有说明和案例,Biogeme是一个开放源代码免费软件,通常用于参数模型的最大似然估计,尤其

cfine23的博客 1万+

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6886

用Python玩玩OSMnx包获取道路数据并可视化分析

今天我们来玩玩街道道路数据的获取,简化和可视化分析。 今天每个人都离不开导航,除了开车用导航外,其实走路、骑车、公交都可以导航,选址和找餐厅、酒店也需要,如果一个城市能够标注所以公交厕所也是很有必要的。 当然,实现这一切都需要我们拥有道路数据,标示道路交叉路口、死胡同、红路灯灯,并能够计算道路长度,最短路径和规划线路。 今天实现这一切都依赖地图公司的...

weixin_34291004的博客 7380

1G/2.5G Ethernet PCS/PMA or SGMII

SGMII即Serial GMII,串行GMII,收发各一对差分信号线,时钟频率625MHz,在时钟信号的上升沿和下降沿均采样,所以总的数据速率为1.25Gbps=625Mbps*2。参考时钟RX_CLK由PHY提供,是可选的,主要用于MAC侧没有时钟的情况,一般情况下,RX_CLK不使用。收发都可以从数据中恢复出时钟。在TXD发送的串行数据中,每8比特数据会插入TX_EN/TX_ER 两比特控制信息,同样,在RXD接收数据中,每8比特数据会插入RX_DV/RX_ER 两比特控制信息。

sqzjiayou的博客 1万+

3D iToF深度分辨率测量

本文展示了RGB-D传感器在三维测量中的高精度表现。标靶深度图显示其具备清晰、低噪、无干扰的特性,点云数据完整度高且轮廓分明。该技术已成功应用于物流(体积测量误差<1%)、工业(高反光部件装配检测)和农业(果蔬成熟度分级)等领域,验证了其硬件和算法的可靠性,能够满足不同场景下的三维测量需求。

dream it possible 252

学习GIS/OSM手札之ASU Trans+AI Lab产品使用(一)

学习GIS

Wang_Yizhi97的博客 1087

【EB-03】 AUTOSAR builder与EB RTE集成

打开EB工具后,在EB的步骤是:执行MultiTask(2)-> Mapping Component to Partitions(4)->Task Mapping(5)-> SvcAs_Trigger(7)-> Code Generation(8)如涉及新增BSW Module,也需要重复以上步骤。

libuping2023的博客 962

python 实现数据化大屏_Python+networkX+OpenStreetMap实现交通数据可视化(一):用OpenStreetMap下载地图数据...

概述在OpenStreetMap上下载地图数据常见报错操作完美操作Python+networkX+OpenStreetMap实现交通数据可视化(一):用OpenStreetMap下载地图数据本文主要参考:https://zhuanlan.zhihu.com/p/93239773?utm_source=wechat_session&utm_medium=social&utm...

weixin_39884144的博客 897

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

本地化部署 DeepSeek,构建单细胞与空间转录组 AI 分析平台

weixin_53637133的博客 178

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: Python实现OSM地图数据解析——Pydriosm
下一篇: Python实现OSM地图数据解析——OSM2Rail
Better.C
博客等级 码龄9年 1万+粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值