简介#
本教程是一个关于如何在不使用 osmWebWizard.py 的情况下融入公共交通的小示例。主要主题包括:
- 公共交通
- 公交站
有用链接#
公共交通教程#
在模拟开始时,公交车和有轨电车会被调度以服务其指定的路线。同时,人员被创建。每个人匆忙赶往他们喜欢的公交站,等待他们的公交车或有轨电车。然后他们被接上并被带到他们的目标公交站。
运行模拟:
.docs/tutorials/public_transport/data/run.sumocfg

网络、路线、需求和时刻表#
网络#
首先,必须创建网络并建立公交站。有几种方法可以实现这一点——例如,可以手动将它们写入 xml 文件,或使用 netedit 来完成。
使用 netedit#
可以使用窗口顶部的公交站工具轻松创建公交站。
以下动图描述了本教程中使用的网络的基本创建过程。
创建带有反向车道和人行道的边。
创建带有反向车道的边,该边允许选择的车辆通过。
向边添加公交站。
如果您不确定如何在 netedit 中创建网络,请查看本教程:
- 快速入门 它深入解释了边、连接、需求、路线等的使用。
保存网络时,应同时保存附加文件。
公交站应写入 additional.add.xml 文件,以便为人员和车辆提供站点。
公交站的示例 xml 代码可能如下所示:
<busStop id="A_bus" lane="-E1_1" startPos="14.42" endPos="24.42"/>
<busStop id="A_tram1" lane="-E4_0" startPos="13.43" endPos="43.43">
<access lane="E1_0" pos="175.00"/>
</busStop>
如果公交站位于不允许行人的边上(即电车轨道),则必须使用 <access> 元素将其连接到网络的其余部分(也可以在 netedit 的附加模式下完成)。
公共交通#
创建的公交站可以用作路线声明中的停靠点。
这些路线稍后可以分配给车辆,在本例中是有轨电车和公交车。
路线被写入 routes.rou.xml 文件。
下面您可以看到有轨电车和公交车路线的代码示例。
要获得重复的时刻表,多种方法是可行的:
- 定义重复的车辆 (
<flow>),在运行一次路线后消失。如果网络不包含路线的完整回路,这很有用 - 定义具有重复路线的单车辆。这对于让一轮时刻表的延误延续到下一轮是理想的
<vType id="bus" vClass="bus"/>
<vType id="tram" vClass="tram"/>
<route id="busRoute" edges="-E1 -E0 -E3 -E2" color="yellow" repeat="10" cycleTime="140">
<stop busStop="A_bus" duration="20.00" until="30.00"/>
<stop busStop="B_bus" duration="20.00" until="90.00"/>
</route>
<vehicle id="bus" type="bus" depart="0.00" line="42" route="busRoute"/>
<flow id="tram1" type="tram" begin="0.00" end="3600.00" period="300.00" line="23">
<route edges="-E4" color="cyan"/>
<stop busStop="A_tram1" duration="20.00" until="30.00"/>
<stop busStop="B_tram1" duration="20.00" until="45.00"/>
</flow>
时刻表#
在日常生活中,公交车和有轨电车通常按照严格的时刻表运行。类似的更改在 SUMO 中是可能的,并且在使用多式联运路由时至关重要。
此类时刻表是使用属性 until 定义的。until 属性是为站点设置的。
遵循此时刻表的车辆在该时间('until')过去且最短停靠时间('duration')也过去之前不能离开此站点。
需求#
出行需求由可以自由选择其交通方式的人员组成
<personFlow id="AB" begin="0" end="3600" probability="0.1">
<personTrip from="-E1" to="-E0" arrivalPos="-20" modes="public"/>
</personFlow>
除了流(flows),所有人员和车辆也可以单独定义,并且人员计划可以用显式步骤定义。
使用 sumo 选项 --vehroute 输出来了解 <personFlow> 在模拟期间如何扩展为多个出行阶段。
<person id="HeadingBusstop20" depart="1.00" color="green">
<walk from="gneE1" busStop="busStop_-gneE10_1_6"/>
<ride busStop="busStop_-gneE10_1_5" lines="tram"/>
</person>
<vehicle id="0" type="Tram" depart="0" color="1,1,0" line="tram">
<route edges="gneE10 -gneE10"/>
<stop busStop="busStop_-gneE10_1_6" duration="20"/>
</vehicle>
公交路线的变更。公交车在最顶端的公交站停靠直到 170。
sumocfg#
您可能从其他教程中已经看到,您通过 sumocfg 将所有内容绑定在一起。在其中,您设置网络、路线和附加文件。 之后,您可以通过单击它或在命令行上启动它来开始模拟。
<configuration xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://sumo.dlr.de/xsd/sumoConfiguration.xsd">
<input>
<net-file value="net.net.xml"/>
<route-files value="pt.rou.xml,persons.rou.xml"/>
<additional-files value="stops.add.xml"/>
</input>
</configuration>
要获取有关模拟的特定数据,您可以使用 TraCI。 一个好的起点是提供的教程:
