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

article/2025/8/26 13:07:19

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

目录

  • 1. 简介
  • 2. 功能介绍
  • 3. 操作流程
    • 3.1 安装
    • 3.2 快速上手
  • 4. 未来计划

1. 简介

作为一款面向铁路工作者的开源网络建模工具,OSM2Rail实现了在线OSM地图包快速下载、铁路元素自动解析、网络快速可视化以及规范化数据输出。借助OSM2Rail,你可以快速构建以下车站、站场、线路、网络的地理网络。

(1)北京南站
在这里插入图片描述
(2)襄阳北
在这里插入图片描述
(3)伦敦城区网
在这里插入图片描述
为了进一步简化铁路网建模工作,快速提取特定名称的铁路元素集合,在新版本0.0.6中对包进行了一定功能完善,可实现特定线路的提取。

2. 功能介绍

0.0.6版本的OSM2Rail功能如下:

  • 支持在线下载.osm或.osm.pbf格式的OSM地图数据包
  • 支持解析.osm或.osm.pbf格式的OSM地图数据包
  • 支持提取特定名称的铁路元素
  • 以GMNS数据格式导出CSV文件
  • 导出文件可被QGIS读取

3. 操作流程

3.1 安装

PyPI地址:

https://pypi.org/project/osm2rail/

新版本需要以下三方包支持:

  • bs4
  • osmium
  • shapely
  • matplotlib
  • fuzzywuzzy
  • pandas
  • numpy
  • requests

配置好以上环境后,可输入以下命令快速安装包,

pip install osm2rail

3.2 快速上手

(1)在线下载地图包

支持通过名称或坐标框两种格式在线下载地图包

subarea_names = '徐州东'
download_dir= './osmfile'
osmfile=orl.download_osm_data_from_overpass(subarea_names='徐州东',download_dir=output_dir,ret_download_path=True)

subarea_names:区域名称,可以是 str 或 包含多个str 的list
download_dir:下载到本地的路径
bboxs:区域的坐标范围,格式为:tuple(min_lat, max_lat,min_lon, max_lon)
ret_download_path:是否返回文件路径

(2)解析地图包并格式化

net = orl.get_network_from_file(filename=osmfile[0],POIs=True,check_boundary=True)
orl.show_network(net)

filename:文件路径
bbox:解析的目标范围,格式为:tuble(min_lat, max_lat,min_lon, max_lon)
check_boundary:bool,是否剔除不再范围内的元素
target_elements:需要解析的特定元素名称,格式为str或包含多个str 的list
POIs:bool,是否解析POI元素

可视化结果如下:
在这里插入图片描述
接下来我们尝试使用特定铁路元素解析功能:
首先需要自己准备好一个包含目标区域的地图包,比如:
在这里插入图片描述
然后输入以下代码提取:

net = orl.get_network_from_file(filename=osm_file,POIs=True,check_boundary=True,target_elements=['South London Line'])

你将会得到以下结果:
在这里插入图片描述
这样就不用在准备地图数据包时刻意的裁剪额外区域,可有助于简化铁路网络建模工具。经测试,此功能对于线路的提取效果较好,对于车站级别的提取效果不是太理想,主要是因为:在OSM地图数据结构中,车站的relation元素集合中一般只包含POI和控制点数据,不包含侧线。

(3)保存CSV文件
输入以下命令即可将数据保存为CSV文件

orl.save_network(net,output_folder=output_dir)

4. 未来计划

目前正在完善以下功能:

(1)为车站侧线添加车站名称属性,方便通过输入名称搜索两个车站间的可行列车路径。
(2)将站台与车站侧线建立连接,构建连通的铁路网络。
(3)关于未来的更新计划,欢迎留言交流

部分效果如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/c4T1g3dD.shtml

相关文章

数据分析OSM模型

People do not start out with the search for facts,they start out with an opinion. ——Peter F.Drucker 文章目录 前言一、OSM模型是什么二、OSM模型的作用三、OSM模型的适用场景四、案例分享(一)创业初期的打车APP1. 案例背景2. 目标3. 策略4. 度量…

java osm pbf_OSM数据的下载和转换使用

除了去爬高德,百度等在线地图的数据外,还有一种获得数据的方法是下载openstreetmap的免费数据。OpenStreetMap它是利用公众集体的力量和无偿的贡献来改善地图相关的地理数据。OSM是非营利性的,它将数据回馈给社区重新用于其它的产品与服务。O…

cesium加载OSM在线地图

文章目录 1.实现效果2.实现方法2.1官方文档2.2代码调用2.3OSM在线地图风格 Cesium实战系列文章总目录: 传送门 1.实现效果 2.实现方法 2.1官方文档 Cesium官方虽然没有提供直接加载OSM在线地图的方式,但是可以通过UrlTemplateImageryProvider接口加载…

java osm pbf_read format .osm.pbf from geofabrik

#--------------------------20200227更新---------------------------------------- 德国人第二天邮件就反馈了。确实严谨,也学到了。 1 osm 全部坐标信息只在points里, 后面的way 和relation 只有点id的索引。 他给出的读取方法是: l0 osm.…

