SUMO文档008:高级教程(中)

来源:互联网 发布:网络黑分提现 编辑:程序博客网 时间:2024/06/05 21:59


OpenStreetMap是一个可利用的真实世界的地图数据。这部分教程将会展示:

1、如何准备OpenStreetMap数据用于仿真

2、以及如何导入地图到SUMO。

你也可以通过以下页面寻找有用信息:OpenStreetMap fileNetworks/Import/OpenStreetMapand Networks/Import/OpenStreetMapDownload.

准备OpenStreetMap地图数据


教程的第一步就是获取可以是汽车行驶的地图。如果你不想进行这项工作,你可以访问: Tutorials/OSMActivityGen/eichstaett.osm。页面已经准备好了文件。

得到一个OpenStreetMap,你可以使用网站或者JOSM导出功能。都可以保存一个选择的对象(通常是给定的一个矩形范围内)到一个文件:一个OpenStreetMap file文件。你可以使用这个文件作为SUMO仿真的地图文件。

OpenStreetMap数据经常并不是完全适合仿真。为了更好的仿真效果,地图通常必须加强。我建议你按照以下步骤操作:

1、在OpenStreetMap直接完成地图。按照这个页面的指导进行区域制作。他们给了提示,什么软件可以使用或者如何编码地图的参数。你应该确保地图包含交通仿真的全部数据。(在这个阶段,只填写别人很好理解的正确数据。不要仅仅为了你的模拟调整。如下所示)

在给定的例子Eichstätt市中心,我发现很多的街道已经在地图上了并且很适合我的仿真。因此我只查看地图上街道的标签tag(描述属性),并没有增加新的街道。我通过JSOM打开地图进行查看,纠正一下属性:

l  街道的类型(重要的)通过一个标签highway定义。这个参数帮助SUMO去决定内含的速度限制和右车道规则。

l  那些不同于隐含的管理的限制(比如交通信号灯的速度限制)的所有限速道路应该有一个标签maxspeed。正确的速度可以帮助SUMO寻找合适的路由通过道路网络。

l  单向的街道对交通流有着显著的影响。他们可以标记在OpenStreetMap的键值对:oneway=yes来实现。

l  在模拟中,车道数目的正确可以避免不切实际的交通拥堵。标签lanes表明了道路的全部车道数目,两个方向都包括。因此,在OpenStreetMap中你不能描述几种复杂的车道设置(比如另个车道一个方向,另一个车道右转,一个车道另一个方向)。他们只能在SUMO network file 文件中定义或者写入相应的 SUMOXML description files描述文件。那种车道设置已经超出本教程,这里不做详细讲解。

