如何获取SUMO交通岛内部Edge ID及直观对比仿真结果
关于SUMO与sumolib的两个问题解答
1. 用sumolib获取交通岛内部Edge ID列表
要获取交通岛内部的Edge ID列表,核心是利用sumolib中Junction类的getInternalEdges()方法,操作步骤如下:
- 读取路网文件得到Net对象
- 通过交通岛对应的交叉口ID获取Junction实例
- 调用
getInternalEdges()获取内部Edge对象,遍历提取ID即可得到列表
示例代码:
import sumolib # 读取路网文件 net = sumolib.net.readNet("your_network.net.xml") # 替换为目标交通岛的交叉口ID island_junction = net.getJunction("target_island_id") # 提取内部Edge ID列表 internal_edge_ids = [edge.getID() for edge in island_junction.getInternalEdges()]
注:交通岛在SUMO中属于特殊类型的交叉口(Junction),其内部边会被归类为该交叉口的内部边。
2. 对比SUMO仿真场景结果的方法
简便直观的对比方式
使用SUMO自带的sumo-gui对比模式:
- 打开sumo-gui后,通过
File > Compare选项加载多个场景的输出文件(如tripinfo.xml、vehroute.xml) - 工具会分栏展示不同场景的仿真数据,可直观对比车辆路径、行程时间、延误等核心指标
多场景批量对比方案
当场景数量较多时,SUMO自带工具的可视化能力有限,建议自行编写Python脚本处理:
- 用sumolib读取各场景的输出文件(如
summary.xml、tripinfo.xml) - 提取关键统计指标(平均行程时间、总延误、最大排队长度等)
- 借助
matplotlib或seaborn绘制对比图表,或生成统计汇总表格

内容的提问来源于stack exchange,提问作者Yong Jin Park
相关产品推荐
相关产品推荐

