7 地铁网络数据获取与拓扑建模

[1]:
import warnings
warnings.filterwarnings('ignore')

以下示例演示如何使用 TransBigData 下载地铁线路并为地铁线路网络构建拓扑网络模型

下载地铁线路

[2]:
import pandas as pd
import numpy as np
import geopandas as gpd
import transbigdata as tbd
line,stop = tbd.getbusdata('厦门',['1号线','2号线','3号线'])
Obtaining city id: 厦门success
1号线
地铁1号线(镇海路-岩内) success
地铁1号线(岩内-镇海路) success
2号线
地铁2号线(五缘湾-天竺山) success
地铁2号线(天竺山-五缘湾) success
3号线
地铁3号线(厦门火车站-蔡厝) success
地铁3号线(蔡厝-厦门火车站) success
地铁3号线南延段(厦门火车站-沙坡尾) success
地铁3号线南延段(沙坡尾-厦门火车站) success
[3]:
line.plot()
[3]:
<AxesSubplot:>
../_images/gallery_Example_7-Modeling_for_subway_network_topology_5_1.png
[4]:
stop.plot()
[4]:
<AxesSubplot:>
../_images/gallery_Example_7-Modeling_for_subway_network_topology_6_1.png

将地铁线路分成几个部分

“tbd.split_subwayline”方法可用于将地铁线路与地铁站进行切片,以获取地铁路段信息(此步骤在地铁客流可视化中很有用)

[5]:
metroline_splited = tbd.split_subwayline(line,stop)
metroline_splited.plot(column = pd.Series(metroline_splited.index))
[5]:
<AxesSubplot:>
../_images/gallery_Example_7-Modeling_for_subway_network_topology_9_1.png

地铁网络拓扑建模

我们还可以使用地铁站数据来构建地铁网络的拓扑模型。此步骤对于后续识别地铁行驶路径非常有用。生成的图形依赖于 NetworkX。

[6]:
#Modeling for subway network topology
line['speed'] = 55 #operation speed 55km/h
line['stoptime'] = 0.5 #stop time at each stations 30s
import networkx as nx
G = tbd.metro_network(line,stop, transfertime=5)
nx.draw(G,node_size=20)
../_images/gallery_Example_7-Modeling_for_subway_network_topology_12_0.png
[7]:
path = tbd.get_shortest_path(G,stop,'镇海路','蔡厝')
path
[7]:
['地铁1号线镇海路',
 '地铁1号线中山公园',
 '地铁1号线将军祠',
 '地铁1号线文灶',
 '地铁1号线湖滨东路',
 '地铁3号线湖滨东路',
 '地铁3号线体育中心',
 '地铁3号线人才中心',
 '地铁3号线湖里公园',
 '地铁3号线华荣路',
 '地铁3号线火炬园',
 '地铁3号线小东山',
 '地铁3号线安兜',
 '地铁3号线坂尚',
 '地铁3号线湖里创新园',
 '地铁3号线五缘湾',
 '地铁3号线林前',
 '地铁3号线鼓锣',
 '地铁3号线后村',
 '地铁3号线蔡厝']
[8]:
tbd.get_path_traveltime(G,path)
[8]:
49.34680872200037
[9]:
# k th shortest paths
paths =  tbd.get_k_shortest_paths(G,stop,'镇海路','蔡厝',2)
paths
[9]:
[['地铁1号线镇海路',
  '地铁1号线中山公园',
  '地铁1号线将军祠',
  '地铁1号线文灶',
  '地铁1号线湖滨东路',
  '地铁3号线湖滨东路',
  '地铁3号线体育中心',
  '地铁3号线人才中心',
  '地铁3号线湖里公园',
  '地铁3号线华荣路',
  '地铁3号线火炬园',
  '地铁3号线小东山',
  '地铁3号线安兜',
  '地铁3号线坂尚',
  '地铁3号线湖里创新园',
  '地铁3号线五缘湾',
  '地铁3号线林前',
  '地铁3号线鼓锣',
  '地铁3号线后村',
  '地铁3号线蔡厝'],
 ['地铁1号线镇海路',
  '地铁1号线中山公园',
  '地铁1号线将军祠',
  '地铁1号线文灶',
  '地铁1号线湖滨东路',
  '地铁1号线莲坂',
  '地铁1号线莲花路口',
  '地铁1号线吕厝',
  '地铁1号线乌石浦',
  '地铁1号线塘边',
  '地铁1号线火炬园',
  '地铁3号线火炬园',
  '地铁3号线小东山',
  '地铁3号线安兜',
  '地铁3号线坂尚',
  '地铁3号线湖里创新园',
  '地铁3号线五缘湾',
  '地铁3号线林前',
  '地铁3号线鼓锣',
  '地铁3号线后村',
  '地铁3号线蔡厝']]
[10]:
tbd.get_path_traveltime(G,paths[1])
[10]:
49.633890662025024