提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
我是从这里学来的。虽然我不喜欢咖喱味的英语,但是不得不承认他们在计算机这方面确实很厉害,youtube上面好多印度人的教程
一、道路数据获取
使用Open Street Map来获取osm数据,也就是道路数据。里面可以手动选取区域。不过我不知道怎么进行简化,因为直接选取之后感觉很复杂
我获取的是朝阳区的数据,然后我命名为chaoyang.osm,并另存在一个空的文件夹里面(这里面的py文件不用管,之后要用到)
二、文件类型转换
用以下的命令来进行转换,这个是从SUMO官方帮助文档里面找到的。
netconvert --osm-files berlin.osm.xml -o berlin.net.xml
然后将里面的第一个文件写成自己现有的osm文件,后面写成想要的名字。对我来说就是写成
netconvert --osm-files chaoyang.osm -o chaoyang.net.xml
为了能够执行,要打开命令行窗口,然后cd/ d
到自己建的新文件夹
之后输入那一长串指令
显示Success,说明成功了,然后我们在SUMO中打开
我暂时还不知道怎么把这个铁路省略掉,不过现在取得了道路信息了
1. --geometry.remove指令尝试
官方解释: --geometry.remove:Simplifies the network (saving space) without changing topology
翻译:在不改变拓扑的情况下简化网络(保存空间)
输入netconvert --osm-files chaoyang.osm -o chaoyang_1.net.xml --geometry.remove
结果如下
看不出来哪里简化了感觉…不过还是先用着吧
代码如下(示例):
2.其他指令
–junctions.join : See #Junctions
–tls.guess-signals --tls.discard-simple --tls.join : See #Traffic_Lights
–tls.default-type actuated : Default static traffic lights are defined without knowledge about traffic patterns and may work badly in high traffic
网站,有时间我再尝试
三、加入随机车辆
现在要用到一开始我文件夹里面的那个randomTrips.py文件
他存放在SUMO安装目录下的一个地方,至于在什么具体位置,可以用Everything找一下,这个找起来挺方便的
接下来用这个指令
py C:\Users\zqf\Desktop\myBigC\randomTrips.py -n chaoyang.net.xml -r chaoyang.rou.xml -e 50 -l
指令
官方指令解释,我只给出几个我能看懂的
- -n是给定的路网文件
- -b是开始的时间
- -e是结束的时间
- -p是重复率每秒,代表了生成车的多少
例子-b t0 -e t1 -p ((t1 - t0) / n)
表示从to到t1时间里有n辆车出发 - –random:随机生成,不然每次一样
- –seed < INT >:随机的种子
官方给出的解释:“randomTrips.py” generates a set of random trips for a given network (option -n). It does so by choosing source and destination edge either uniformly at random or with a modified distribution as described below. The resulting trips are stored in an XML file (option -o, default trips.trips.xml) suitable for duarouter which is called automatically if the option (with a filename for the resulting route file) is given. The trips are distributed evenly in an interval defined by begin (option -b, default 0) and end time (option -e, default 3600) in seconds. The number of trips is defined by the repetition rate (option -p, default 1) in seconds. Every trip has an id consisting of a prefix (option --prefix, default “”) and a running number.
加入人
--pedestrians
:create a person file with pedestrian trips instead of
vehicle trips
生成一个全是人的文件而不是车辆。感觉很有用,不过不知道能不能和上面的那个车辆重叠起来用…我先 生成 一个好了
总体指令如下
py C:\Users\zqf\Desktop\myBigC\randomTrips.py -n chaoyang.net.xml -r chaoyang_person.rou.xml -e 50 -p 0.25 --pedestrians
这里用了-p 0.25,根据上面讲的,应该是(50-0)/200,也就是有200人冒出来了
搞一个配置文件
搞不懂为什么不能直接自动生成,也许是我不知道吧,我看的油管教程里面还要自己复制上去…太麻烦了。命名为XXX.sumocfg。然后点开就可以看到小车了
<configuration>
<input>
<net-file value="chaoyang.net.xml"/>
<route-files value="chaoyang.rou.xml"/>
</input>
<time>
<begin value="0"/>
</time>
</configuration>
总结
太累了。以下为未解决问题
- 怎么把osm文件里面的铁路啥的剔除掉,简化道路
- 怎么把车辆轨迹和人轨迹放在一起。我知道可以在源文件复制过去,但是我觉得可能会有更加直接的方法