当前位置: 首页 > news >正文

Lanelet2 OSM数据格式详解

Lanelet2 OSM数据格式详解

概述

Lanelet2使用基于OSM(OpenStreetMap)的XML格式来表示高精度地图。该格式采用分层结构,由三个基本元素构成:Node(节点)Way(路径)Relation(关系)

基本结构

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'><node ... /><way ... /><relation ... />
</osm>

一、基础元素

1.1 Node(节点)

Node是最基本的元素,表示地图中的一个三维坐标点。

结构示例
<node id='39000' visible='true' version='1' lat='49.00325488963' lon='8.42401062334' />
关键属性
  • id: 唯一标识符
  • lat: 纬度坐标(WGS84)
  • lon: 经度坐标(WGS84)
  • visible: 可见性标志
  • version: 版本号
高度信息
  • 节点的高度信息可以通过z坐标表示(假设在x-y平面上布局)
  • 高度通常相对于WGS84椭球体
  • 可以采用"2.5D"方式,默认高度为0,仅在桥梁或隧道处设置不同高度
特殊标记

某些节点可以添加type标签来标记特殊含义:

<node id='12345' lat='...' lon='...'><tag k='type' v='begin' />  <!-- 虚线起点 -->
</node>
<node id='12346' lat='...' lon='...'><tag k='type' v='end' />    <!-- 虚线终点 -->
</node>

可用的type值:

  • begin: 虚线的起点
  • end: 虚线的终点
  • pole: 护栏或围栏上单个柱子的位置
  • dot: 组成线条标记的点

1.2 Way(路径)

Way由有序的节点列表组成,节点之间进行线性插值,用于表示物理可观测的地图部分。

结构示例
<way id='43138' visible='true' version='1'><nd ref='4509780735138931930' /><nd ref='39004' /><nd ref='39006' /><tag k='type' v='road_border' />
</way>
关键要素
  • <nd ref='...' />: 引用构成路径的节点
  • <tag k='...' v='...' />: 定义路径的属性和类型
  • Way必须至少包含一个节点
  • Way不能自相交
  • Way不能重复包含相同节点

1.3 Relation(关系)

Relation是Lanelet2的核心结构,用于组合多个元素形成更复杂的地图对象。

结构示例
<relation id='42440' visible='true' version='1'><member type='way' ref='44574' role='left' /><member type='way' ref='44584' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' /><tag k='one_way' v='yes' /><tag k='region' v='de' />
</relation>
成员角色
  • type: 成员类型(way或relation)
  • ref: 引用的元素ID
  • role: 成员在关系中的角色(如left、right、regulatory_element等)

二、直线道路

直线道路在Lanelet2中通过Lanelet relation表示。Lanelet是一个原子性的车道段,表示交通规则不变的单一车道部分。

2.1 基本结构

<relation id='42440' visible='true' version='1'><!-- 左边界 --><member type='way' ref='44574' role='left' /><!-- 右边界 --><member type='way' ref='44584' role='right' /><!-- 标签定义 --><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' /><tag k='one_way' v='yes' /><tag k='region' v='de' />
</relation>

2.2 边界Way定义

左右边界是Way类型,定义了道路的物理边界:

<!-- 实线边界 -->
<way id='44574' visible='true' version='1'><nd ref='39000' /><nd ref='39002' /><nd ref='39004' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' />
</way><!-- 虚线边界 -->
<way id='44584' visible='true' version='1'><nd ref='39010' /><nd ref='39012' /><nd ref='39014' /><tag k='type' v='line_thin' /><tag k='subtype' v='dashed' />
</way>

2.3 关键标签说明

type和subtype
  • type=lanelet: 标识为车道元素
  • subtype: 定义车道类型
    • road: 普通道路
    • highway: 高速公路
    • bus_lane: 公交专用道
    • bicycle_lane: 自行车道
    • emergency_lane: 应急车道
location
  • urban: 城市区域(默认)
  • nonurban: 非城市区域
one_way
  • yes: 单向通行(默认)
  • no: 双向通行

可以针对特定参与者设置:

<tag k='one_way' v='yes' />
<tag k='one_way:bicycle' v='no' />  <!-- 自行车可双向 -->
region
  • 使用ISO 3166-2国家代码,如de(德国)、us(美国)

