Vissim

虽然 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