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

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)关于未来的更新计划,欢迎留言交流

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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