虽然 Vissim 和 SUMO 一样都是微观仿真,但它们遵循完全不同的交通建模理念。正因如此,导入过程相当繁琐,无法适用于所有路网,且导入后的路网需要手动处理。强制 netconvert 读取 Vissim 文件的选项是 --vissim-file <FILE> 或简写为 --vissim <FILE>。netconvert 导入 Vissim 的使用示例如下:
netconvert --vissim-file=<VISSIM_FILE> --output-file=MySUMOFile.net.xml
Vissim 路网可能不包含对路段(edge)速度的显式定义。我们必须传播一次设定的速度,但即便如此,某些路段的速度仍可能未定义。选项 --vissim.default-speed <FLOAT> 可以更改当路段速度未定义时使用的默认速度。此参数的默认值为 13.89m/s,约合 50km/h。第二个参数 --vissim.speed-norm <FLOAT> 描述了一个用于乘以描述流的最大速度以获得实际使用速度的系数。默认值为 1。
此外,由于我们必须使用几何启发法将连接(connection)合并到节点(node),因此还有一个系数控制着 Vissim 路网的转换过程:简单来说,--vissim.join-distance <FLOAT> 决定了两个节点必须相距多近(以米为单位)才会被合并。
在导入过程中,必须执行不同的操作,这可能会导致部分数据丢失,通过设置详细选项(verbose option)可以部分观察到这些情况。
自 SVN 版本 [18592] 起,netconvert 使用的导入解析器已扩展以适应 VISSIM 版本 >= 6 的新 XML 输入文件格式(*.inpx),这使得很多事情变得容易得多...
关于 VISSIM 路网结构的建议#
为了提高导入路网的质量,VISSIM 路网结构应遵循一些通用准则。尽管 VISSIM 混合使用连接(link)和连接器(connector)没有问题,但为了能被 netconvert 顺利导入,最好遵循以下规则:
- 主要在交叉口外部使用连接(links)
- 使用一个连接器(connector)来连接交叉口的一组入站和出站车道
- 尽量避免在交叉口内部使用连接和连接器的序列
- 在进口道添加转弯车道时,避免创建重叠的连接形状
总体目标是让 netconvert 尽可能容易地检测到实际的交叉口大小及其所有转弯关系。
转换后的 VISSIM 路网元素#
- 连接(
STRECKEN) - 连接器(
VERBINDER) - 将连接器聚合为 SUMO 节点(junction)
- 冲突区域(
KONFLIKTFLÄCHEN),用于正确转换路权关系
其他 VISSIM 路网特征的转换#
目前由 VISSIM Import Toolbox 中包含的一些 Python 脚本完成(目前仅有德语描述),其中包括以下元素的转换:
- 路线定义和入流(车辆源)
- 交通信号灯(LSA)程序定义
- 车辆(线圈)检测器定义
已知问题#
- 所有感应式交通灯都被映射为同一种类型的交通灯(MSActuatedTrafficLight)
- 会构建额外的源和汇连接
- 混合了大量连接和连接器的交叉口将无法正确转换
对于 VISSIM 版本 6 之前的输入文件(*.inp)#
- 仅适用于德语路网(有关转换技巧,请参阅 #将 VISSIM 路网转换为德语)
- 读取包含网络几何形状(连接折线)Z 坐标的
.inp文件不受支持且会出错。 - 冲突区域(Konfliktflächen)未被处理
将 VISSIM 路网转换为德语#
如果您拥有 VISSIM 且支持德语,将您的英语路网转换为德语文件应该相当简单,以便 SUMO 可以导入。
这假设您使用的是英语版 VISSIM。
- 点击菜单 View(视图),Options(选项)...
- 转到 Language & Units(语言和单位)选项卡
- 选择 Language(语言),Deutsch(德语)
- 点击 OK
- 点击(现在显示为不同语言的)菜单 Datei(文件),Speichern unter(另存为)
- 将文件保存到其他地方
- 点击任何警告消息上的 OK
- 要恢复为英语,点击菜单项 Ansicht(视图),Optionen(选项)
- 选择选项卡 Sprache & Einheiten(语言和单位)
- 选择 Sprache(语言),English(英语)
- 点击 OK
