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

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

1. 开源地图OSM

OpenStreetMap(www.openstreetmap.org)是一款知名的开源地图数据库,可提供相关地图信息资源的下载服务。用户可通过多种方式下载 “.osm”,".osm.pbf"等格式的地图文件,通过解析手段可以获取想要的路网数据。
在这里插入图片描述

2. 数据解析方法对比

OSMnx,QGIS等软件包提供了解析.osm文件功能,将下载的地图数据包转换为常用的Excel格式。从路网连通性,网络建模适用性以及交通需求支持三个层级对OSMnx、QGIS以及OSM2GMNS特点总结如下。

QGIS QuickOSMOSMnxOSM2GMNS
路网连通性网络不连通网络连通网络连通
网络建模适用性支持任意网络类型仅支持道路交通网络支持auto,bike,walk,railway,aeroway;自动简化复杂交叉口,便于交叉口建模
交通需求支持支持下载信息点(POI)不支持支持下载信息点(POI);自动连接交通小区和网络
总结可快速获取大区域路网用于可视化,但网络不连通安装使用相对复杂,仅支持公路网络,适用于基础网络分析及可视化涵盖多种网络类型,采用统一文件格式,适用于各类交通网络建模用途

3. OSM2GMNS

由美国亚利桑那州立大学ASU Trans+AI Lab团队开发

3.1 关于GMNS数据格式

GMNS全称General Modeling Network Specification,其定义了一套灵活统一的多模式交通网络表示格式,方便研究人员分享、合并来自不同渠道的网络数据。

3.2 安装方法

OSM2GMNS已在http://pypi.org平台发布,用户可通过pip方式安装。用户需配置Python 3或Anaconda 3环境,在相应Python环境的Terminal中输入如下命令行:

pip install osm2gmns

较新版本(应该是1.0及其之后)引入了shapely等地理数据处理包。

3.3 使用方法

3.3.1 地图数据下载

(1)登陆官网下载地图数据包,这里以北京交通大学周边路网为例展示,推荐使用 Overpass API 镜像下载。
在这里插入图片描述
移动地图至需要下载的区域,点击“导出”或“Overpass API”按钮即可开始下载,随后会下载得到一个.map文件,这个文件即为路网数据文件。

3.3.2 数据解析

(1)启动Python编程环境,键入如下命令,运行程序即可。注意map文件需与程序保存在同一文件夹。

import osm2gmns as og
net = og.getNetFromOSMFile('map')
og.outputNetToCSV(net,output_folder=’output’)

(2)除基本功能外,OSM2GMNS还提供了获取不同交通模式网络功能,如获取铁路网络,可修改为如下命令。network_type参数可选’auto’, ‘bike’, ‘walk’,‘railway’, 'aeroway’及任意组合。

net = og.getNetFromOSMFile('map', network_type=('railway'))
net = og.getNetFromOSMFile('map', network_type=('auto','railway'))

(3)如想获取POI(Point of Interest)数据,可将参数POIs设置为True:

net = og.getNetFromOSMFile('map', network_type=('railway'), POIs=True)

(4)由于真实路网中存在复杂交叉口情况,同一个交叉口存在多个网络节点(如下图左),OSM2GMNS提供了简化交叉口功能,将属于同一交叉口的节点统一为一个节点(如下图右),方便后续工作开展,命令如下:

net = og.getNetFromCSV()
og.consolidateComplexIntersections(net)
og.outputNetToCSV(net, output_folder='consolidated')

在这里插入图片描述
↓
在这里插入图片描述

3.4 输出文件

(1)核心输出文件由 node.csv(网络节点),link.csv(网络连接弧)和 segment.csv(网络段)组成,如用户选择POI也会有poi.csv文件输出。所有文件格式均基于GMNS格式,方便用户进行后续交通系统分析研究。
在这里插入图片描述
(2)如用户选择复杂交叉口简化功能,consolidated文件加中会有简化后路网的node.csv和link.csv文件。
在这里插入图片描述
在这里插入图片描述

4. 可视化

输出文件可直接用NEXTA/QGIS等软件打开进行可视化展示。
(1)北京交通大学周边(QGIS)
在这里插入图片描述

(2)北京南站周边(QGIS)
在这里插入图片描述

(3)上海虹桥站(QGIS)
在这里插入图片描述
(4)waterloo london 铁路枢纽(NEXTA)
在这里插入图片描述

(5)上海虹桥站(NEXTA)
在这里插入图片描述

5. 总结

