运行 SUMOPy#
在浏览器中双击脚本 sumopy_gui.py 启动。如果失败,请使用命令行应用程序,将目录切换到
SUMOHOME/tools/contributed/sumopy
并运行以下命令来启动 sumopy:
python sumopy_gui.py
如果所有必需的包都已正确安装,您将看到如此处所示的主窗口,但初始状态下网络为空。对象浏览器最初显示的是 SUMOPy 的主要对象:scenario(场景),其中包含所有其他信息。

打开/创建场景#
SUMOPy 发行版中包含一个测试场景,位于
SUMO_HOME/tools/contributed/sumopy/testscenario
从仿真中获取结果的最快方法是导入现有的 xml 文件。如果以下 SUMO 网络、多边形和路线文件
demo.net.xml demo.poly.xml demo.rou.xml
位于目录
SUMO_HOME/tools/contributed/sumopy/testscenario
则可以通过将这些文件一次性导入 SUMOPy 来创建新场景:从主菜单中选择 Scenario>Create from xml...(场景>从 xml 创建...),并在表单中插入场景简称(Shortname)和工作目录(Workdir),如此处所示。

Name(名称)和 Description(描述)选项是自由文本字段。按下 Run(运行)按钮后,网络、建筑物和路线将被导入。如果行程文件 demo.trip.xml 存在,它也将被导入。
同样,也可以在菜单 Scenario>New...(场景>新建...)下创建一个空场景。
浏览场景#
对象浏览器允许浏览场景的所有信息。在一定程度上,可以修改数据。最重要的信息包括:
- 包含边(edges)、节点(nodes)、交通信号灯系统等的网络。
- 土地利用(landuse),包含来自 .poly 文件的建筑物信息以及背景地图(稍后将介绍如何导入它们)。
- 需求(demand),包含可用的车辆类型、行程(trips)和路线(routes)的信息。
网络导航#
可以使用网络编辑器检查网络。初始编辑工具允许点击不同的网络元素,并在对象浏览器中检索相应信息。
使用网络编辑器下方的缩放按钮(+、-)可以获得不同的缩放级别。1:1 按钮将网络缩放至大致适应窗口边界。缩放按钮旁边是一个按钮,按下时会弹出一个菜单。从该菜单中,可以选择或取消选择要绘制的网络元素。
以下鼠标-键盘组合允许导航网络:
| 操作 | 按键-鼠标 |
|---|---|
| 放大/缩小 | 按住 Ctrl + 滚轮 |
| 平移 | 按住 Ctrl + Shift + 鼠标左键 |
模拟场景#
从主菜单中选择:
Simulation>Sumo>export routes and simulate...(仿真>Sumo>导出路线并仿真...)
通过此过程,demand.trips 中的当前行程和路线将自动导出为 SUMO .rou 文件。从 SUMO 弹出对话框中选择所需的仿真设置,如图 此处 所示。

仿真参数是自解释的,只需将鼠标悬停在参数名称上即可。默认参数通常适合运行首次仿真。选择其中一个输出选项以获取特定的仿真结果。关于输出,不同输出的 Output Sampling Time(输出采样时间)可能值得关注。如果在仿真中观察到车辆在没有明显原因的情况下在路口被阻挡,则可以通过将 Teleport(瞬移)设置为正数时间(例如 10s)来解决冲突。
按下 run(运行)按钮后,sumo-gui 界面将弹出,准备进行仿真,如图 此处 所示。

调整延迟时间并按下开始(Start)按钮。仿真结束后,确认 OK 并关闭 sumo-gui 窗口。仿真结果现在已导入 SUMOPy,可以进行检查、可视化并以各种格式导出。
查看结果#
结果可以以表格格式和图形方式查看,参见 此处。

在对象浏览器中,可以查看每个行程的结果和每条边的结果。行程导向和边导向的结果表都可以导出为 CSV 格式,参见 Simulation>Results(仿真>结果)菜单。
保存场景时,结果不会保存。相反,必须使用以下命令单独保存结果:
Simulation>Results>Save as ...(仿真>结果>另存为...)
随时可以使用生成结果的场景重新打开结果,使用:
Simulation>Results>Open ...(仿真>结果>打开...)
如果安装了 Matplotlib 包,您可以生成各种格式的图表,选择菜单 Simulation>Results>Plot with matplotlib(仿真>结果>使用 matplotlib 绘图)。弹出对话框有助于配置 matplotlib 图表的图形细节。从 matplotlib 图形窗口,可以将图形结果导出为不同的文件格式(PNG、PDF、JPEG 等),示例 PNG 文件显示在下方。

