بنقرة واحدة
transbigdata-metroline
使用 TransBigData 构建公交地铁网络拓扑和路径分析。适用于地铁网络建模、最短路径查询、换乘分析、公交 GPS 到站识别等任务。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
使用 TransBigData 构建公交地铁网络拓扑和路径分析。适用于地铁网络建模、最短路径查询、换乘分析、公交 GPS 到站识别等任务。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
TransBigData 交通时空大数据分析工具集。适用于轨迹数据栅格化、轨迹清洗处理、出租车OD提取、公交地铁网络分析、坐标转换、数据可视化等交通大数据分析任务。
使用 TransBigData 进行坐标系转换和距离计算。适用于 WGS84、GCJ02、BD09 坐标系互转,以及两点间距离计算。
使用 TransBigData 获取公共交通和地理数据。适用于获取公交线路站点、行政区划边界、等时圈分析等任务。
使用 TransBigData 库进行地理数据栅格化处理。适用于将GPS轨迹数据映射到栅格、生成矩形/三角形/六边形栅格、Geohash编码、栅格参数优化等空间数据分析任务。
使用 TransBigData 进行数据预处理与质量评估。适用于数据质量检查、采样间隔分析、边界过滤、ID重编号等任务。
使用 TransBigData 处理出租车 GPS 数据。适用于出租车状态清洗、OD 提取、载客/空驶轨迹分离等任务。
| name | transbigdata-metroline |
| description | 使用 TransBigData 构建公交地铁网络拓扑和路径分析。适用于地铁网络建模、最短路径查询、换乘分析、公交 GPS 到站识别等任务。 |
pip install transbigdata networkx geopandas
metro_network()import transbigdata as tbd
import geopandas as gpd
# 加载线路和站点数据
line = gpd.read_file('metro_lines.shp') # 需包含 linename, speed, stoptime
stop = gpd.read_file('metro_stops.shp')
# 构建网络图
G = tbd.metro_network(
line,
stop,
transfertime=5 # 换乘时间(分钟)
)
数据要求:
line: 包含 linename(线路名)、speed(运行速度)、stoptime(停站时间)stop: 站点位置数据get_shortest_path()path = tbd.get_shortest_path(
G,
stop,
ostation='福田', # 起点站名
dstation='罗湖' # 终点站名
)
# 返回: 站点名列表
get_k_shortest_paths()paths = tbd.get_k_shortest_paths(
G,
stop,
ostation='福田',
dstation='罗湖',
k=3 # 前3条最短路径
)
get_path_traveltime()travel_time = tbd.get_path_traveltime(G, path) # 返回分钟
split_subwayline()将地铁线路按站点分割为线段。
line_segments = tbd.split_subwayline(line, stop)
busgps_arriveinfo()从公交 GPS 轨迹识别到站/离站时间。
arrive_info = tbd.busgps_arriveinfo(
bus_gps_data,
line, # 公交线路 GeoDataFrame
stop, # 公交站点 GeoDataFrame
col=['VehicleNum', 'GPSTime', 'Lng', 'Lat'],
stopbuffer=200, # 站点缓冲区半径(米)
mintime=300 # 最小停留时间(秒)
)
busgps_onewaytime()oneway_time = tbd.busgps_onewaytime(
arrive_info,
start='起点站',
end='终点站',
col=['VehicleNum', 'StopName', 'ArriveTime', 'LeaveTime']
)
import pandas as pd
import geopandas as gpd
import transbigdata as tbd
from shapely.geometry import Point
# 1. 准备数据
# 线路数据
line_data = gpd.GeoDataFrame({
'linename': ['1号线', '1号线', '2号线', '2号线'],
'speed': [60, 60, 55, 55], # km/h
'stoptime': [0.5, 0.5, 0.5, 0.5] # 分钟
})
# 站点数据
stop_data = gpd.GeoDataFrame({
'stopname': ['A站', 'B站', 'C站', 'D站'],
'linename': ['1号线', '1号线,2号线', '2号线', '1号线'],
'geometry': [Point(114.0, 22.5), Point(114.05, 22.52),
Point(114.1, 22.55), Point(114.08, 22.48)]
}, crs='EPSG:4326')
# 2. 构建网络
G = tbd.metro_network(line_data, stop_data, transfertime=5)
# 3. 查询最短路径
path = tbd.get_shortest_path(G, stop_data, ostation='A站', dstation='C站')
print(f"最短路径: {' → '.join(path)}")
# 4. 计算耗时
time = tbd.get_path_traveltime(G, path)
print(f"预计耗时: {time:.1f} 分钟")
# 5. 查询多条路径
paths = tbd.get_k_shortest_paths(G, stop_data, ostation='A站', dstation='C站', k=3)
for i, p in enumerate(paths, 1):
t = tbd.get_path_traveltime(G, p)
print(f"方案{i}: {' → '.join(p)},耗时 {t:.1f} 分钟")
import pandas as pd
import geopandas as gpd
import transbigdata as tbd
# 1. 加载数据
bus_gps = pd.read_csv('bus_gps.csv')
bus_gps['GPSTime'] = pd.to_datetime(bus_gps['GPSTime'])
bus_line = gpd.read_file('bus_line.shp')
bus_stop = gpd.read_file('bus_stop.shp')
# 2. 识别到站信息
arrive_info = tbd.busgps_arriveinfo(
bus_gps,
bus_line,
bus_stop,
col=['VehicleNum', 'GPSTime', 'Lng', 'Lat'],
stopbuffer=100
)
# 3. 计算单程运行时间
oneway = tbd.busgps_onewaytime(
arrive_info,
start='起点站',
end='终点站'
)
# 4. 分析运行时间分布
print(f"平均单程时间: {oneway['duration'].mean():.1f} 分钟")
print(f"最短: {oneway['duration'].min():.1f} 分钟")
print(f"最长: {oneway['duration'].max():.1f} 分钟")
网络构建:
transfertime 通常设为 3-5 分钟公交GPS分析:
stopbuffer 根据站点密度调整,通常 100-200 米数据准备:
getbusdata() 函数获取公交数据完整文档: https://transbigdata.readthedocs.io/en/latest/metroline.html