严正声明:本文系作者davidhopper原创,未经许可,不得转载。
SUMO
全称Simulation of Urban Mobility
,是一个开源、微观、多模态交通仿真模拟软件。
前一篇博客《Ubuntu 16.04系统中SUMO安装方法及简单示例》已经介绍了SUMO
的一个简单示例,但那只是一个玩具,没有任何实用价值。
若从头开始构建自己的网络模型,需要花费的精力很多。是否有一种比较省事的办法,能快速搭建一个相对复杂且实用的网络模型呢?答案是肯定的,基于OpenStreetMap(OSM)就可快速实现该需求。事实上,SUMO
已经为我们提供了一个Python
脚本文件osmWebWizard.py
来完成此任务。然而,如果是通过我上篇博客的方法安装SUMO
,则安装程序中少了很多数据文件,直接使用osmWebWizard.py
必然报错,错误信息类似如下:
要解决该问题,必须下载额外的数据文件。本文将具体介绍基于OSM
创建并运行SUMO
网络模型的具体操作步骤。
一、下载SUMO
源代码
使用Ctrl+Alt+T
打开一个命令终端,切换到一个合适的目录,然后使用Git
下载源代码:
cd ~/code
git clone git@github.com:eclipse/sumo.git
在前一篇博客中,我们安装的版本是0.32.0
,因此我们需要把该版本签出,命令如下:
# 切换到sumo源代码目录
cd ~/code/sumo
# 查看标签列表
git tag --list
# 签出标签v0_32_0并在本地同步建立v0_32_0分支
# -b后第一个参数表示分支名,第二个参数表示标签名
git checkout -b v0_32_0 v0_32_0
# 查看本地分支,确认目前处于v0_32_0分支
git branch
二、将SUMO
源代码中的data
目录复制到/usr/share/sumo
目录
若使用我前一篇博客的安装方法,则默认的安装根目录位于/usr/share/sumo
,如果通过其他方法安装,位置不一定与此相同,可以借助如下命令查找:
sudo find / -name sumo
使用如下命令,将将SUMO
源代码中的data
目录复制到/usr/share/sumo
目录:
sudo cp -r ~/code/sumo/data/ /usr/share/sumo
# 查看是否复制成功
cd /usr/share/sumo
ll | grep data
如果出现类似如下信息,则表明复制成功:
drwxr-xr-x 7 root root 4096 8月 13 10:45 data/
三、借助osmWebWizard.py
生成并运行SUMO
网络模型
使用如下命令执行osmWebWizard.py
:
cd ~/code/sumo-exercise/osm
python /usr/share/sumo/tools/osmWebWizard.py
会在浏览器中出现如下界面:
按照下图提示设置并生成SUMO
网络模型:
生成过程中会出现一些警告信息,不必理会。如果生成过程顺利,命令行终端中最后的提示信息类似如下:
并且在当前目录(我运行在~/code/sumo-exercise/osm
目录)以当前时间戳生成一个文件夹(类似于2018-08-13-11-34-19
),里面存放着下载的OSM
地图数据以及转换后的SUMO
网络模型文件。
注意:一定要保持网络畅通,否则无法顺利下载地图并生成SUMO
网络模型。我有好几次长时间停在那里不动,最后发现是网络原因导致。根据我的实践,如果使用代理,生成速度会相对较快;如果不使用代理,需要很长时间才能完成。
接下来,还会打开sumo-gui
窗口,如下图所示:
点击界面中的播放按钮(如下图所示),运行刚才生成的模型: