路网编辑与优化:netedit图形化编辑器使用、道路属性修改、交叉口渠化与信号灯配置

好,咱们进入第三讲。说实话,前两讲我们一直在跟文本文件打交道,很多同学会觉得有点枯燥。这一讲就爽了——我们终于可以动手画路了!

netedit 是 SUMO 自带的图形化编辑器。我个人习惯叫它「画图板」,虽然它远不止画图这么简单。你想想看,一个真实的城市路网,几百条道路、几十个交叉口,全靠手写 XML 文件?那得写到猴年马月去。netedit 就是来解决这个问题的。

3.1 启动 netedit 与界面概览

启动方式很简单,在终端里敲一行命令就行:

netedit

或者你想直接打开一个已有的路网文件:

netedit mynetwork.net.xml

界面打开后,你会看到几个主要区域:

  • 画布区:中间最大的那块,用来显示和编辑路网
  • 工具栏:左侧竖着的一排图标,选择、绘制、删除、连接……
  • 属性面板:右侧,选中某个元素后,这里会显示它的详细参数
  • 状态栏:底部,显示当前操作提示和坐标信息
小技巧:我第一次用 netedit 时,找了半天「保存」按钮。其实快捷键 Ctrl+S 就行。另外,鼠标滚轮缩放,按住中键平移——这些跟 CAD 软件的操作习惯很像。

3.2 道路属性修改:从画一条路开始

我们先画一条最简单的路。点击左侧工具栏的「创建边」按钮(一个带加号的折线图标),然后在画布上点两个点,一条路就出来了。

但这条路太「原始」了。我们需要修改它的属性。选中这条路,右侧属性面板会显示一堆参数。我挑几个最常用的说说:

属性名 含义 我的建议值
speed 道路限速(m/s) 城市道路一般设 13.89(约 50 km/h)
numLanes 车道数 双向两车道就设 2,四车道设 4
priority 道路优先级(用于通行规则) 主干道设高一些,支路设低一些
oneway 是否单行道 默认 false,单行道改为 true
width 车道宽度(m) 默认 3.2,我一般不改
重点:速度单位是 m/s,不是 km/h。换算公式:km/h ÷ 3.6 = m/s。比如 60 km/h 就是 16.67 m/s。我曾经有个学生直接填了 60,结果车跑得跟飞机一样快……

嗯,这里要注意:修改属性后,要按回车键确认,或者点击旁边的「应用」按钮。不然你改了等于没改。

3.3 交叉口渠化:让路口更真实

交叉口渠化,说白了就是给路口画上转向车道。你想想看,一个十字路口,左转的车和直行的车挤在一条道上,那不乱套了吗?

在 netedit 里做渠化,核心操作是「连接」(connection)。选中交叉口,然后点击工具栏的「连接编辑器」按钮(一个类似电路节点的图标)。

连接编辑器里,你会看到每个进口道的车道列表。你需要指定每条车道可以通往哪些出口车道:

  • 直行:连接当前车道到对面车道的对应车道
  • 左转:连接当前车道到左侧道路的车道
  • 右转:连接当前车道到右侧道路的车道
  • 掉头:连接当前车道到对面车道的最内侧车道(需要特殊设置)
避坑指南:我曾经在做一个大型路网时,忘了给某个交叉口做左转连接。结果仿真跑起来,所有左转车都在路口中间停着不动,后面的车堵了整整一条街。排查了半天才发现是连接没配。所以,每个交叉口做完后,一定要检查所有转向是否都已配置。

另外,渠化还包括加装导流岛、设置待转区等。这些在 netedit 里可以通过添加「额外元素」来实现,比如用 poi 或 poly 来画导流岛的轮廓。不过对于初学者,先把车道连接做好就足够了。

3.4 信号灯配置:给路口装上「大脑」

信号灯配置是 netedit 里最有意思的部分。没有信号灯,交叉口就是「丛林法则」——谁猛谁先走。有了信号灯,交通流才能有序运行。

在 netedit 中配置信号灯,分三步走:

  1. 创建信号灯:选中交叉口,在属性面板里把 type 改为 traffic_light
  2. 打开信号灯编辑器:右键交叉口,选择「编辑信号灯」
  3. 配置相位:设置每个相位的时长和对应的绿灯方向

一个典型的四相位信号灯配置如下:

相位 绿灯方向 时长(秒) 说明
相位 1 东西直行 30 东西方向车辆直行通过
相位 2 东西左转 15 东西方向车辆左转
相位 3 南北直行 30 南北方向车辆直行通过
相位 4 南北左转 15 南北方向车辆左转

每个相位之间还要加黄灯时间,一般设 3 秒。这个在 netedit 里可以直接设置 yellow 参数。

我的经验:信号灯配时不是拍脑袋定的。我一般会先跑一次仿真,看看各方向的车流量,然后根据流量来调整绿灯时长。流量大的方向多给点时间,流量小的少给点。这叫「按需分配」,跟现实中的交通工程师做法一样。

3.5 知识体系总览

说了这么多,我画了一张图帮你理清思路。这一章的核心逻辑就是:从路网编辑到优化,每一步都有对应的工具和方法。

路网编辑与优化知识体系 netedit 图形化编辑器 道路属性修改 速度 · 车道数 · 优先级 单行道 · 车道宽度 交叉口渠化 车道连接配置 直行 · 左转 · 右转 · 掉头 导流岛 · 待转区 信号灯配置 相位设置 · 绿灯时长 黄灯时间 · 全红时间 目标:构建真实、可仿真的城市路网 编辑 → 渠化 → 信号配时 → 仿真验证

这张图把本章的三个核心内容串起来了。你从 netedit 出发,先学会改道路属性,再学会做交叉口渠化,最后配上信号灯。三步走完,一个能跑仿真的路网就出来了。

3.6 实操建议与避坑指南

最后,我结合自己的项目经验,给你几条实操建议:

  • 先画主干道,再画支路:别一上来就把所有路都画了。先搭骨架,再填血肉。这样结构清晰,也方便后期调整。
  • 每改一个属性,就跑一次仿真:不要攒一堆修改再跑。出了问题你都不知道是哪一步改错了。我习惯改一个参数就保存、仿真、看结果。
  • 信号灯配时别太贪心:刚开始用默认的 30 秒绿灯 + 3 秒黄灯就行。等仿真跑顺了,再慢慢优化。
  • 善用「撤销」功能:Ctrl+Z 是你的好朋友。我画路网时,经常画着画着发现不对,一个撤销回到上一步,比重新画快多了。
曾经踩过的坑:有一次我做完一个大型交叉口的渠化,所有连接都配好了,信号灯也设了。结果仿真时发现,右转车辆一直在路口等红灯。后来才意识到——右转车辆在 SUMO 里默认不受信号灯控制,但如果你在连接编辑器里给右转车道配了信号灯连接,它就会等。所以,右转车道要么不配信号灯连接,要么在信号灯方案里把右转相位设成常绿。

好了,这一讲的内容就到这儿。拿起 netedit,动手画一个简单的十字路口试试。相信我,当你看到第一辆车按照你设定的路线和信号灯规则通过路口时,那种成就感是很爽的。

可可精品资料库