简介#
SUMO 允许通过预定义的所谓车辆类来建模访问限制。每辆车都有一个车辆类,每条仿真车道都允许一组车辆类。车辆只能在其车辆类被允许的车道上行驶。
这对于通过区分乘用车、自行车、有轨电车和行人来描述多模式交通场景非常有用。
车辆定义#
车辆的车辆类定义如下:首先定义一个具有适当车辆类的车辆类型,然后将该类型分配给车辆。下面是一个示例:
<routes>
<vType id="myType" vClass="bus"/>
<vehicle id="veh0" type="myType" depart="0">
<route edges="a b c"/>
</vehicle>
</routes>
如果未给出此类定义,车辆类默认为 passenger(普通乘用车)。通过设置该属性,会自动分配一组默认类型参数,以更好地对应于该类别的典型车辆。
网络定义#
在 .net.xml 文件中,每条车道定义了一组允许的车辆类。此定义可以是:
- 取自自定义输入文件。可以为边或单个车道定义权限。为了简化定义,可以使用属性
allow, disallow指定允许的类或禁止的类。 - 使用选项 --default.disallow <STRING>,... 进行设置。
- 从输入源(如 OpenStreetMap)导入,根据可定制的启发式方法。
- 通过 netedit 设置。存在用于添加自行车道、公交车道和人行道的便捷功能。
- 使用 TraCI 在模拟期间更改。
为了可视化访问权限,可以使用 sumo-gui 或 netedit。
特殊情况#
车辆类 ignoring 可以在任何边上行驶。
车辆类 pedestrian 不应分配给车辆。相反,行人应建模为行走的人。在网络构建期间,不会在仅行人的车道之间建立直接连接。应使用构建行人交叉口的选项。
自定义访问限制#
默认车辆类(包括值 custom1 和 custom2)可以处理建模网络访问限制的大多数要求。
但是,在某些领域,如航运(吃水、梁宽)和铁路(轴重、等级),可能需要提供细粒度的数值访问模型。
为此,duarouter 提供了选项 --restriction-params 来设置边和车辆类型通用参数名称的列表。
- 只有那些限制参数值低于相应边参数值的车辆才被允许在边上移动。
- 如果
<vType>未定义限制参数,则其值初始化为 0。 - 如果
<edge>未定义限制参数,则其值初始化为 1e40。
船舶吃水限制可以按以下方式建模:
duarouter --restriction-params draught -n net.net.xml -r routes.rou.xml
其中 net.net.xml 定义了一个边,如下所示:
<edge id="E" from="beg" to="end" priority="-1">
<lane id="E_0" index="0" allow="ship" speed="13.90" length="100"/>
<param key="draught" value="10"/>
</edge>
而 routes.rou.xml 定义了以下类型:
<vType id="0" vClass="ship">
<param key="draught" value="5"/>
</vType>
<vType id="1" vClass="ship">
<param key="draught" value="15"/>
</vType>
在此示例中,类型为 "0" 的船舶将能够使用边 "E",而类型为 "1" 的船舶将被禁止。