三、曲线道路

曲线道路的表示方法与直线道路相同,通过Lanelet的左右边界Way实现。曲线由构成Way的多个节点通过线性插值自然形成。

3.1 示例

<!-- 曲线道路的左边界 -->
<way id='43156' visible='true' version='1'><nd ref='53692168671339269' /><nd ref='39090' /><nd ref='40036' /><nd ref='40034' /><nd ref='40032' /><nd ref='40030' /><nd ref='40028' /><nd ref='39082' /><tag k='type' v='road_border' />
</way><!-- 对应的Lanelet -->
<relation id='45000' visible='true' version='1'><member type='way' ref='43156' role='left' /><member type='way' ref='43158' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' />
</relation>

3.2 曲线平滑度控制

通过增加节点密度可以提高曲线的平滑度和精度:

  • 节点越多,曲线越平滑
  • 节点间距取决于曲率半径和精度要求
  • 通常在曲率较大的位置增加节点密度

四、交叉路口

交叉路口在Lanelet2中通过多个Lanelet的连接和RightOfWay(路权)regulatory element来表示。

4.1 交叉路口结构

交叉路口由多个进入和离开的Lanelet组成:

<!-- 进入交叉口的Lanelet -->
<relation id='45100' visible='true' version='1'><member type='way' ref='43620' role='left' /><member type='way' ref='43532' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' />
</relation><!-- 交叉口内的Lanelet -->
<relation id='45102' visible='true' version='1'><member type='way' ref='43622' role='left' /><member type='way' ref='43624' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' />
</relation>

4.2 路权定义(Right of Way)

<relation id='45236' visible='true' version='1'><!-- 参考线(停止线或让行线) --><member type='way' ref='43548' role='ref_line' /><!-- 优先通行的Lanelet --><member type='relation' ref='44968' role='right_of_way' /><member type='relation' ref='44970' role='right_of_way' /><member type='relation' ref='44972' role='right_of_way' /><!-- 需要让行的Lanelet --><member type='relation' ref='45134' role='yield' /><member type='relation' ref='45136' role='yield' /><!-- 引用的交通标志 --><member type='way' ref='81723' role='refers' /><member type='way' ref='81735' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='right_of_way' /><tag k='fallback' v='yes' />
</relation>

4.3 全停(All Way Stop)

用于表示所有方向都需要停车的交叉口:

<relation id='45300' visible='true' version='1'><!-- 参与的Lanelet --><member type='relation' ref='45301' role='yield' /><member type='relation' ref='45302' role='yield' /><member type='relation' ref='45303' role='yield' /><member type='relation' ref='45304' role='yield' /><!-- 停止线(顺序与Lanelet对应) --><member type='way' ref='51280' role='ref_line' /><member type='way' ref='51282' role='ref_line' /><member type='way' ref='51284' role='ref_line' /><member type='way' ref='51286' role='ref_line' /><!-- 停车标志 --><member type='way' ref='44950' role='refers' /><member type='way' ref='44952' role='refers' /><member type='way' ref='44954' role='refers' /><member type='way' ref='44956' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='all_way_stop' />
</relation>

4.4 虚拟线(Virtual)

在交叉口内部,通常使用虚拟线来定义车道边界:

<way id='43720' visible='true' version='1'><nd ref='40100' /><nd ref='40102' /><nd ref='40104' /><tag k='type' v='virtual' />
</way>

虚拟线的特点:

  • 非物理存在的边界线
  • 主要用于交叉口内部分隔不同行驶方向
  • 不允许变道

五、斑马线(人行横道)

斑马线在Lanelet2中被表示为特殊的Lanelet,subtype为crosswalk

5.1 基本结构

<relation id='44986' visible='true' version='1'><member type='way' ref='43488' role='left' /><member type='way' ref='43534' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='crosswalk' /><tag k='location' v='urban' /><tag k='one_way' v='no' />
</relation>

5.2 边界标记

斑马线的边界通常使用pedestrian_marking类型:

<way id='43488' visible='true' version='1'><nd ref='39196' /><nd ref='39046' /><tag k='type' v='pedestrian_marking' />
</way>