OSM2GMNS提供了一种新的,轻便的osm开源地图数据解析工具,对’’ .osm ''和 ".osm.pbf "格式文件进行解析,并将解析结果按照GMNS标准格式(道路交通数据存储格式)进行存储,导出的csv文件可直接导入QGIS,NEXTA等软件进行后续数据处理与分析。从实际测试来看,该库对道路数据的解析效果较好,对于铁路数据的解析效果还可以进一步改进。从示意图可以看出,OSM2GMNS主要存在没有细分城市轨道交通(地铁)与铁路(普速,高速),且数据存储格式与铁路数据不能很好的匹配,GMNS数据格式无法体现铁路数据中的轨距、设计时速、运营类型等特定数据内容。

参考

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

相关推荐

利用Overpass API与Python快速提取OSM城市路网数据实战(以南京市为例)

本文以南京市为例,详细介绍了如何利用Overpass API与Python高效提取OSM开源路网数据的完整实战流程。从获取城市关系ID、编写Overpass QL查询语句,到使用Python的osm2gmns库进行数据转换与清洗,最终生成结构化的CSV文件,为交通规划与智慧城市分析提供可靠的数据基础。

c2d3e4f的博客 1123

Python读取本地文件OSM文件中的路网数据结合CSV数据处理

编写一个Python程序,使它能读取本地文件OSM文件中的路网数据,并将csv文件中的时间速度和公交车设备号根据公交站点信息或者经纬度信息赋值到OSM路网数据中对应的路段上, 如果有些路段处于两个经纬度之间,赋值的时间则取前后经纬度坐标所对应时间的的中间值。并设计时间间隔为5分钟,计算任意时间段任意路段的平均速度。 步骤实现: 读取OSM路网数据,可以使用OSMnx库来实现。 读取CSV文件中的公交车设备号,时间速度和公交站点信息或经纬度信息。 将公交车设备号和时间速度信息匹配到OSM路网数据的对应路段

lizhihua0625的博客 1906

5分钟搞定!用Python+Overpass API抓取南京市路网数据(附完整代码)

本文提供了一份详细的实战指南,介绍如何利用Python和Overpass API快速抓取南京市路网数据。文章从获取区域ID、编写Overpass QL查询语句,到使用osm2gmns库处理OSM XML数据并转换为结构化CSV文件,提供了完整的代码和常见问题解决方案,帮助开发者高效获取可用于分析或可视化的城市道路网络数据。

uu89012的博客 238

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

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

Better.C的博客 3206

python打造最全画地图,可视化数据

注意:这里的版本是 pyecharts-0.1.9.4 注意:这里的版本是 pyecharts-0.1.9.4 注意:这里的版本是 pyecharts-0.1.9.4 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤ QQ群:961562169 有时我们会很希望把数据展示在地图上,来做

Python_sn的博客 2137

从下载到分析:使用Python进行OpenStreetMap数据处理

OSM,即OpenStreetMap,是一个全球性的地图构建项目,旨在创建一个自由且可编辑的世界地图。该项目鼓励用户上传、编辑地图数据,从而提供详尽准确的地理信息。OSM因其开放性和可扩展性,已经成为地理信息系统(GIS)和各种应用程序中不可或缺的数据来源之一。osmnx是一个开源的Python库,专门为处理OpenStreetMap(OSM)数据而设计。OpenStreetMap是一个自由的、全球性的、内容可编辑的地图,由志愿者维护。

weixin_31620365的博客 1897

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

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

Better.C的博客 4144

Python获取openstreetmap(OSM)路网信息 自动爬取城市路网图片和矢量图

# Python获取openstreetmap(OSM)路网信息 自动爬取城市路网图片和矢量图 1. 包含中国城市的经纬度 json文件,根据经纬度自动爬取 osm 道路网; 2. 使用 matplotlib 将路网绘制为白底黑线的png格式图片; 3. 使用 matplotlib 将路网绘制为svg格式矢量图。

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

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

Better.C的博客 2121

Python库 | osm2gmns-0.0.4.tar.gz

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

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1409

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

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

weixin_45562896的博客 2988

对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理:

故障诊断,对西安交大轴承数据集XJTU-SY_Bearing_Datasets进行读取和处理

qq_44757503的博客 6061

如何使用python提取OSM地图的建筑轮廓数据及道路数据

要在OSM地图上获取道路数据,并按照行政边界裁剪,可以使用Python中的OSMnx库。以下是一个示例代码,可以提取指定地点的道路数据,并按照指定的行政边界进行裁剪。函数按照行政边界进行裁剪,最后将裁剪后的数据保存为Shapefile文件。库来筛选出所有“建筑物”类型的要素,并将其保存为Shapefile文件。函数将道路数据转换为GeoDataFrame格式,并使用。函数来获取指定地点的所有地理要素,然后使用。函数来获取指定地点的道路网络数据,然后使用。函数来获取地点的行政边界。

