路网编辑与优化:netedit图形化编辑器使用、道路属性修改、交叉口渠化与信号灯配置
好,咱们进入第三讲。说实话,前两讲我们一直在跟文本文件打交道,很多同学会觉得有点枯燥。这一讲就爽了——我们终于可以动手画路了!
netedit 是 SUMO 自带的图形化编辑器。我个人习惯叫它「画图板」,虽然它远不止画图这么简单。你想想看,一个真实的城市路网,几百条道路、几十个交叉口,全靠手写 XML 文件?那得写到猴年马月去。netedit 就是来解决这个问题的。
3.1 启动 netedit 与界面概览
启动方式很简单,在终端里敲一行命令就行:
netedit
或者你想直接打开一个已有的路网文件:
netedit mynetwork.net.xml
界面打开后,你会看到几个主要区域:
- 画布区:中间最大的那块,用来显示和编辑路网
- 工具栏:左侧竖着的一排图标,选择、绘制、删除、连接……
- 属性面板:右侧,选中某个元素后,这里会显示它的详细参数
- 状态栏:底部,显示当前操作提示和坐标信息
3.2 道路属性修改:从画一条路开始
我们先画一条最简单的路。点击左侧工具栏的「创建边」按钮(一个带加号的折线图标),然后在画布上点两个点,一条路就出来了。
但这条路太「原始」了。我们需要修改它的属性。选中这条路,右侧属性面板会显示一堆参数。我挑几个最常用的说说:
| 属性名 | 含义 | 我的建议值 |
|---|---|---|
speed |
道路限速(m/s) | 城市道路一般设 13.89(约 50 km/h) |
numLanes |
车道数 | 双向两车道就设 2,四车道设 4 |
priority |
道路优先级(用于通行规则) | 主干道设高一些,支路设低一些 |
oneway |
是否单行道 | 默认 false,单行道改为 true |
width |
车道宽度(m) | 默认 3.2,我一般不改 |
嗯,这里要注意:修改属性后,要按回车键确认,或者点击旁边的「应用」按钮。不然你改了等于没改。
3.3 交叉口渠化:让路口更真实
交叉口渠化,说白了就是给路口画上转向车道。你想想看,一个十字路口,左转的车和直行的车挤在一条道上,那不乱套了吗?
在 netedit 里做渠化,核心操作是「连接」(connection)。选中交叉口,然后点击工具栏的「连接编辑器」按钮(一个类似电路节点的图标)。
连接编辑器里,你会看到每个进口道的车道列表。你需要指定每条车道可以通往哪些出口车道:
- 直行:连接当前车道到对面车道的对应车道
- 左转:连接当前车道到左侧道路的车道
- 右转:连接当前车道到右侧道路的车道
- 掉头:连接当前车道到对面车道的最内侧车道(需要特殊设置)
另外,渠化还包括加装导流岛、设置待转区等。这些在 netedit 里可以通过添加「额外元素」来实现,比如用 poi 或 poly 来画导流岛的轮廓。不过对于初学者,先把车道连接做好就足够了。
3.4 信号灯配置:给路口装上「大脑」
信号灯配置是 netedit 里最有意思的部分。没有信号灯,交叉口就是「丛林法则」——谁猛谁先走。有了信号灯,交通流才能有序运行。
在 netedit 中配置信号灯,分三步走:
- 创建信号灯:选中交叉口,在属性面板里把
type改为traffic_light - 打开信号灯编辑器:右键交叉口,选择「编辑信号灯」
- 配置相位:设置每个相位的时长和对应的绿灯方向
一个典型的四相位信号灯配置如下:
| 相位 | 绿灯方向 | 时长(秒) | 说明 |
|---|---|---|---|
| 相位 1 | 东西直行 | 30 | 东西方向车辆直行通过 |
| 相位 2 | 东西左转 | 15 | 东西方向车辆左转 |
| 相位 3 | 南北直行 | 30 | 南北方向车辆直行通过 |
| 相位 4 | 南北左转 | 15 | 南北方向车辆左转 |
每个相位之间还要加黄灯时间,一般设 3 秒。这个在 netedit 里可以直接设置 yellow 参数。
3.5 知识体系总览
说了这么多,我画了一张图帮你理清思路。这一章的核心逻辑就是:从路网编辑到优化,每一步都有对应的工具和方法。
这张图把本章的三个核心内容串起来了。你从 netedit 出发,先学会改道路属性,再学会做交叉口渠化,最后配上信号灯。三步走完,一个能跑仿真的路网就出来了。
3.6 实操建议与避坑指南
最后,我结合自己的项目经验,给你几条实操建议:
- 先画主干道,再画支路:别一上来就把所有路都画了。先搭骨架,再填血肉。这样结构清晰,也方便后期调整。
- 每改一个属性,就跑一次仿真:不要攒一堆修改再跑。出了问题你都不知道是哪一步改错了。我习惯改一个参数就保存、仿真、看结果。
- 信号灯配时别太贪心:刚开始用默认的 30 秒绿灯 + 3 秒黄灯就行。等仿真跑顺了,再慢慢优化。
- 善用「撤销」功能:Ctrl+Z 是你的好朋友。我画路网时,经常画着画着发现不对,一个撤销回到上一步,比重新画快多了。
好了,这一讲的内容就到这儿。拿起 netedit,动手画一个简单的十字路口试试。相信我,当你看到第一辆车按照你设定的路线和信号灯规则通过路口时,那种成就感是很爽的。