5.3 斑马线特征

  • subtype=crosswalk: 标识为人行横道
  • one_way=no: 行人可双向通行
  • participant:pedestrian=yes: 明确指定行人可通行
  • 边界类型为pedestrian_markingzebra_marking

5.4 完整示例

<!-- 斑马线边界1 -->
<way id='43488' visible='true' version='1'><nd ref='39196' /><nd ref='39198' /><tag k='type' v='pedestrian_marking' />
</way><!-- 斑马线边界2 -->
<way id='43534' visible='true' version='1'><nd ref='39200' /><nd ref='39202' /><tag k='type' v='pedestrian_marking' />
</way><!-- 斑马线Lanelet -->
<relation id='44986' visible='true' version='1'><member type='way' ref='43488' role='left' /><member type='way' ref='43534' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='crosswalk' /><tag k='location' v='urban' /><tag k='one_way' v='false' /><tag k='participant:pedestrian' v='yes' />
</relation>

六、交通标志

交通标志通过Way元素表示,并可以被regulatory element引用。

6.1 交通标志Way

<way id='44952' visible='true' version='1'><nd ref='41394' /><nd ref='43122' /><nd ref='43120' /><tag k='type' v='traffic_sign' /><tag k='subtype' v='de206' />
</way>

6.2 交通标志类型

subtype编码规则

采用ISO 3166国家代码 + 标志编号

  • de206: 德国停车标志
  • de301: 德国优先道路标志
  • de205: 德国让行标志
  • usR1-1: 美国停车标志

6.3 交通标志几何表示

方式一:轮廓表示

使用多个节点定义标志的轮廓:

<way id='44960' visible='true' version='1'><nd ref='41400' /><nd ref='41402' /><nd ref='41404' /><nd ref='41406' /><tag k='type' v='traffic_sign' /><tag k='subtype' v='de267' />
</way>
方式二:线段表示

使用两个节点表示标志的左右边缘:

<way id='44954' visible='true' version='1'><nd ref='41398' />  <!-- 左边缘 --><nd ref='43124' />  <!-- 右边缘 --><tag k='type' v='traffic_sign' /><tag k='subtype' v='de301' />
</way>

6.4 可选标签

  • height: 标志的高度(米),表示下边缘
  • width: 标志的宽度(米)
  • 节点的z坐标表示标志的离地高度

6.5 常见交通标志示例

<!-- 停车标志 -->
<way id='44970' visible='true' version='1'><nd ref='41420' /><nd ref='41422' /><tag k='type' v='traffic_sign' /><tag k='subtype' v='de206' />
</way><!-- 限速标志 -->
<way id='44972' visible='true' version='1'><nd ref='41424' /><nd ref='41426' /><tag k='type' v='traffic_sign' /><tag k='subtype' v='de274-30' />  <!-- 限速30 -->
</way><!-- 让行标志 -->
<way id='44974' visible='true' version='1'><nd ref='41428' /><nd ref='41430' /><tag k='type' v='traffic_sign' /><tag k='subtype' v='de205' />
</way>

七、车辆停止线

停止线通过Way元素表示,通常被traffic light或traffic sign regulatory element引用。

7.1 基本定义

<way id='51278' visible='true' version='1'><nd ref='42584' /><nd ref='42586' /><tag k='type' v='stop_line' />
</way>

7.2 在Regulatory Element中的应用

停止线作为ref_line角色被引用:

<!-- 红绿灯regulatory element -->
<relation id='45400' visible='true' version='1'><!-- 停止线 --><member type='way' ref='51278' role='ref_line' /><!-- 红绿灯本身 --><member type='way' ref='44960' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='traffic_light' />
</relation>

7.3 让行线(Yield Line)

让行线的表示方式类似:

<way id='51280' visible='true' version='1'><nd ref='42590' /><nd ref='42592' /><tag k='type' v='yield_line' />
</way>

7.4 停止线特点

  • 由两个节点组成,表示线段
  • type=stop_linetype=yield_line
  • 通常垂直于道路方向
  • 在没有明确停止线时,Lanelet的末端被视为隐式停止线

八、路缘石(Curbstone)

路缘石表示道路边缘与人行道之间的物理分隔。

8.1 基本定义

