1、引言
众所周知,进行微观交通仿真怎么也绕不开路网搭建,但我相信没几个人愿意完全手工绘制大型路网,本期介绍如何自动创建PTV Vissim大规模城市级仿真路网。
本文介绍的方法是基于SUMO的netgenerate工具自动生成SUMO格式的路网,使用netconvert 工具将生成的SUMO路网转换为OpenDRIVE格式,然后导入PTV Vissim(Vissim 11开始支持 OpenDRIVE,笔者测试的是 Vissim 2023)进行微调和下一步工作。基本流程如图:

2、SUMO简介
PTV Vissim,相信大家已经耳熟能详。同样,SUMO也是一款支持微观交通仿真的软件,虽然都出自德国,不过前者是商业软件,后者是开源软件。在此,简单介绍一下 SUMO。
SUMO(Simulation of Urban MObility 的缩写)是主要由德国宇航中心(DLR)交通系统研究所开发的一款开源交通仿真软件。SUMO不仅可以模拟微观层面的车辆跟驰和换道等行为,还可进行中观层面的交通仿真,支持各种机动车(含公交、出租等)、轨道交通、船舶、飞机、非机动车及行人等多模式交通仿真,支持超大规模的路网仿真。并提供了路网创建、路网导入导出、需求创建、需求校正、信号控制方案计算等工具,以及支持多语言二次开发的开放接口libsumo和TraCI。
3、路网生成步骤
3.1 SUMO 路网生成
SUMO的netgenerate可以生产三种类型的路网:网格型、蛛网型、随机型。具体操作为:安装SUMO并配置好环境变量,选定一个工作文件夹,打开命令行,输入以下命令就可以生产一个10x10个路段的路网,每条路段长度是400米,默认每条路段是单车道,输出的路网文件名为demo.net.xml
netgenerate --grid --grid.number=10 --grid.length=400 --output-file=grid_demo.net.xml

以下命令是生产一个蛛网型路网,如图
netgenerate --spider --spider-omit-center --output-file=spider_demo.net.xml

随机路网生成不在此演示,还有更多的参数可以查看SUMO官方文档。本文就演示创建一个100x100的理想城市级路网,横向路段长度为400米,纵向路段长度为300米,全部为三车道。命令如下:
netgenerate --grid --grid.x-number=100 --grid.y-number=100 --grid.x-length=400 --grid.y-length=300 --default.lanenumber 3 --output-file=grid100.net.xml
该路网较大,命令执行可能要几秒钟,生成的文件大概是150M,用SUMO的netedit编辑器打开查看一下效果,加载也需要几秒,可以看到提示10000节点和39600路段加载了,整体效果如下。

缩放到任意交叉口,查看其细节,如下图。

可以发现都是3车道路段,路口有默认的转向关系,有左右转和掉头。但该路网是没有信号控制信息的,在生产路网的名字中也可以加入--tls.guess
和--tls.set
等选项来自动添加信号灯,不过转换后导入 Vissim 应该不起作用。
3.2 路网转换
netconvert是SUMO自带的路网转换命令行工具,可以支持多种格式的路网和SUMO格式互转。Vissim路网可以直接转换成SUMO路网,但SUMO路网无法直接转换为Vissim路网,所以本文的思路是将SUMO路网转换为OpenDRIVE格式,然后导入Vissim。命令如下
netconvert -s grid100.net.xml --opendrive-output grid100.xodr
经过转换得到的OpenDRIVE 路网文件grid100.xodr 大小约 420M,接近SUMO路网文件grid100.net.xml的3倍。
3.3 Vissim 导入 OpenDRIVE
PTV Vissim从11版本开始支持OpenDRIVE格式地图导入,但笔者用11版本和2020版本都没有成功导入,使用2023能够成功导入。导入方式很简单,依次点击Vissim的文件->输入->OpenDRIVE
,选择.xodr 文件,如下截图。选择文件后,会提示选择右行交通还是左行交通,选择右行即可。然后就开始读入文件创建 Vissim 路网。


需要说明的是,如果您的电脑CPU配置较低(12代i5以下)、内存较小(32G以下),打开大文件会很吃力,甚至几个小时也可能打不开。笔者的笔电配置是12代 i7-12700H+32G DDR5内存,导入20x20(即400个交叉口)的路网约30秒,内存约占用3G;导入35x35(1225个交叉口)的路网约2分钟,内存占用约9.5G;导入50x50(即2500个交叉口)的路网没有成功(严格地说,我等了超过半小时就放弃了),换用 13 代 i5-13500H+32G DDR5 内存的笔电,成功导入了,耗时约15分钟,内存占用约 17G;100x100(10000个交叉口)的路网在9代i5+128G DDR4内存的台式机上测试导入,等待约3小时也没有导入成功(笔者选择了放弃等待),内存占用峰值约61G。经过以上测试,可以粗略估计导入100x100的路网,至少应该配置13代i7+64G内存,而且最好是台式机。
这里就给大家展示一下,50x50的路网导入Vissim的结果(如下图),保存为Vissim的.inpx 格式的路网文件约1G,原.xodr文件103M,也充分说明一点,PTV Vissim的路网建模精细程度比较高。

局部放大的效果如下:

4、总结
利用 SUMO 自带的两个路网工具生成和转换路网用于测试比较方便,过程比较简单,不涉及任何编程语言,只是简单的命令行使用。但 Vissm 导入大规模路网需要较高配置的电脑,想尝试的朋友需要注意。
欢迎一起交流交通仿真和其他问题。