启动 SUMOPy#
如上所述,可以从 SUMO XML 文件创建网络,或者加载二进制文件。这两种操作都可以从命令行执行。
启动时加载二进制场景#
可以使用命令行在启动时将先前保存的二进制场景(文件名为 scenario.obj|)加载到 SUMOPy 中:
python sumopy-gui.py workdir/scenario.obj|
启动时导入 SUMO XML 文件#
可以使用以下命令完成对现有 SUMO XML 文件的初始导入,这些文件的根名称为 scenario|,位于目录 workdir 中:
python sumopy-gui.py scenario workdir
导入和编辑网络#
如果需要,应在继续需求建模之前修改网络。
导入网络和建筑物#
可以使用以下命令从 SUMO net.xml 文件导入网络:
network>import>from sumo net.xml ...(网络>导入>从 sumo net.xml...)
网络可以从先前下载的 OSM 文件转换和导入,调用向导:
network>import>from osm.xml ...(网络>导入>从 osm.xml...)
不同类型的建筑物、公园、停车场、休闲区等(在 SUMOPy 中称为“设施”)是土地利用对象的属性,可以从 OSM 文件中提取和导入,菜单项为:
landuse>facilities>import from osm...(土地利用>设施>从 osm 导入...)
有时 XML 文件中的特殊字符会干扰 Python XML 解析器,导致导入过程中出错。如果发生这种情况,只需使用以下命令“清理”相应的 OSM 文件:
landuse>facilities>clean osm file...(土地利用>设施>清理 osm 文件...)
然后再导入它。
使用 SUMO 的 netedit 编辑#
推荐的网络编辑方式是通过 netedit,它从 0.25 版本开始随 SUMO 提供。可以通过选择菜单来调用 SUMO 的 netedit:
Network>Edit with netedit(网络>使用 netedit 编辑)
netedit 将启动,网络已准备好进行编辑。netedit 的使用文档记录在此处:https://sumo.dlr.de/docs/netedit.html。编辑后,必须在 netedit| 内保存网络,按下 Ctrl + s 或使用 File>save(文件>保存)。然后可以关闭 netedit,修改后的网络将被重新导入 SUMOPy。
在背景地图上使用 SUMO 的 netedit 编辑#
有一种可能性是在背景地图上使用 netedit| 编辑网络。目前这些是 Google 卫星地图。在使用背景地图编辑之前,必须为给定的网络区域下载地图。这可以通过向导完成,可以通过选择菜单项 [1] 来调用。
landuse>maps>download...(土地利用>地图>下载...)
该向导有助于下载覆盖网络区域的正方形图块。可以通过以米为单位设置图块宽度(和高度)来定义分辨率。图块大小(像素)最大为 1280(使用 Google 地图服务器)。分辨率是图块大小/图块宽度,单位为像素/米。
强烈建议在下载地图之前按下 Apply|(应用)按钮。这将计算将要下载的图块数量。这很重要,因为 Google 地图会阻止 IP 下载某个区域的过多地图。因此,不要超过约 300 个图块!另请注意,根据计算机的性能,netedit 在处理过大的地图区域时可能会遇到问题。
地图下载后,可以使用以下命令调用 netedit:
Network>Edit with netedit on map(网络>在地图上使用 netedit 编辑)
以便在地图上编辑 SUMO 网络。
使用 SUMOPy Networkeditor 编辑#
SUMOPy 内部的网络编辑器目前提供一些有限的网络编辑功能:
- 可以操纵边和建筑物的几何形状:激活 Move|(移动)工具进行移动或 Stretch|(拉伸)以更改顶点。
- 使用菜单
Network>Clean nodes(网络>清理节点)将所有进入节点的边“剪切回”到一定半径。此措施可能有助于验证路口车道之间的连接。
- 在 SUMOPy 中,地图由土地利用对象管理