<!-- 高路缘石 -->
<way id='42397' visible='true' version='1'><nd ref='41280' /><nd ref='41282' /><tag k='type' v='curbstone' /><tag k='subtype' v='high' />
</way><!-- 低路缘石 -->
<way id='43146' visible='true' version='1'><nd ref='39048' /><nd ref='39050' /><tag k='type' v='curbstone' /><tag k='subtype' v='low' />
</way>

8.2 路缘石类型

subtype分类
  • high: 高路缘石,车辆无法驶过
  • low: 低路缘石,车辆可以驶过(但通常不建议)

8.3 路缘石与道路边界的区别

<!-- 路缘石:另一侧有可通行空间(如人行道) -->
<way id='43154' visible='true' version='1'><nd ref='39040' /><nd ref='39078' /><tag k='type' v='curbstone' />
</way><!-- 道路边界:标志道路的绝对边缘 -->
<way id='43150' visible='true' version='1'><nd ref='39042' /><nd ref='39066' /><tag k='type' v='road_border' />
</way>

关键区别:

  • curbstone: 表示存在可通行区域(人行道等)
  • road_border: 表示可通行区域的绝对终点

8.4 可选属性

<way id='43160' visible='true' version='1'><nd ref='39100' /><nd ref='39102' /><tag k='type' v='curbstone' /><tag k='subtype' v='high' /><tag k='height' v='0.15' />    <!-- 高度15厘米 --><tag k='width' v='0.20' />     <!-- 宽度20厘米 -->
</way>

九、虚拟线(Virtual Line)

虚拟线表示非物理存在的车道边界,主要用于交叉口和复杂路段。

9.1 基本定义

<way id='43720' visible='true' version='1'><nd ref='40100' /><nd ref='40102' /><nd ref='40104' /><tag k='type' v='virtual' />
</way>

9.2 应用场景

1. 交叉口内部

在交叉口中分隔不同行驶方向:

<!-- 交叉口Lanelet使用虚拟线作为边界 -->
<relation id='44972' visible='true' version='1'><member type='way' ref='43720' role='left' /><member type='way' ref='43654' role='right' /><member type='relation' ref='45236' role='regulatory_element' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' />
</relation>
2. 车道合并/分离区域

在车道数量变化的区域使用虚拟线:

<way id='43722' visible='true' version='1'><nd ref='40110' /><nd ref='40112' /><nd ref='40114' /><tag k='type' v='virtual' />
</way>

9.3 虚拟线特性

  • 不对应任何物理标记
  • 不允许车辆变道穿越
  • 主要用于逻辑上分隔车道
  • 帮助路径规划算法理解道路拓扑

十、其他道路元素

10.1 道路边界(Road Border)

<way id='43150' visible='true' version='1'><nd ref='39042' /><nd ref='39066' /><nd ref='39068' /><nd ref='39040' /><tag k='type' v='road_border' />
</way>

表示道路可通行区域的绝对边界,通常是植被、护栏或墙壁的起点。

10.2 护栏(Guard Rail)

<way id='43800' visible='true' version='1'><nd ref='40500' /><nd ref='40502' /><nd ref='40504' /><tag k='type' v='guard_rail' /><tag k='height' v='1.0' />
</way>

10.3 墙壁和围栏

<!-- 墙壁 -->
<way id='43810' visible='true' version='1'><nd ref='40510' /><nd ref='40512' /><tag k='type' v='wall' />
</way><!-- 围栏 -->
<way id='43820' visible='true' version='1'><nd ref='40520' /><nd ref='40522' /><tag k='type' v='fence' />
</way>

10.4 交通灯

<way id='44960' visible='true' version='1'><nd ref='43136' /><nd ref='45641' /><nd ref='40906' /><tag k='type' v='traffic_light' /><tag k='subtype' v='red_yellow_green' />
</way>
交通灯子类型
  • red_yellow_green: 标准三色灯
  • red_yellow: 红黄两色灯
  • red: 仅红灯
  • pedestrian: 行人信号灯

10.5 道路箭头标记

<way id='44970' visible='true' version='1'><nd ref='40600' /><nd ref='40602' /><tag k='type' v='arrow' /><tag k='subtype' v='straight' />
</way>
箭头类型
  • left: 左转箭头
  • right: 右转箭头
  • straight: 直行箭头
  • straight_left: 直行或左转
  • straight_right: 直行或右转
  • left_right: 左转或右转