2301_77925375的博客 3436

Ubuntu系统下搭建QtCreator开发环境详细过程(Qt简介;Linux下安装QtCreator;Ubuntu安装后闪退蓝屏的解决方法)

Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面 (Graphical User Interface,简称 GUI) 程序。Qt 支持的操作系统有很多,例如通用操作系统 Windows、Linux、Unix、智能手机系统Android、ios、WinPhone, 嵌入式系统 QNX、VxWorks 等。

分享学习成长历程,Winter is coming! 8579

鲸鱼优化算法(WOA)与门控循环单元(GRU)结合的预测模型(WOA-GRU)及其Python和MATLAB实现

Python和MATLAB的实现均突出模型结构和优化过程。2. **全局搜索与局部搜索结合**:WOA在寻优时,既有全局搜索的能力,又具备局部精准搜索的能力,能有效避免陷入局部最优解。2. **简化结构**:与长短期记忆(LSTM)相比,GRU的结构更为简化,避免了多层细胞结构,提高了计算效率。4. **使用WOA进行优化**:通过WOA迭代优化GRU模型中的参数,如学习率、批量大小和GRU单元的权重。3. **良好的表现**:GRU在多个时序数据序列的预测任务中表现优异,特别是在较短的数据序列中。

qq_45441438的博客 1326

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

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

imlpf的专栏 1586

从零到一:DAMASK与ABAQUS联合仿真的环境配置艺术

本文详细介绍了在Ubuntu 16.04系统中配置DAMASK与ABAQUS2017联合仿真环境的完整流程,涵盖系统基础环境搭建、Python科学计算环境构建、DAMASK核心安装与配置,以及ABAQUS集成与联合调试。通过实战案例和高级调试技巧,帮助用户快速掌握有限元分析中的晶体塑性模拟技术。

weixin_29253711的博客 858

介绍7款免费的最佳地图/导航/定位/GIS开源项目

L7 是由蚂蚁金服 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析开发框架。L7 中的 L 代表Location,7 代表世界七大洲,寓意能为全球位置数据提供可视分析的能力。L7 以图形符号学为理论基础,将抽象复杂的空间数据转化成2D、3D 符号,通过颜色、大小、体积、纹理等视觉变量实现丰富的可视化表达。大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据。数据处理是一门艺术!

tigerhhzz的博客 8667

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2345

matlab 点云均值、中值、高斯滤波【2024最新版】

点云均值滤波、中值滤波、高斯滤波的matlab自带函数实现。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 5259

arcengine 将一个shp的数据读取到另一个shp_从零开始,构建电子地图网站:0_3_数据处理python(1)...

一、环境搭建Python往postgresql中导数据,至少需要3个库包,gdal、shapely、psycopg2。先一个一个来。1.安装gdal直接安会有问题,先去下个安装程序,https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal根据python的版本选择程序。如果不知道python的版本,可以打开cmd,输入python,回车。根据python版本...

weixin_42359255的博客 796

38.XDMA寄存器详解2-H2C、C2H通道寄存器组剖析

目录 1.上节回顾 2. H2C寄存器剖析 2.1 H2C通道标识寄存器(0x00) 2.2 H2C通道控制寄存器(0x04) 2.3 H2C通道状态寄存器(0x40) 2.4 H2C通道完成描述符数量寄存器(0x48) 2.5 H2C通道对齐寄存器(0x4C) 2.6 H2C通道查询模式回写地址寄存器(0x88、0x8C) 2.7 H2C通道中断掩码寄存器(0x90)​ 2.8 H2C通道性能监视控制寄存器(0xC0) 2.9 H2C通道周期计数性能寄存器(0xC4、0xC8) 2

一个早起的程序员 5206

ArcPy的认识与处理地图文档的相关用法

1. ArcPy的简介2. 在ArcMap中打开Python窗口 1. ArcPy的简介 ArcPy是建立在地理处理框架上的Python包,这里主要是基于Python2来实现的。ArcPy提供了有用、高校的方式,用来完成空间数据管理、空间分析、数据转换和制图自动化的功能。 在ArcGIS的Python窗口中的功能非常强大,有智能提示,自动完成,通过拖放生成代码(工具箱拖放、数据拖放、图层拖放)。 ArcPy学习中主要使用的英文单词 英文 中文 IDE (Integrated D.

FOR.GET 1784

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python地理数据处理(附零基础学习资料)

python地理数据处理(附零基础学习资料)

Python单行客的博客 649

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: Python实现VRP常见求解算法——自适应大邻域搜索算法(ALNS)
下一篇: Python实现OSM地图数据解析——Pydriosm
Better.C
博客等级 码龄9年 1万+粉丝 72原创
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值