问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OSM格式文件与SUMO中的net文件对比解读

创作时间:
作者:
@小白创作中心

OSM格式文件与SUMO中的net文件对比解读

引用
CSDN
1.
https://blog.csdn.net/lianginging/article/details/137744792

本文详细对比了OSM格式文件与SUMO中的net文件在节点(node)、路段(way)、关系(relation)等元素上的映射关系,并通过具体实例进行说明。

节点(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坐标
  3. 查询之后了解到了原因:SUMO中采用的是笛卡尔坐标,如果原始路网未使用笛卡尔坐标和/或度量坐标,则在导入时,netconvert会投影网络,而在上一节我们了解过,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几乎是一样的,但是#后面出现的数字代表了什么?
  2. 这是由于sumo生成net文件时,会自动将路段进行打断,分成第0段,第1段,第2段……
  3. 而osm格式文件本身的道路是没有打断过,这也解释了为什么从openstreetmap中一开始得到的路网,会超出用户想要的边界之外了。因为没有打断,所以你明明只截了一部分,但它就是会把这条路都下载给你……
  4. ‘#0’:路网文件通过节点将道路打断后,对该道路上的各条路段进行编号

关系(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了。

图形对比

让我们用openstreetmap和sumo里的图进行对比看看:

从节点上看:节点已被全部打断,并用红色点进行表示

从路段上看:

  1. 建筑物的边界线消失(但这只是在路网文件中没有,因为我之前导入过地形文件,所以在仿真文件中存在)
  2. 路段上的车道已区分好
  3. 中央分隔带的道路在路网中被隔开
  4. 根据路网中道路的不同服务类型,通过形状、灰度进行划分
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号