10.6 路面标记符号

<!-- 速度限制标记 -->
<way id='44980' visible='true' version='1'><nd ref='41380' /><nd ref='43134' /><nd ref='43132' /><tag k='type' v='symbol' /><tag k='subtype' v='30' />
</way><!-- 减速带 -->
<way id='44990' visible='true' version='1'><nd ref='40700' /><nd ref='40702' /><tag k='type' v='bump' />
</way><!-- 锯齿线 -->
<way id='45000' visible='true' version='1'><nd ref='40710' /><nd ref='40712' /><tag k='type' v='zig-zag' />
</way>

10.7 禁止区域(Keep Out)

<way id='45010' visible='true' version='1'><nd ref='40800' /><nd ref='40802' /><nd ref='40804' /><tag k='type' v='keepout' />
</way>

10.8 自行车道标记

<way id='45020' visible='true' version='1'><nd ref='40900' /><nd ref='40902' /><tag k='type' v='bike_marking' /><tag k='subtype' v='dashed' />
</way>

10.9 铁轨

<way id='45030' visible='true' version='1'><nd ref='41000' /><nd ref='41002' /><nd ref='41004' /><tag k='type' v='rail' />
</way>

十一、道路线条标记详解

11.1 线条类型总览

typesubtype描述允许变道?
line_thinsolid实线
line_thinsolid_solid双实线
line_thindashed虚线
line_thindashed_solid左虚右实左→右:是
line_thinsolid_dashed左实右虚右→左:是
line_thick(同上)粗线(同上)

11.2 实线标记

<!-- 细实线 -->
<way id='42521' visible='true' version='1'><nd ref='40304' /><nd ref='40188' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' />
</way><!-- 粗实线 -->
<way id='42523' visible='true' version='1'><nd ref='40310' /><nd ref='40312' /><tag k='type' v='line_thick' /><tag k='subtype' v='solid' />
</way>

11.3 虚线标记

<way id='42525' visible='true' version='1'><nd ref='40320' /><nd ref='40322' /><nd ref='40324' /><tag k='type' v='line_thin' /><tag k='subtype' v='dashed' />
</way>
虚线段标记

可以在节点上标记虚线的起止点:

<node id='40320' lat='...' lon='...'><tag k='type' v='begin' />  <!-- 虚线段起点 -->
</node>
<node id='40322' lat='...' lon='...'><tag k='type' v='end' />    <!-- 虚线段终点 -->
</node>

11.4 混合线标记

<!-- 虚实线(左虚右实) -->
<way id='42530' visible='true' version='1'><nd ref='40330' /><nd ref='40332' /><tag k='type' v='line_thin' /><tag k='subtype' v='dashed_solid' />
</way><!-- 实虚线(左实右虚) -->
<way id='42532' visible='true' version='1'><nd ref='40340' /><nd ref='40342' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid_dashed' />
</way>

11.5 双实线

<way id='42535' visible='true' version='1'><nd ref='40350' /><nd ref='40352' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid_solid' />
</way>

11.6 可选标签

<way id='42540' visible='true' version='1'><nd ref='40360' /><nd ref='40362' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' /><tag k='width' v='0.10' />        <!-- 线宽10厘米 --><tag k='color' v='white' />       <!-- 白色(默认) --><tag k='temporary' v='no' />      <!-- 非临时标记 -->
</way>

11.7 覆盖变道规则

<!-- 方式1:双向允许变道 -->
<way id='42550' visible='true' version='1'><nd ref='40370' /><nd ref='40372' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' /><tag k='lane_change' v='yes' />
</way><!-- 方式2:指定方向变道 -->
<way id='42552' visible='true' version='1'><nd ref='40380' /><nd ref='40382' /><tag k='type' v='line_thin' /><tag k='subtype' v='dashed' /><tag k='lane_change:left' v='yes' /><tag k='lane_change:right' v='no' />
</way>

十二、Regulatory Elements(交通规则元素)

Regulatory Elements是表达交通规则的通用方式,被Lanelet或Area引用。

12.1 基本结构

<relation id='45390' visible='true' version='1'><member type='way' ref='44952' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='speed_limit' />
</relation>

