【功能上新】Python实现OSM地图数据解析——OSM2Rail
一款开源的铁路网络建模工具
一款开源的铁路网络建模工具
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)关于未来的更新计划,欢迎留言交流
部分效果如下:
更多推荐
所有评论(0)