之前我们说过osm格式文件拥有四个主要元素:其中包括node、way、relation和tag。
那么从osm格式文件映射到net文件中,必然会存在一些对应关系。
1.首先我们来看一下关于节点node上的对应关系。在sumo的net文件中,并不存在node元素,其对应存在的是junction(路口)。
从一个实际例子入手:
.osm格式文件:
<node id="2473907617" visible="true" version="2" changeset="81818043" timestamp="2020-03-05T10:35:01Z" user="XD346" uid="4892967" lat="22.7947984" lon="113.9483788"/>
.net.xml文件:
<junction id="2473907617" type="priority" x="896.06" y="1728.27" incLanes="239609617#3_0 -239609617#4_0 778519562#1_0" intLanes="……" shape="……"> <……>
我们可以发现:
1.节点编号没变,这说明原本的node元素映射到net文件中时,变为了junction元素。
2.但是原本在.osm格式文件中的经纬度坐标在.net.xml文件中变成了XY坐标
查询之后了解到了原因:SUMO中采用的是笛卡尔坐标,如果原始路网未使用笛卡尔坐标和/或度量坐标,则在导入时,netconvert会投影网络,而在上一节我们了解过,osm路网中采用的是大地地理坐标。
2.其次再来看一下osm格式文件中的way元素对应成了什么。
答案是edge。
从一个实际例子入手:
.osm格式文件:
<way id="778519562" visible="true" version="4" changeset="142277965" timestamp="2023-10-07T17:20:37Z" user="Obanazawa Kuri" uid="17453820"> <nd ref="7266018619"/> <……> <tag k="highway" v="secondary"/> <tag k="name" v="圳美一路"/> <tag k="oneway" v="yes"/> </way>
.net.xml文件:
<edge id="778519562#0" from="7266018619" to="10995087876" priority="11" type="highway.secondary" spreadType="center"> <lane id="778519562#0_0" index="0" disallow="tram rail_urban rail rail_electric rail_fast ship" speed="27.78" length="119.47" shape="833.29,1966.82 863.70,1851.28"/> </edge>
我们可以发现:
1.映射到net文件中时,way与edge的ID几乎是一样的,但是#后面出现的数字代表了什么?
这是由于sumo生成net文件时,会自动将路段进行打断,分成第0段,第1段,第2段……
而osm格式文件本身的道路是没有打断过,这也解释了为什么从openstreetmap中一开始得到的路网,会超出用户想要的边界之外了。因为没有打断,所以你明明只截了一部分,但它就是会把这条路都下载给你……
‘#0’:路网文件通过节点将道路打断后,对该道路上的各条路段进行编号
3.接着看relation:
我反反复复看net文件也没找到一个完全对的上的元素,只有connection(道路转向设置)从定义上来说在一定程度上也展现了路段之间的关系,然而真的对比起来又会发现毫无关系……(如果对这点有研究的小伙伴欢迎和我讨论~)
从一个实际例子入手:
.osm格式文件:
<relation id="14960658" visible="true" version="1" changeset="129642624" timestamp="2022-12-02T12:22:24Z" user="Claudius Henrichs" uid="18069"> <member type="node" ref="10228156815" role=""/> <……> <tag k="name" v="圳美"/> <tag k="name:en" v="Zhenmei"/> <tag k="public_transport" v="stop_area"/> <tag k="type" v="public_transport"/> </relation>
.net.xml文件:
<connection from="1024772868#1" to="1024772868#2" fromLane="0" toLane="0" via=":9449350154_5_0" dir="s" state="="/>
从关系上看两种格式文件:两者描述的关系并不一致!
考虑原因:.osm文件描述地图中路段、节点等元素的关系,从而反映地理信息相关关系。 .net.xml文件映射到SUMO当中时,地理信息全部消失,因此其只展现道路转向,车道连接的关系信息。
tag(标签)信息在.net.xml文件也随之消失,所以后面我就不介绍tag了。
4.那么我们用openstreetmap和sumo里的图进行对比看看:
从节点上看:节点已被全部打断,并用红色点进行表示
从路段上看:
1.建筑物的边界线消失(但这只是在路网文件中没有,因为我之前导入过地形文件,所以在仿真文件中存在)
2.路段上的车道已区分好
3.中央分隔带的道路在路网中被隔开
4.根据路网中道路的不同服务类型,通过形状、灰度进行划分