12.2 常用角色

  • refers: 规则的来源(交通标志、交通灯等)
  • cancels: 标记规则结束的元素
  • ref_line: 规则生效的起始线
  • cancel_line: 规则结束的线
  • right_of_way: 有优先权的lanelet
  • yield: 需要让行的lanelet

12.3 速度限制

方式1:引用交通标志
<relation id='45390' visible='true' version='1'><member type='way' ref='44952' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='speed_limit' />
</relation>
方式2:直接指定速度
<relation id='45392' visible='true' version='1'><tag k='type' v='regulatory_element' /><tag k='subtype' v='speed_limit' /><tag k='sign_type' v='50 km/h' />
</relation>

12.4 交通标志规则

<relation id='45400' visible='true' version='1'><!-- 交通标志 --><member type='way' ref='44960' role='refers' /><!-- 规则起始线 --><member type='way' ref='51200' role='ref_line' /><!-- 规则取消标志 --><member type='way' ref='44962' role='cancels' /><!-- 规则结束线 --><member type='way' ref='51202' role='cancel_line' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='traffic_sign' />
</relation>

12.5 交通灯规则

<relation id='45410' visible='true' version='1'><!-- 停止线 --><member type='way' ref='51278' role='ref_line' /><!-- 交通灯 --><member type='way' ref='44960' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='traffic_light' />
</relation>

12.6 应用到Lanelet

Lanelet通过引用regulatory element来关联交通规则:

<relation id='44968' visible='true' version='1'><member type='way' ref='43658' role='left' /><member type='way' ref='43722' role='right' /><!-- 引用多个regulatory elements --><member type='relation' ref='45236' role='regulatory_element' /><member type='relation' ref='45230' role='regulatory_element' /><member type='relation' ref='45224' role='regulatory_element' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' />
</relation>

12.7 动态规则

<relation id='45420' visible='true' version='1'><member type='way' ref='44970' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='speed_limit' /><tag k='sign_type' v='30 km/h' /><tag k='dynamic' v='yes' />  <!-- 动态规则,如"雨天限速" -->
</relation>

12.8 备用规则

<relation id='45430' visible='true' version='1'><member type='relation' ref='45100' role='yield' /><member type='relation' ref='45102' role='right_of_way' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='right_of_way' /><tag k='fallback' v='yes' />  <!-- 备用规则,如"交通灯故障时" -->
</relation>

十三、Area(区域)

Area表示无方向的通行区域,如停车场、广场等。

13.1 基本结构

<relation id='45238' visible='true' version='1'><!-- 外边界(顺时针) --><member type='way' ref='43812' role='outer' /><member type='way' ref='43914' role='outer' /><member type='way' ref='43800' role='outer' /><member type='way' ref='43980' role='outer' /><tag k='type' v='multipolygon' /><tag k='subtype' v='parking' /><tag k='location' v='urban' />
</relation>

13.2 带孔洞的Area

<relation id='45240' visible='true' version='1'><!-- 外边界 --><member type='way' ref='43820' role='outer' /><member type='way' ref='43822' role='outer' /><!-- 内孔洞(逆时针) --><member type='way' ref='43830' role='inner' /><member type='way' ref='43832' role='inner' /><tag k='type' v='multipolygon' /><tag k='subtype' v='parking' />
</relation>

13.3 Area子类型

环境类型:

  • parking: 停车区
  • freespace: 无特定用途的道路区域
  • vegetation: 植被区
  • keepout: 禁止进入区
  • building: 建筑物
  • traffic_island: 交通岛

通行类型:

  • walkway: 人行道
  • shared_walkway: 自行车和行人共享道
  • exit: 车库出口

十四、参与者和权限

14.1 参与者类型

<relation id='45500' visible='true' version='1'><member type='way' ref='43900' role='left' /><member type='way' ref='43902' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='participant:vehicle' v='yes' /><tag k='participant:bicycle' v='yes' /><tag k='participant:pedestrian' v='no' />
</relation>

14.2 车辆细分

<relation id='45510' visible='true' version='1'><member type='way' ref='43910' role='left' /><member type='way' ref='43912' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='bus_lane' /><tag k='participant:vehicle:bus' v='yes' /><tag k='participant:vehicle:emergency' v='yes' /><tag k='participant:vehicle:taxi' v='yes' /><tag k='participant:vehicle:car' v='no' />
</relation>