l  在OpenStreetMap中,交通灯是通过键值对value=traffic_signals定义的点。每个交通灯都是相互独立的。你不能在一个大的区域中联合几个相关联的交通信号灯。然而,问价包含了这样的复杂逻辑和转换,试着去发现那些相互依存的交通信号灯,通过选项—try-join-tls(更多信息 #Convertthe Map in the SUMO Net Format)。

l  最后浏览JOSM的警告提示(warning),很多警示并不会影响你的工作,但是一些会帮助你找到地图中潜在的错误(比如未连接的道路)。

经过上面的步骤,定期上传你的修改至OpenStreetMap,避免与其他编辑修改冲突。

2、现在OSM的地图已经质量可靠,可以用于模拟。下一步你应该检查细节并输出为 OpenStreetMap fileOSM文件。从现在开始不要再上传这个地图至OpenStreetMap

3、最后,你可以根据你的意图增强你的地图:在JSOM中打开OpenStreetMap文件。找到街道末尾的正确节点,移除没必要的物体(处于需求细节的考虑)。在 Networks/Import/OpenStreetMap#Editing OSMnetworks 部分描述了清洗OSM文件的详细操作。但是事实上,很多清洗工作是通过netconvert进行的(#Convert the Map in the SUMO Net Format )。你能够按照你的意愿任意改变地图,比如,增加或者删除道路、改变他们的类型、…….等。

现在,你已经有了可用于仿真的OSM文件,上面的图就是本教程用于仿真的地图数据。你可以下载 download the map(eichstaett.osm) 接着跟着教程做。

OSM有广泛的格式去描述一个地图,但是SUMO有他自己的格式: SUMO network format.。因此,我们首要任务就是将OSM文件转换为SUMO网络文件。下面的两个步骤引导逆完成转化的过程。

配置地图的隐式属性

在OpenStreetMap文件中,公路属性隐式地确定了一些其他属性的值,比如速度设置。你必须告诉SUMO这些隐藏的属性,保存于edge SUMO edge type file文件。它根据高速类型分配默认的属性值,道路的限制速度、车道数、优先级、单车道路和允许的车辆级别。文章 SUMO edge type file提供了几种提前定义的SUMO边类型文件的方法并且解释了你如何去编译你自己的边类型文件。

因此,在教程的这一部分通过OpenStreetMapcommunity去决定高速类型的隐藏值。检查是否有模板符合你的要求或者自己编译自己的文件。在这里,我使用的是 osm-urban-de.typ.xml文件。下载开始下一个步骤。

转换map为SUMO Network

现在你能够生成一个 SUMO network file。按照如下命令:

netconvert --xml-type-files osm-urban-de.typ.xml --osm-files eichstaett.osm --output-file eichstaett.net.xml

netconvert从OSM文件(观察图片:Tutorials/OSMActivityGen/eichstaett.osm)中提取仿真相关的信息然后输出为SUMO网路文件( 相关的信息Tutorials/OSMActivityGen/eichstaett.net.xml )。在处理过程中,增加了一些假设关于交通信号灯,在节点(junction)处车道之间的连接。可以阅读更多信息通过: NETCONVERTNetworks/Import/OpenStreetMap and SUMO Road Networks.

The map stored in the file eichstaett.net.xml. In this map,SUMO runs its simulation. Compare it with its source, the OpenStreetMap fileshown in the image above.

我发现netconvert的一下选项对OSM文件导入很有用:

--guess-ramps

猜测在路口有两个进入和一个即将离任的道路上的坡道。

--remove-deges.by-vclass

在SUMOedge type 文件中,你可以丢弃某个特性类型的道路。另外,SUMO能够丢去运行特定车辆类别的道路。这些类别的选项在页面 SUMO edge type file 给出,你能找到特定类型的车辆。

--remove-geometry

移除没必要的节点(node)。这些节点没有进入和驶出或者点分裂边。(在OSM中,点是组成写到形状必须的,但是在SUMO文件中他们仅仅在结点junction中有用)。提醒:这样做可能会将你想保留的道路剔除,因此请检查netconvert的信息。

--remove-isolated

剔除与保留网络无关的道路。这个选项可以帮助你发现OSM文件中的错误(未连接的道路)。提醒:这样做可能会将你想保留的道路剔除,因此请检查netconvert的信息。

--try-join-tls

如果可能的话,交通灯的集群结(Clusters junctions ),并加入交通灯逻辑。

-verbose

打印增加附加输出。有时候有用,有时候会变得混乱。

 

由于OSM文件丢失了一些仿真模拟必须的信息,因此命令--guess-ramps 和 -try-join-tls  是非常有用的。当加入这些命令后,netconvert试着去猜这些信息。--remove-isolated 可以用于发现OSM文件中的错误。 --remove-geometry用于清理SUMO网路文件中的nodes。因此,如果只想仿真模拟特性车辆类型,可以通过 --remove-edges.by-vclass 命令实现。

总之,我使用一下命令生辰SUMO文件(the SUMO network fileTutorials/OSMActivityGen/eichstaett.net.xml from OpenStreetMap fileTutorials/OSMActivityGen/eichstaett.osm. )。参数有点多,你可以考虑用一个配置文件代替:

netconvert --xml-type-files osm-urban-de.typ.xml --guess-ramps --remove-edges.by-vclass hov,taxi,bus,delivery,transport,lightrail,cityrail,rail_slow,rail_fast,motorcycle,bicycle,pedestrian --geometry.remove --remove-edges.isolated --try-join-tls --verbose --osm-files eichstaett.osm --output-file eichstaett.net.xml

现在,仔细阅读输出信息。试着去理解这些warning。他们给你提示,如何提高你的OSM文件使得其很合适的被转变。返回JSOM锁定错误或者调整地图的转换。比如在这个过程中我发现了未连接的道路。因为如果两个结点离得太近会有问题,我也剔除了一些结点。最终,转换过程没有任何一个warning。(上面提供的 eichstaett.osm文件已经是改进后的了)

 

恭喜!当你操作了以上的步骤,你已经拥有了适合SUMO仿真模拟的地图文件。它符合SUMO network format。教程例子的地图在这里:Tutorials/OSMActivityGen/eichstaett.net.xml.。Above on the right, you see an image that visualises thefile. I opened eichstaett.net.xml with the program sumo-gui and took ascreenshot.

 

当你回头看你的这些操作,很多都是必须的。好的地图很难获得,但是非常重要的。

 

1 0
原创粉丝点击