边缘服务网格 osm-edge

本文篇幅稍长,阅读本文将了解以下内容: •什么是 osm-edge 及其产生背景•边缘计算与中心云计算的差异,以及带来的挑战•osm-edge 的设计及采用的技术•5 分钟快速体验边缘服务网格 关于 osm-edge osm-edge 是针对边缘计算环境设计的服务网格…

GeoServer发布OSM地图

参考顺序: CentOS7.5安装Postgresql10.5和PostGIS(CentOS7.6安装Postgresq11和PostGIS)CentOS7部署GeoServerCentOS7部署osm2pgsql GeoServer发布OSM地图 1. 创建图层数据表 osm_db中包含了planet_osm_line,planet_osm_point,planet_osm_…

使用OSM数据创建城市模型

使用OSM数据创建城市模型 一.OSM数据获取方式 (1)通过OpenStreetMap获取 (2)通过Geofabrik下载最近的OSM数据 (3)有很多插件也提供了数据获取方式,根据自己用的软件,自行百度查找 …

java osm_OSM初识(三)OSM Data

一 导出数据 将XML格式的OSM数据转换成另一种格式。 二 提取数据 剪切你选择区域内的数据,或者提取出特定区域特定的特征 三 数据格式 OSM文件仅属于OSM,不能用别的软件打开。其中后缀为bz2,pdf的文件是为了节省空间压缩过的OSM文件。一个简单…

简单学习OSM(OpenStreetMap)文件格式的最基础结构

目标 获取一个最简单的OSM文件,并学习其最基础的结构。 获取OSM数据的步骤 操作很简单: 进入官网:https://www.openstreetmap.org/ 点击左上角的 “导出” 按钮。 然后,填入坐标范围,点击按钮即可导出osm文件&…

OSM(OpenStreetMap)使用简述

0.背景 基于开源的地图制作工具osm以及开源的仿真引擎CARLA完成交通场景仿真场景的搭建。 1.构建OSM场景 https://www.openstreetmap.org/#map16/31.2808/121.1690 1.1.搜索关键字 1.2. 手动选择不同的区域 1.3.导出 导出为osm文件 2.osm->xodr OpenStreetMap 格式文件…

OSM数据内容解析

OSM数据内容解析 数据简介 OpenStreetMap(简称OSM,中文是公开地图),这是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。是一款由网络大众共同打造的免费开源、可编辑的地图服务。 OSM采…

OSM下载路网数据

OpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。 本文介绍如何使用OSM免费下载路网数据。如想直接获取全国路网数据,可见文末! OSM地…

python第三方库pygame的使用

作用:pygame一般用来做游戏 注意:1.在使用pygame提供的功能之前,需要调用init方法 2.在游戏结束前需要调用 quit 方法 pygame中的各个函数: 1.pygame.init():该函数在使用pygame时进行初始化,只有引用了该…

Py之pygame:Python的pygame库的简介、安装、使用方法详细攻略

Py之pygame:Python的pygame库的简介、安装、使用方法详细攻略 目录 pygame库的简介 pygame库的安装 pygame库的使用方法 pygame库的简介 PyPoice是SDL多媒体库的Python包装模块。它包含Python函数和类,这些类和类允许使用SDL对CDROM、音频和视频输出、…

python3安装pygame出错(输入“pip3 install pygame“,安装pygame模块报错)

使用pip3 install pygame,安装出错 自己已经更换源镜像,但总是在执行到最后一步的时候报错,通过网上的方法安装,总是出现两个配置无法被找到,向下执行的时候出现错误,最后以第一种方式安装成功。 执行: p…

【Pygame基本使用】

pygame是什么 pygame是跨平台Python模块,专门为电子游戏设计,包含图像、声音等;简单的说它是别人已经编写好的程序,并放在了一个类似库里,专门给别人使用的; pygame的图形接口 https://www.jianshu.com/p…

python Pygame的具体使用讲解

一、实验介绍 1.1 实验内容 在本节课中,我们将讲解Pygame的常用对象及其操作,包括图形、动画、文字、音频等,确保同学们对Pygame有一个基础的了解,同时为后续课程做好准备。 Pygame图形Pygame动画Pygame文字Pygame音频Pygame事…

Pygame 官方文档 - 中译版

pygame 文档 Pygame之家【Pygame Home】 帮助内容【Help Contents】 指导索引【Reference Index】最有用的东西 【Most useful stuff】Color | display | draw | event | font | image | key | locals mixer | mouse | Rect | Surface | time | music | pygame 高级的东西【…

pygame入门

pygame入门 文章目录 pygame入门说明一、pygame的安装二、pygame模块概览三、pygame的“hello world”四、事件理解事件事件检索处理鼠标事件处理键盘事件事件过滤产生事件 五、显示全屏显示改变窗口尺寸复合模式其他 六、字体创建font对象使用字体中文字体 七、颜色八、图像使…

pygame下载(非常详细)

pygame安装 第一次安装pygame,从网上查了很多资料,各种方式都有,我发现了一种很简单的方法,不用去官网找,直接输入命令就能下载,希望能给大家提供一些参考! 打开终端 1、winR 打开终端&#…