14.3 速度限制

<relation id='45520' visible='true' version='1'><member type='way' ref='43920' role='left' /><member type='way' ref='43922' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='play_street' /><tag k='speed_limit' v='5 km/h' /><tag k='speed_limit_mandatory' v='yes' />
</relation>
分参与者速度限制
<relation id='45530' visible='true' version='1'><member type='way' ref='43930' role='left' /><member type='way' ref='43932' role='right' /><tag k='type' v='lanelet' /><tag k='speed_limit:vehicle' v='50 km/h' /><tag k='speed_limit:bicycle' v='20 km/h' /><tag k='speed_limit_mandatory:vehicle' v='yes' />
</relation>

十五、高级特性

15.1 临时标记

<way id='45600' visible='true' version='1'><nd ref='42000' /><nd ref='42002' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' /><tag k='temporary' v='yes' /><tag k='color' v='yellow' />
</way>

15.2 道路表面

<relation id='45610' visible='true' version='1'><member type='way' ref='44000' role='left' /><member type='way' ref='44002' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='road_surface' v='asphalt' />
</relation>

道路表面类型:

  • asphalt: 沥青
  • concrete: 混凝土
  • dirt: 泥土
  • gravel: 碎石
  • paved: 铺装

15.3 道路名称

<relation id='45620' visible='true' version='1'><member type='way' ref='44010' role='left' /><member type='way' ref='44012' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='road_name' v='Main Street' />
</relation>

15.4 中心线

Lanelet可以有可选的中心线来引导车辆:

<relation id='45630' visible='true' version='1'><member type='way' ref='44020' role='left' /><member type='way' ref='44022' role='right' /><member type='way' ref='44024' role='centerline' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' />
</relation>

中心线要求:

  • 必须在左右边界形成的区域内
  • 不能接触边界
  • 如果未提供,库会自动计算

十六、最佳实践

16.1 坐标系统

  • 使用WGS84坐标系(lat/lon)
  • 高度相对于WGS84椭球体
  • 节点布局在x-y平面上
  • z坐标用于区分不同高度的道路(桥梁/隧道)

16.2 精度建议

  • 直线路段:节点间距可以较大(5-10米)
  • 曲线路段:增加节点密度以提高平滑度
  • 急转弯:节点间距应小于1米
  • 交叉口:节点密度要高以准确表达几何形状

16.3 连接规则

  • 相邻Lanelet必须共享端点
  • 可变道的Lanelet必须共享一个边界
  • 交叉的虚拟线不需要共享节点

16.4 标签规范

  • 所有标签都使用小写
  • 使用下划线分隔单词
  • 布尔值使用"yes"/“no”
  • 避免使用自定义标签,优先使用预定义类型

16.5 验证检查

使用lanelet2_validation工具检查:

  • 自相交的Way
  • 重复的节点
  • 不合理的Lanelet方向
  • 缺失的必要标签
  • 几何拓扑错误

16.6 性能优化

  • 合理使用节点数量(不要过多或过少)
  • 重用共享的Way和Node
  • 适当使用regulatory element避免重复
  • 为大型地图使用分区存储

十七、完整示例

17.1 简单道路示例

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'><!-- 节点定义 --><node id='1' lat='49.00000' lon='8.40000' /><node id='2' lat='49.00010' lon='8.40000' /><node id='3' lat='49.00020' lon='8.40000' /><node id='4' lat='49.00000' lon='8.40005' /><node id='5' lat='49.00010' lon='8.40005' /><node id='6' lat='49.00020' lon='8.40005' /><!-- 左边界:实线 --><way id='100' visible='true' version='1'><nd ref='1' /><nd ref='2' /><nd ref='3' /><tag k='type' v='line_thin' /><tag k='subtype' v='solid' /></way><!-- 右边界:虚线 --><way id='101' visible='true' version='1'><nd ref='4' /><nd ref='5' /><nd ref='6' /><tag k='type' v='line_thin' /><tag k='subtype' v='dashed' /></way><!-- Lanelet定义 --><relation id='200' visible='true' version='1'><member type='way' ref='100' role='left' /><member type='way' ref='101' role='right' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' /><tag k='one_way' v='yes' /><tag k='region' v='de' /></relation>
</osm>

