OpenDrive地图格式解析——案例分析
目录
- 基本介绍
- header
- 道路
- 道路类型
- 道路高程
- 车道
基本介绍
opendrive是一种高精度地图的规范格式,也就是说在制作地图时按官网给的方式写入地图数据,就是一张opendrive格式的高精度地图了。
opendrive可以导入许多仿真软件中,比如说preScan、VTD、Sumo等等,前两者要求都是1.4版本的opendrive地图,Sumo有转换工具。
官方教程里给的示例在网站上搜不到,这里分析自己写的一个1.4版本下的.xodr文件小例子,便于大家理解。
示例中缺少数值,可以按自己的道路要求填写数值,建议对照1.4版本的教程来看,不同版本具有一定差异。
<?xml version="1.40" encoding="utf-8"?>
首先是版本声明和编码,这里声明了为1.4版本。
header
<OpenDRIVE><header date="2021-11-30T09:31:32.641336" revMajor="1" revMinor="4" name="1" version="1.4"></header>...
</OpenDRIVE>
总体部分需要在OpenDRIVE节点下。首先是header头声明,介绍了一些基本属性,可以对照教程了解属性信息。
道路
<OpenDRIVE><header date="2021-11-30T09:31:32.641336" revMajor="1" revMinor="4" name="1" version="1.4"></header><road name="1" length="2860.018" id="1" junction="-1">
...</road>
</OpenDRIVE>
新增了道路节点,为必要节点,有几条道路就写几条这样的节点。道路中声明了道路名、道路总长、道路id、交叉口编号,如果这条道路为交叉口的其中一条,则junction等于交叉口id,若不连入交叉口则为-1.
道路类型
<type><speed max=" " unit="m/s"/></type><planView><geometry s="0.0" x=" " y=" " hdg=" " length=" "><line/></geometry><geometry s="" x=" " y=" " hdg="" length=""><arc curvature=" "/></geometry></planView>
道路节点内包含了type节点,非必要,定义了道路的类型,内含限速等等子节点。
其次是planView参考线节点,必要节点,参考线由多个直线、螺旋线、曲线或其他复杂线形组成,geometry中s表示该线形起点的里程,x、y是坐标、hdg是航向角,表示和x坐标间的角度,逆时针为正、顺时针为负,以弧度表示。
曲线中包含了曲率curvature,为半径的倒数;螺旋线中以起点曲率和终点曲率表示。
道路高程
...<elevationProfile><elevation s="0" a=" " b="-0.003" c="0.0000000000000000e+00" d="0.0000000000000000e+00"/><elevation s="45" a=" " b="-0.003" c="0.0000000000000000e+00" d="0.0000000000000000e+00"/></elevationProfile><lateralProfile><shape s="0.0000000000000000e+00" t="-20.0000000000000000e+00" a=" " b=""c="0.0000000000000000e+00"d="0.0000000000000000e+00"/><shape s="0.0000000000000000e+00" t="-15.0000000000000000e+00" a="" b="" c="0.0000000000000000e+00" d="0.0000000000000000e+00"/><shape s="0.0000000000000000e+00" t="-1.5000000000000000e+00" a="" b="" c="0.0000000000000000e+00"d="0.0000000000000000e+00"/>...<shape s="0.0000000000000000e+00" t="15.0000000000000000e+00"a=" " b="0.03" c="0.0000000000000000e+00"d="0.0000000000000000e+00"/>
</lateralProfile>
...
再是高程节点elevationProfile,高程的每一次变化都记录在一个elevation节点中。
道路中的路拱横坡常用lateralProfile下的shape表示。从道路右边按t往左推进。
车道
...
<lanes><laneSection s="0"><left><lane id="3" type="driving" level="false" ><width sOffset="0.0000000000000000e+00" a="3.75" b="0" c="0" d="0"/><roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="0.15"/> </lane><lane id="2" type="median" level="false" > <width sOffset="0.0000000000000000e+00" a="0.5" b="0" c="0" d="0"/><roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="0.2"/></lane><lane id="1" type="median" level="false" ><width sOffset="0.0000000000000000e+00" a="1" b="0" c="0" d="0"/> <roadMark sOffset="0.0000000000000000e+00" type="grass" weight="standard" color="standard" width="0.2"/></lane></left><center><lane id="0" type="driving" level="false"></lane></center><right><lane id="-1" type="median" level="false" ><width sOffset="0.0000000000000000e+00" a="1" b="0" c="0" d="0"/<roadMark sOffset="0.0000000000000000e+00" type="grass" weight="standard" color="standard" width="0.2"/> </lane><lane id="-2" type="median" level="false" ><width sOffset="0.0000000000000000e+00" a="0.5" b="0" c="0" d="0"/> <roadMark sOffset="0.0000000000000000e+00" type="solid" weight="standard" color="standard" width="0.2"/></lane><lane id="-3" type="driving" level="false"><width sOffset="0.0000000000000000e+00" a="3.75" b="0" c="0" d="0"/> <roadMark sOffset="0.0000000000000000e+00" type="broken" weight="standard" color="standard" width="0.15"/></lane></right></laneSection>
</lanes>...
road中必要的lanes车道节点,车道中可以根据车道数量变化等分为多个车道段,以s里程为分段根据,每个车道段中有左、中、右节点,中间车道不能缺少,且id必须为0,左车道id均为正,且按从大到小编写,右车道id均为负,从大到小编写,车道中宽度节点 sOffset是宽度开始定义的节点,如果宽度有变化,可以有多个宽度节点, sOffset代表宽度开始变化的里程。
车道的roadMark节点表示车道标识,type代表类型,基本的有solid、broken、solid-solid等等,roadMark内部还可以定义线形。
由以上节点可以构成一个基本的opendrive地图,上述例子为一条道路的表示,多条道路间还有连接关系需要表示,例如link节点。
除此之外还有object节点,为道路上的物体,如停车位等,还有signal节点,为道路上的标志、信号等。
若在交叉口,则还有一个junction节点。
OpenDrive地图格式解析——案例分析相关推荐
- 基于百度地图记录运动轨迹案例分析与实现
目录## 一.下载百度地图SDK 二. 工程配置 1. 新建Xcode工程 2. 获取Bundle Identifie 3. 申请key 4. 导入框架配置工程 第一步: 引入BaiduMapAPI. ...
- 视频教程-2020年软考网络规划设计师案例分析软考视频教程-软考
2020年软考网络规划设计师案例分析软考视频教程 10年以上软考培训经验,线下培训学员过万人.培训过的课程有:网络规划设计师.网络工程师.信 息系统项目管理师.系统集成项目管理师.信息安全技术.网络技 ...
- opendrive数据格式解析思维导图 , opendrive高精地图是自动驾驶领域使用最为广泛的开源高精地图标准级地图格式
opendrive数据格式解析思维导图 , opendrive高精地图是自动驾驶领域使用最为广泛的开源高精地图标准级地图格式. 本思维导图将详细剖开高精路网地图内部的数据格式,涵盖:道路.车道.车道段 ...
- OpenDrive格式地图数据解析
OpenDrive地图解析代码可以参考,https://github.com/liuyf5231/opendriveparser OpenDrive地图文件格式为xml,详细的介绍可以参考 http: ...
- 【最新】2019年注册测绘师考试测绘案例分析真题及答案解析
[最新]2019年注册测绘师考试测绘案例分析历年真题及答案解析 [最新]2022年注册测绘师考试测绘案例分析真题及参考答案 [最新]2021年注册测绘师考试测绘案例分析真题及参考答案 [最新]2020 ...
- php 许愿墙 阶段案例_房地产全周期设计管控流程解析及跨部门合作及案例分析...
时间:2021年1月22-23日 地点:北京 授课专家:高炜 联系人:文雯 手机微信:13264559187 课程前言 房地产市场虽已进入"白银时代",但中国的城市化过程并没有结束 ...
- c语言程序大型案例分析,C语言程序设计习题解析与应用案例分析(第2版)
摘要: <C语言程序设计习题解析与应用案例分析(第2版)>从C语言程序设计的基本原理及程序设计的基本思想出发,贯穿"基础-应用"这一主线.<C语言程序设计习题解析 ...
- 员工培训案例分析答案_培训主管的技巧:培训教材问题解析、培训实施分析报告(附案例)...
关注[本头条号]更多关于企业管理.员工激励.薪酬制度.绩效激励等内容免费与你分享!私信"资料"送您关于员工管理.绩效薪酬的干货视频. 培训分析 在本章节中,我们将以某公司实施的员工 ...
- 宿舍管理系统项目管理师_2020下半年信息系统项目管理师真题——案例分析(带解析)...
2020下半年信息系统项目管理师真题--案例分析(带解析~强哥版) 案例分析这次继续是计算题+分析题的分布,但这个题由于理解上有歧义,所以也是大家经常争论的一个题,但无论第一列还是第二列对考分影响不会 ...
- 2021年下半年系统集成项目管理工程师案例分析真题及答案解析
2021年下半年系统集成项目管理工程师案例分析真题及答案解析 试题一(18分) 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内. [说明] A公司承接了某信息系统建设项目,任命小张为项目 ...
最新文章
- nginx日志模块及日志格式
- 转载:DIV+CSS有可能遇到的问题
- 组播技术中IP地址到MAC地址的映射
- java简单线程池实例代码
- QWidget子窗口中setStyleSheet无效,解决方法
- android 云应用开发,Android云应用开发:网络通信技术介绍
- 资讯|WebRTC M89 更新
- 【发现】iframe 放入 Updatepanel 中没有作用,整页总要闪烁一次的解决办法
- 异常处理——zookeeper启动成功,但是zkfcunexpected error, closing socket connection and attempting reconnectjava
- 【终极方法】应对eclipse不支持Tomcat7、8和Tomcat8.5或者更高版本
- python中table表结构_python中的简易表格prettytable
- abaqus失效单元删除_abaqus单元删除的一般方法
- [JavaEE] Hibernate连接池配置测试
- c语言连续生成不同随机数_【转】关于C语言生成不重复的随机数
- [渝粤教育] 西南科技大学 液压与气压传动 在线考试复习资料(1)
- abrt-hook-ccpp占用cpu过大,使用systemctl进行关闭
- Vue下拉列表el-select二级联动效果
- 虚拟化技术-什么是SAN存储?
- Ubuntu18如何下载微信和qq
- 最详细的微信小程序制作方法
热门文章
- CAJ转Word有哪些既免费还不限制页数的转换工具?
- java8中for循环的几种写法
- 《电脑十万个为什么》 第四卷 第一章
- 高考数学答题技巧及常用高中数学解题方法(含答案解析)
- C2 CompilerThread9 长时间占用CPU解决方案
- 函数连续、可导、可微、连续可微
- JS 应用篇(一):Underfined与Null的区别
- 【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(七)2.5 线性表的链式表示和实现1
- 〖Python WEB 自动化测试实战篇⑤〗- selenium 元素定位详解 - (八大元素定位方式)
- Java项目架构的演变