17.2 带交通灯的交叉口示例

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6'><!-- 节点略... --><!-- 停止线 --><way id='1000' visible='true' version='1'><nd ref='5000' /><nd ref='5001' /><tag k='type' v='stop_line' /></way><!-- 交通灯 --><way id='1001' visible='true' version='1'><nd ref='5010' /><nd ref='5011' /><tag k='type' v='traffic_light' /><tag k='subtype' v='red_yellow_green' /></way><!-- 交通灯regulatory element --><relation id='2000' visible='true' version='1'><member type='way' ref='1000' role='ref_line' /><member type='way' ref='1001' role='refers' /><tag k='type' v='regulatory_element' /><tag k='subtype' v='traffic_light' /></relation><!-- 接近交叉口的Lanelet --><relation id='2001' visible='true' version='1'><member type='way' ref='100' role='left' /><member type='way' ref='101' role='right' /><member type='relation' ref='2000' role='regulatory_element' /><tag k='type' v='lanelet' /><tag k='subtype' v='road' /><tag k='location' v='urban' /></relation>
</osm>

总结

Lanelet2的OSM格式通过NodeWayRelation三层结构实现了高精度地图的表达:

  1. Node提供基础的空间坐标
  2. Way组合节点形成线性或面状的物理特征
  3. Relation组合Way和其他元素形成语义化的道路对象

这种设计使得Lanelet2能够:

  • 精确表达复杂的道路几何形状
  • 灵活定义交通规则和限制
  • 支持多种道路使用者
  • 便于拓展新的元素类型

关键优势:

  • 模块化:每个元素独立定义,可重用
  • 语义化:通过标签明确表达元素含义
  • 可扩展:支持自定义标签和新类型
  • 标准化:基于OSM格式,工具链成熟

建议使用JOSM等编辑器配合Lanelet2的验证工具来创建和编辑地图,确保数据质量和一致性。

http://www.dtcms.com/a/605117.html

相关文章:

  • 分布式系统保证数据强一致性的示例
  • Spring Boot性能提升的核武器,速度提升500%!
  • SOLIDWORKS 2025设计效率的大幅提高
  • 比标准Json库好用——json-iterator
  • 汇编语言编译器的作用 | 探讨汇编编译器的工作原理和实际应用
  • C语言编译器下载地址与安装指南
  • kanass实战教程系列(4) - 产品经理如何使用kanass有效管理需求
  • RLS(递归最小二乘)算法详解
  • 红色好看的网站济南网络推广软件公司
  • mvcc 简介
  • UniApp 商品分类左右联动技术文档
  • pytest 入门指南:Python 测试框架从零到一(2025 实战版)
  • SpringBoot教程(三十三)| SpringBoot集成MinIO
  • 【开题答辩全过程】以 基于.NET MVC的线上鞋服交易系统设计与实现为例,包含答辩的问题和答案
  • MySQL 全体系深度解析(存储引擎、事务、日志、MVCC、锁、索引、执行计划、复制、调优)
  • SpringMVC基础教程(1)--MVC/DispathcerServlet
  • 在streampark运行paimon-flink-action-1.20.0.jar
  • AI得贤面试智能体:重构企业招聘新范式
  • 硅基计划6.0 陆 JavaEE HttpHttps协议
  • 稳定边界层高度参数化方案的回归建模
  • 企业网站推广方法wap网站预览
  • 可以做推广的门户网站wordpress适合中国的小插件介绍
  • Dubbo服务治理全解析:从零搭建高可用微服务架构
  • java List怎么转换为Vector
  • 2023年辽宁省数学建模竞赛-B题 数据驱动的水下导航适配区分类预测-基于支持向量机对水下导航适配区分类的研究
  • 机器学习--KNN算法中的距离、范数、正则化
  • openGauss向量数据库功能实操测评:轻量部署下的高维检索能力
  • php做网站还是linuxseo服务外包费用
  • 《算法通关指南:算法基础篇 ---- 二维前缀和 — 1. 【模板】二维度前缀和,2.激光炸弹》
  • SpringBoot+openGauss DataVec构建高效RAG知识库实践