车辆导航仪

更新时间:2023-01-03 17:40:20 阅读: 评论:0


2023年1月3日发(作者:僧伽)

本科生毕业设计(论文)

I

摘要

随着信息技术的发展,未来汽车用户不仅关心着节油的问题,更关心的是能

安全快速地到达想要去的地方。所以汽车导航系统扮演着越来越重要的角色,规

划出行车路线是汽车导航的一项重要的辅助功能。导航仪的核心部分是地图数据,

本文主要研究的是将地图数据从原始数据格式转换为汽车导航仪应用的数据格式

的过程中,为地图中的线元素(如:河流,航道,道路等)添加文字标记。

地图数据之沿路文字标记是在MicrosoftVisualStudio2005编程软件上实现

的,利用C++语言的类和STL模板库中的vector容器作为主要存储方式,通过对

原始数据的预计算,实现了在转换地图数据的过程中,为线元素添加水平文字标

记。最后在显示数据的软件Mapdatashow上显示出文字标记的具体画面,通过它

来检测出软件编程方面是否有错误。利用Visio软件描画流程图可以更清楚的显

示函数的具体流程。其中函数实现分为两大块:一是如何对路进行切割分段并添

加文字标记,二是如何在Mapdatashow软件上描画出数据的信息,难点是对

Mapdatashow软件程序流程的编写,实现软件的功能,将二进制数据文件放到

Mapdatashow软件里,最终实现在Mapdatashow数据显示软件上显示数据段的文

字标记,依据有路即有名字的标准进行测试。

由于导航仪的内存有限,并且车辆行驶的时候要实时的提示驾驶者下一步要

进行的动作,所以效率对导航仪来说极为重要。如果没有文字标记而单靠导航仪

中的地图显示软件直接计算出最合适的位置后显示名称,不但所耗费的时间很长,

并且占用大量内存,效率会很低。文字标记是先按照一定的规则进行筛选过的少

量的数据,在地图显示软件需要显示某一元素的名称时,只需要在少量的文字标

记中选择合适的显示即可,为导航仪节省了大量开销,减轻了导航仪的负担,从

而使导航仪能够快速稳定的运行。

关键词:汽车导航;地图数据;线元素;文字标记

本科生毕业设计(论文)

II

Abstract

Withthedevelopmentofinformationtechnologygrowing,inthefuture,thecar

ursnotonlycareabouttheoil-savingproblem,butalsocareaboutthecarcantake

arnavigationplaysanimportant

eof

ainlyaboutthemarkhintsforthestring(for

example,theroad,thechannel,theriver)whenconvertedtheoriginaldatabatothe

finaldatawhichcanbeudinthenavigationinthispaper.

MapofthealgorithmoftextdataalongtheroadwasimplementedintheVisual

Studio2005programmingsoftware,usingclassandthevectortemplatelibrarySTL

containersasthemainstoragemodeofthec++language,itwaxpectedtorealize

yinthe

displaydataMapdatashowsoftwaretextelementswasshownonthescreen,according

tothescreen,cific

func

functionrealizationweredividedintotwolarges:thefirstwashowtocutroadblock

andaddtexttags,thecondwashowtopaintdatainformationintheMapdatashow

software,themostdifficultthingwastocompiletheMapdatashowsoftwareflowand

arydatafilewasputinMapdatashow

yitwasrealizedintheMapdatashow,thedatashowedthatthesoftware

datagmentmarker,accordingtowhetherthenameoftheroadwaxistcouldtest

whetherthecomplierwasrightorwrong.

Becauthememoryofthenavigationislimited,sotheproductivenessofthe

navigationisimportant,ifthereisnomarkhint,itonlydependsonthesoftwareofthe

navigationcalculatestherightplacetolayupthename,inthisway,itnotonlycosts

muchtimeandspace,inaccordancewith

thetextwiththerulesofscreeningofasmallamountofdata,inthemapshowsthe

nameoftheelement,soitcansavealotofexpensforthenavigation,inthiswaythe

navigationcanbequicklyoperatethenavigation.

Keywords:Navigation;MapDataba;StringElement;MarkHints

本科生毕业设计(论文)

III

目录

第1章绪论...........................................................................................................1

1.1背景介绍....................................................................................................1

1.2国内外的研究现状....................................................................................1

1.3研究内容和意义........................................................................................2

第2章汽车导航简介.............................................................................................3

2.1汽车导航仪定义........................................................................................3

2.2汽车导航仪功能介绍................................................................................4

2.2.1地图描画.........................................................................................4

2.2.2路径计算.........................................................................................4

2.2.3车辆定位.........................................................................................4

2.2.4设施检索.........................................................................................4

2.2.5驾驶引导.........................................................................................5

2.3车载导航工作原理....................................................................................5

2.4汽车导航工作过程....................................................................................6

2.4.1用户输入目的地.............................................................................6

2.4.2行驶路线的计算.............................................................................6

2.4.3行驶中的导航.................................................................................7

第3章地图数据.....................................................................................................8

3.1地图数据的格式........................................................................................8

3.1.1GDF数据.........................................................................................8

3.1.2MDB数据.......................................................................................9

3.1.3RDB数据........................................................................................9

3.1.4PDB数据.......................................................................................10

3.1.5LDB数据.......................................................................................10

3.2地图数据的主要元素..............................................................................10

3.3地图数据的比例尺..................................................................................11

3.4地图数据的分层与分块存储..................................................................12

3.4.1地图数据的分层存储...................................................................12

3.4.2地图数据的分块存储...................................................................13

第4章地图数据沿路文字的标记.......................................................................14

本科生毕业设计(论文)

IV

4.1地图标记概述..........................................................................................14

4.1.1一些术语的定义...........................................................................14

4.1.2标记提示(MH)分析................................................................15

4.2功能实现..................................................................................................15

4.2.1概述...............................................................................................15

4.2.2函数功能简介...............................................................................16

4.2.3函数流程.......................................................................................17

4.3地图数据的描画......................................................................................23

4.3.1地图数据描画工具.......................................................................23

4.3.2OnPaint()函数流程图及功能介绍..........................................24

第5章测试.........................................................................................................29

第6章结论...........................................................................................................31

参考文献.................................................................................................................32

致谢.......................................................................................................................34

本科生毕业设计(论文)

1

第1章绪论

1.1背景介绍

交通拥挤、交通安全和交通环境是当今交通领域的三大关键难题。随着交通

问题的日益严重和交通设施建设成本的日益高涨,各发达国家都在有组织有计划

地研究发展交通信息化工作,把高科技的手段应用于交通管理,在现代科学技术

的带动下,诞生了智能交通系统(ITS)。汽车导航系统是ITS的重要内容,有望成

为ITS中的一项重要科技产业。

汽车,是现在最常用的交通工具。随着经济日益发展,城市建设不断扩大,

道路网也变得错综复杂,很多汽车的驾驶者在一个不熟悉的地方不能及时准确的

判断出自己的位置和方位,这就需要汽车导航仪的帮忙了。它可以帮助汽车驾驶

者节约时间,减少走冤枉路的几率。

汽车导航系统是在全球卫星定位系统GPS基础上发展起来的新型技术。驾车

者只要将目的地输入汽车导航系统,系统就会根据电子地图自动计算出最合适的

路线,并在车辆行驶过程中(如转弯前)提醒驾驶员按照计算的路线行驶。今天,

汽车导航系统已渐渐普及,几乎每台车都会有一个这样的系统。使汽车驾驶者在

外出时也能像在自己的家乡那样在交通道路上自由穿梭。

汽车导航系统最重要的组成部分就是地图数据,本文主要叙述的就是道路上

文字的显示算法。通过这个算法,将道路的名字筛选出来,并附加在相应的路段

上,显示出来。

1.2国内外的研究现状

在国外,汽车导航系统发展得相当成熟,成为大众的一个生活辅助工具,乃

至必需品。目前国际上已经形成了日本、欧洲和北美三大市场,日本是汽车导航

产品概念的提出者和市场的推广者,经过数年的技术发展和市场推广,产品的技

术和工艺日趋成熟,并在产品的技术先进性方面在市场中处领先地位。

汽车导航系统在我国起步较晚,但发展相当快。我国出于军事上的考虑,一

直将地图视为国家机密,对绘制与编辑都进行了限制,尤其是外资企业很难直接

插手中国国内的地图绘制。但从1997年起,在我国政府的地图管理部门国家测绘

局的协助下,与四维图新共同绘制车载导航系统用的电子地图。从2002年开始提

本科生毕业设计(论文)

2

供包括部分城市在内的电子地图,很多已被丰田等厂商的车载导航仪采用,到

2008年,北京已有超过50%的车辆安装了车载导航系统。随着市场经济的发展,

车载导航的价格也已趋于合理,相信不久的将来,就连最普通的出租车司机都也

能接受。2010年,中国GPS市场在市场推进、技术发展、应用创新的推动下飞

速发展,全年GPS市场容量达到908.3万套,同比增长117.8%。其中,车载GPS

销量达到342.7万套,较2009年增长102.2%;便携式GPS销量达到523.1万套,

较2009年增长148.4%;前装市场销量为42.5万套,同比增长15.2%。中国的车

载导航技术经过十年的市场培育,用户目标与需求已逐步明确,以及技术的研发、

市场的培育的逐步完善,车载导航装置应用市场业已启动和日趋成熟,现在已逐

步进入道路交通行业应用的高速发展时期。随着城市交通系统的日趋复杂及车辆

的增多,车载导航技术有着重要的应用前景,更大的方便人们日常生活。随着生

活的日益富裕,汽车进入寻常家,城际间的路网日趋复杂和大都市内部立体交通

网络的建设,车载导航的应用是必不可少的,同时也会给行人带来更大的方便。

1.3研究内容和意义

现阶段,导航产品的研究已经日趋成熟,导航产品的应用也已经普及,考虑

更多的应该是客户的需求,尽可能的让客户感到舒适与满意。城市的道路有很多

很多,错综复杂,它们互相连通组成了我们的交通网络。每条路都有自己的名字,

通过这些道路的名字可以判定自己所在的具体方位或目的地的位置。在导航仪上

将路名显示在地图的道路上,会更加直观的展现出驾驶者所在的地点,使驾驶者

感到更加的方便,快捷。本文主要论述的是如何利用MicrosoftVisualStudio2005

软件编程实现沿路标记文字,以及内部函数的分析和实现过程。最后在显示数据

的软件Mapdatashow上显示出沿路文字标记的具体画面,检测出软件编程方面

是否有错误。

经过测试,运用预先处理地图数据计算并筛选出文字标注的方法,使地图显

示软件动态显示地图中的元素的名字,大大提高了车载导航仪处理数据的效率,

使导航仪地图信息显示速度加快,降低了导航仪由于处理速度不够而死机的概率,

并且节省了导航仪内存空间,具有实际的应用价值。

本科生毕业设计(论文)

3

第2章汽车导航简介

2.1汽车导航仪定义

因为对汽车导航不熟悉,很多人一听到汽车导航,想到的就是GPS全球定位;

其实这种认识是不全面的,完整的汽车导航系统应该包括两部分:全球定位系统

和车辆自动导航系统。其一般是由GPS天线,集成了显示屏幕和功能按键的主机,

以及语音输出设备(一般利用汽车音响系统输出语音提示信息)构成的。受车内车

导航设备和汽车音响集成在一起。汽车导航仪是集导航,通讯与服务,智能控制,

娱乐于一体的汽车专用设备。

图2.1汽车导航仪

图2.2汽车导航仪界面

本科生毕业设计(论文)

4

2.2汽车导航仪功能介绍

车载导航的主要功能有:地图描画,路径计算,车辆定位,设施检索,驾驶

引导等。

2.2.1地图描画

地图描画是导航系统最直接的功能。它是在导航终端的显示屏上描画和显示

存储在煤质中的电子地图信息。最基本的电子地图信息包括:道路,建筑,山川,

河流和桥梁等信息。还可以根据用户设定的比例尺进行切换,目前更先进的导航

系统可以根据2D3D显示切换,3D可以细致的显示出建筑物街道的特点,使分

辨起来更加的方便快捷。

2.2.2路径计算

用户通过查看地图或检索设施设定目的地位置,导航系统根据目的地来设定

最优的路线。用户可以根据自己的需求设定最优解决方案,如路线最短,路况最

好,最省钱等。在路线计算的过程中,导航仪根据实时的路况信息及自身存储的

一些数据通过一系列的算法计算出最终结果,返回到客户端。

2.2.3车辆定位

车载GPS导航系统,其内置的GPS天线会接收到来自环绕地球的24颗GPS

卫星中的至少3颗所传递的数据信息,结合储存在车载导航仪内的电子地图,通

过GPS卫星信号确定的位置坐标与此相匹配,进行确定汽车在电子地图中的准确

位置,这就是平常所说的定位功能。该功能可以给用户提供车辆所在的位置和方

位。车辆的位置通常由经纬度表示。通过卫星定位及各种算法对车辆所在位置进

行匹配和确定,最终返回到客户端。

2.2.4设施检索

检索方式主要分为以下的四种方式:

1.设施名称检索:知道设施名称的情况下可使用此检索方式,例如:目的地

为“天安门”,输入每个字拼音的首字母。

2.附近设施检索:提供现在位置附近、路线附近和目的地附近等多种附近设

施检索方式,极大的满足在驾驶过程中的各种需要。

3.路线附近设施检索:行驶在设置的路线上,如果想寻找附近的加油站,以

“路线附近”检索方式可查询从本车位置方圆30公里周围的区域,按离本车位置由

本科生毕业设计(论文)

5

近及远的顺序最多可显示20个查询结果。

4.快速的路线检索:目的地设定后,通过具有高速运算能力的芯片,导航系

统能在3秒内推荐5种路线方案,可以根据自身需求选择理想的行驶路线,最多

可设置5个目的地,同时根据道路情况选择绕行路线,设定回避区域,大大提高

了行车效率。

2.2.5驾驶引导

用语音提前向驾驶者提供路口转向、导航系统状况等行车信息,就像一个懂

路的向导告诉用户如何驾车去目的地一样。导航中最重要的一个功能,使用户无

需观看操作终端,通过语音提示就可以安全到达目的地。

画面导航:在操作终端上,会显示地图,以及车子现在的位置,行车速度,

目的地的距离,规划的路线提示,路口转向提示的行车信息。

重新规划线路:当用户没有按规划的线路行驶,或者走错路口时候,GPS导

航系统会根据你现在的位置,为你重新规划一条新的到达目的地的线路,引导驾

驶者轻松的,方便的,快捷的驶向目的地。期间,导航系统自动更新车况信息,

会对路径做相应的改动。

2.3车载导航工作原理

当前的汽车导航系统包括两部分:全球定位系统和车辆自动导航系统。汽车

导航设备一般是由GPS天线,集成了显示屏幕和功能按键的主机,以及语音输出

设备(一般利用汽车音响系统输出语音提示信息)构成的。受车内安装位置的限制,

一般汽车导航设备和汽车视像音响合成在一起,可以播放CD、VCD和DVD碟,

其中DVD驱动器负责读取电子地图DVD光盘,因此,一些汽车导航系统又称为

DVD导航系统。

内置的GPS天线会接收到来自环绕地球的24颗GPS卫星中的至少3颗所传

递的数据信息,由此测定汽车当前所处的位置。GPS接收了定位卫星信号,经过

微处理器计算出汽车所在精确经度和纬度以及汽车速度和方向,并在显示器上显

示出来。它通过地面任意一点(如汽车)和上空四颗定位卫星的相对距离计算出

汽车的准确位置。如果用户知道某点距一颗卫星的距离,我们可以知道该点必然

处于以第一颗卫星为球心,以距离为半径的球面上,如果再知道距第二颗已知卫

星的距离,用户可以确认该点处于两个球面相交的圆形曲线上,有了第三颗卫星

我们就可以将第三个球面和前一个圆形曲线相交于两点。一般通过第四颗卫星的

距离我们就可以唯一确定该点的经纬度了。

本科生毕业设计(论文)

6

导航用电子地图在整个汽车导航应用体系中起到核心的作用,针对不同导航

应用往往会采用不同规格的电子地图。通常电子地图由记录实际地物的地理数据

和与实际地物相关的标识信息以及各类附加信息组成。现在汽车导航的特征之一

的“电子地图”,定位功能正式投产的时间是1987年的皇冠,那时,推测航法已

经作为定位技术被使用了。是把通过地磁传感器得到的方位和通过车速传感器得

到的距离,按照向量积分推算出车辆的行驶轨迹,求得从出发地的相对位置。

2.4汽车导航工作过程

目前世界上应用较多的是自主导航,其主要特征是每套车载导航设备都自带

电子地图,定位和导航功能全部由车载设备完成。它的工作过程主要有以下几个

步骤。

2.4.1用户输入目的地

在出发前,用户通过系统提供的输入方法将目的地输入到导航设备中。除了

在系统显示的电子地图上直接点击选取地点外,更多时候是借助某种输入方法,

将目的地名称(如路名、维修站、机场、火车站、码头、停车场、加油站、酒店、

餐厅、医院、邮局及其它公共服务单位等)输入到系统中。根据输入设备的不同,

可以有不同的地名输入方法。比较常见的是类似目前手机的输入方法,利用显示

屏幕周围的旋钮和按键,在屏幕上出现的字母表中选取字母,组成地名,确认后

将这个地名输入到系统中。但是国内市场上的汽车自主导航系统很少采用这种输

入方法,因为中文字的数量数以千计,不可能全部列在屏幕上供用户选择,而且

国内汽车自主导航产品基本都是基于PC结构。因此,或者借助外接键盘(从使

用和存放的便利性出发,多数采用无线键盘)以类似PC机的中文输入法作为地

名输入方法的汽车导航系统,或者利用触摸屏借助日益成熟的手写识别技术进行

中文输入。依靠键盘或触摸屏,同时也可以实现几乎所有的功能按键的功能。

基于“以人为本”的设计思想,特别是考虑到安全性的要求,目前人们也在开

发基于语音识别技术的产品。

2.4.2行驶路线的计算

汽车导航系统中至关重要的一部分是存储在光盘或内置存储器(如硬盘)

中的电子地图。电子地图中存储了一定范围内的地理与道路和交通管制信息,与

地点对应存储了相关的经纬度信息。

汽车导航主机从GPS接收机得到经过计算确定的当前点经纬度,通过与电

子地图数据的对比,就可以随时确定车辆当前所在的地点。一般汽车导航系统将

本科生毕业设计(论文)

7

车辆当前位置默认为出发点,在用户输入了目的地之后,导航系统根据电子地图

上存储的地图信息,就可以自动计算出一条最合适的推荐路线。在有的系统中,

用户还可以指定途中希望经过的途径点,或者指定一定的路线选择规则(如不

允许经过高速公路、按照行驶路线最短的原则等)。推荐的路线将以特殊的方式显

示在屏幕上的地图中,同时屏幕上也时刻显示出车辆的当前位置,以提供参考。

如果行驶过程中车辆偏离了推荐的路线,系统会自动删除原有路线并以车辆

当前点为出发点重新计算路线,并将修正后的路线作为新的推荐路线。

2.4.3行驶中的导航

如果导航系统的处理结果不能以合适的方式表现出来,那么汽车导航也就只

是一个有趣而无用的摆设而已。

汽车自动导航系统的输出设备包括显示屏幕和语音输出设备。显示屏幕一般

是个10~15cm(4~6英寸)的LCD液晶显示屏(如果需要手写识别作为输入,

液晶显示屏表面还有一张透明的触摸屏),主要显示内容包括:可变比例的地图

(包括相应的路名、公路编号、重要地点名称等)、车辆的当前位置、推荐路线等,

根据用户的设定还可以显示如附近的维修站、加油站、停车场及其他上面提到的

如机场、酒店、医院等公共服务单位的名称及地理位置等信息,以方便用户需要。

在车辆行驶过程中,驾驶员必须全神贯注于驾驶,而不能经常去查看显示屏

幕,因此,一个实用而人性化的车辆自动导航系统应该利用语音输出,在必要的时

刻向驾驶员提供提示信息。比如,车辆按照系统推荐路线行驶到应该转弯的路口

前,语音输出设备会提示驾驶员:300m后请向左转。这样,驾驶员根本不必关

注屏幕的显示,也可以按照推荐路线正确快捷地到达目的地。

本科生毕业设计(论文)

8

第3章地图数据

3.1地图数据的格式

汽车导航仪的核心部分即地图数据,主要包含GDF数据,MDB数据,RDB

数据,PDB数据,LDB数据四种格式。下面将对这几种数据格式进行介绍。本文

主要采用的是PDB数据格式,PDB数据能对数据进行描画并图像化显示数据,

可以显示出地图数据的点,线,面,极大地方便了后续的测试工作。

3.1.1GDF数据

地理数据文件(GeographicalDataFile,GDF)是一种保存地理数据的文件

格式,用于描述和传输道路网络和道路相关数据。原始的地图数据由地图测绘公

司通过实地勘察测绘而成,地图的原始格式有很多种,如GDF、KIVI等,本文

只介绍欧洲通行的交通网络空间数据标准GDF。

“要素”(Feature)是现实世界地理对象在数据库中的表达,GDF数据文件

中的要素分三个层次:

Level2:复合要素(ComplexFeature)多个市、区组成。GDF中用Complex

表示。

Level1:单一要素(SingleFeature)像道路、建筑物、海洋等规定了属性的

要素,GDF中用点(Point)、线(Line)、面(Area)表示。

Level0:形状要素(Geometry)组成点、线、面的几何元素,GDF中用坐

标(XYZ)、节点(Node)、边(Edge)、面(Face)表示。

本科生毕业设计(论文)

9

图3.1各层要素之间的关系

3.1.2MDB数据

由于GDF格式是纯文本格式,不能被导航仪直接识别应用,所以先将其转换

为计算机应用的中间格式——MDB(二进制数据)。

原始数据只是单纯的地图数据,所以要根据客户需求对其做一些添加,压缩和

删减,于是将原始数据转换为导航仪应用的数据格式:RDB,VDB,SDB格式。

3.1.3RDB数据

RDB数据存储的只有点和线,主要应用于算路,路径诱导,定位等功能。

图3.2RDB数据

本科生毕业设计(论文)

10

3.1.4PDB数据

PDB数据存储的是所有Map可视化的需要的图形元素——点、线和面,

主要应用于地图的描画和显示。

图3.3PDB数据

3.1.5LDB数据

LDB数据主要存储的是国家,城市,POI(PointofInterest)和声音信息等,

主要应用于检索功能,极大地满足在驾驶中的需求。

3.2地图数据的主要元素

地图中的主要元素是点,线,面。在导航仪上,点主要表示建筑,交叉点,

交通灯,POI等。线主要表示道路,铁路,航道等。面主要表示海洋,陆地,建

筑,绿地等。如图3.4所示,为汽车导航仪上显示的各种地图数据元素。

在导航的电子数据中,通常用点和线表现一条道路,每条道路都有各自的属

性,唯一的ID。由于每条道路都不是直的,所以在每条道路上,有一个个的形状

点。在地图描画时,通过一定的平滑处理算法连接相邻的形状点,就可以将道路

描画出来。如图3.5所示,为道路的形状点。

本科生毕业设计(论文)

11

图3.4地图数据的主要元素

图3.5道路的形状点

3.3地图数据的比例尺

地图数据另外一个重要的组成部分就是比例尺,比例尺表示图上距离和实

地距离缩小的程度。在不同比例尺下所看到的地图数据是不同的。比例尺越

大显示的范围越大,比例尺越小,地图越精细,显示的东西越多。(注:为

了说明方便,本文提到的比例尺的大小均是对于比例尺的分母来说的,分母

越大,比例尺越大,例如1:50000的比例尺大于1:5的比例尺)

本科生毕业设计(论文)

12

图3.6较低的比例尺图3.7较高的比例尺

3.4地图数据的分层与分块存储

为了满足不同比例尺条件下,数据存储与检索的需要,需要将地图数据进行

分层存储,并根据每个层数据量的不同,进而对数据进行分块存储,高层的数据

量少,划分的块数较少,低层的数据量较多,划分的块数较多。

3.4.1地图数据的分层存储

地图的分层存储可以理解为分不同比例尺的存储。比如说:实地25平方公

里在1:10万,1:25万和1:50万比例尺地图上,分别为25平方厘米,4平方

厘米,1平方厘米。很明显,欲在上述各种比例尺地图上以相同的详细程度显示

实地25平方公里范围内的制图物体和现象是不可能的。这样一来,地图比例尺

标志着地图对地面的缩小程度,直接影响着地图内容表示的可能性,即选取、化

简和概括地图内容的详细程度。

将地图分层(Level)存储,一般在最底层存储最详细的数据,而上层逐渐进

行数据的抽取。目前中国地图数据分为7层,Level0到Level6。最高层Level6

可能就只描画整个中国的版图,仅标注主要的都市,而到了Level0层就有可能

详细到某个市镇的道路。

比例缩尺(scale):每个Level的数据显示的都是一个scale的数据,比如

Level0的比例尺是1/25000,实际上在每层又分了多个比例尺,这样的比例尺称

为缩尺scale,每层最多允许有5个scale.每层的数据只有一份,可以通过缩尺scale

的控制描画在不同的比例尺下。

本科生毕业设计(论文)

13

3.4.2地图数据的分块存储

分层存储能够将地图数据划分为很小的单元,但是即使这样取得每层的数据

也是比较困难,因此在分层存储的基础上对每层的数据分块进行存储,这样为数

据的取得和管理也提供了很大的便利条件,因为每层的数据量不同,因此不同层

的数据块的个数也是不相同的,低层的数据量较大,划分的数据块较多,高层的

数据量小,划分的数据块也少。在下面章节提到的地图数据的描画就是利用地图

数据的分块存储,将整个地图划分成大的矩形Block,再将Block分成许多的小

Patch。

图3.8地图数据的分层与分块存储

本科生毕业设计(论文)

14

第4章地图数据沿路文字的标记

4.1地图标记概述

地图中的路是由直线组成的,组成路的直线又由很多的形状点构成。在

路上显示文字就是要让用户知道所见路的名称,使其能更好的了解其所在位

置。由于路形状的不确定性,为文字在路上的显示增加了很多困难。如,路

过长,文字的显示位置如何确定;路有转弯,并且转弯角度很小,文字显示

位置的确定等。这都表示了为道路添加文字需要非常严谨的算法。

图4.1地图标记

4.1.1一些术语的定义

标记提示(MarkHints,后简称MH):被用来在地图上适当的地方标记

名字,是MapViewer的一个功能,为了更快速的为一个适合的地方命名。

线状特征(LineFeature,后简称LF):由一连串的点及连接点的线组成,

这些点也可以指形状点。如:路,河,铁轨,国家边界等。

区域特征(AreaFeature,后简称AF):是一个面,由一些由直线连接起

来的点组成,并且第一个点和最后一个点重合。例如,建筑物,森林,海洋

等。

最高可见层(HighestVisibilityLevel):为了给选择最适合的MH提供一

个标准,附加的输入是必要的。HVL定义了详细的MH已包含的最小能见

本科生毕业设计(论文)

15

度图层。使用了这个信息,MapViewer可以在放大缩小时阻止文字跳跃。

4.1.2标记提示(MH)分析

1.一个MH必须指派给每个LF,即每条路上都必须显示其名字。

2.对于每个LF,所有的形状点必须被当作输入数据。

3.一个MH包含两个信息:大量的形状点(最少三个),最高可见层。

4.如果一个LF仅包含两个形状点,则在两个形状点的中间增加一个新的形

状点。

5.如果三个形状点形成的夹角小于规定的最小角度,则不在这个部分上添加

MH,从中间点切断,再重新判断前后是否满足条件,创建MH。

6.如果一个MH的形状点过多,则在其上限点处切断,建立MH,接下来建

立新的MH。

7.通过路的长度来计算MH的最高显示层,在不同比例尺下,道路的长度等

问题会影响到MH的显示。

8.在边界处的相同名字的路分开计算考虑。

图4.2标记提示(MH)的组成

4.2功能实现

4.2.1概述

主要研究的是将二进制数据D转换为在Mapdatashow上显示的数据G的过程

中为线属性添加MarkHints的过程。显示数据中有三种元素类型:点、线、面。

点主要代表的是建筑物、POI等,线主要代表的是道路、航道、桥等,面主要代

表的是湖、公园、广场等。显示数据会被划分为几层,在不同的层中,不同的比

例尺下,显示的点、线、面的大小和数量会有所不同。因为随着比例尺的增大,

本科生毕业设计(论文)

16

某些元素会缩小到没有必要显示出来。MarkHints是显示地图时用来建议地图显

示软件应该在何处显示该元素的名称。导航仪的内存有限,如果没有MarkHints

而单靠导航仪中的地图显示软件直接计算后显示名称,所耗费的时间很长,并且

占用大量内存,效率会很低。MarkHints是先进行筛选过的少量的数据,在地图

显示软件需要显示某一元素的名称时,只需要在少量的hints中选择合适的显示即

可。线属性主要应用的是CurvedMarkHints,面属性主要应用的是HorizontalMark

Hints。本文只研究针对线属性的CMH。

图4.3线上文字的显示

4.2.2函数功能简介

该功能主要包含两个函数,主函数调用另外一个函数的功能,即为添加文字

标记的函数调用划分数据段得函数。gdblib::linienzug_c::t_CurvedMarkHints_LF

()的主要功能是对路的形状点进行切割分类,将每一段符合条件的MH存储。并

计算其显示的最大比例。gdblib::linienzug_c::calc_MH()遍历所有的线的名字,

并根据名字的属性分不同情况进行计算。将名字与上面函数算出的MH进行配对存

储,并在相应的坐标点上添加名字。选取名字和LH的最小显示比例存储。

本科生毕业设计(论文)

17

gdblib::

linienzu

g_c::cal

c_MH

没有遍历完所有的

名字?

Y

END

N

为河流或海峡添

加标记

为道路或航道添

加标记

为河流或海峡添

加标记

maxScale>=gdbFil

(ebene_

nr).MinScale

END

是旧版本?

Y

只添加其属性

Y

N

t_Curve

dMarkHint

s_LF

在相应的坐标上添

加名字

为道路或航道添

加标记

name的类型是道

路?

Y

读取标记号

name是标记号?

Y

读取名字

N

是旧版本?

只添加属性

Y

读取的是名

字?

在相应的坐标上添

加名字

t_Curved

MarkHints_

LF

添加标记号属性

END

N

N

N

N

设置标记的最大

显示比例

路仍有部分没

有取到?

显示比例设置为路段

和标记中的最小比例

Y

N

设置名字的最大显

示比例

仍有部分没有

取到?

显示比例设置为河

流段和标记中的最

小比例

Y

N

名字类型为河流

或海峡?

Y

N

4.2.3函数流程

图4.4制作沿路文字标记流程图

本科生毕业设计(论文)

18

图4.4为制作沿路文字标记流程图:calc_MH函数

功能:为线元素坐标命名,包括道路,河流,航道,海峡。

主要调用的函数:1)addNaming(intcat,inticon,intprio,intsubPrio,constchar

*name,intnameNum,intscale,intminscale,element_c*ele,std::vector&

HintCoordlist,intradius)

2)t_CurvedMarkHints_LF(std::vector&Infomationlist_CM

H,log_c&log)

函数具体流程介绍:首先从二进制数据文件中取得所有的直线的名字,对所

有的名字进行遍历,判断当前的名字的类型,如果是河流或海峡的名字,读取名

字的最大显示比例,再判断此比例是否大于当前层的比例,若大于,则继续,小

于则跳出继续遍历。接下来要判断当前软件的版本,若为较低版本则不用做沿路

文字标记,只设置显示比例等属性。如果为高版本则调用

t_CurvedMarkHints_LF函数,将得到的标准点依次加到当前名字上。如果是

道路的名字,则调用t_CurvedMarkHints_LF函数,将得到的标准点依次加到

当前的名字上。如果是标号,则只加属性信息。

为道路和航道添加文字标记与为河流或海峡添加文字标记类似,只是道路和

航道多了一项添加道路标记号的功能,再就是添加元素的属性不同,这里不做详

细的研究。

本科生毕业设计(论文)

19

图4.5形状点分割流程图

图4.5为形状点分割的流程图:t_CurvedMarkHints_LF函数

功能:曲线分为多个LH,每个LH有多于两个的形状点。

主要调用的函数:1)gdbl_koord_distance(intcoord_system,longx1,longy1,

longx2,longy2)

2)winkel_zwischen_drei_punkten(constgdblib::koord_c&p1,const

gdblib::koord_c&p2,constgdblib::koord_c&p3)

函数具体流程介绍:首先从二进制数据文件里读取限制信息数据,如MH的

最小距离、三点之间最小夹角、形状点最小距离等。读入第一个点并存储,遍历

各个形状点,判断当前点与上一点之间的距离,如果小于限制距离,则此点不再

本科生毕业设计(论文)

20

做判断,继续找下一个点。如果大于限制距离,则判断当前形状点的个数是否大

于或等于两个,如果没到两个,则将点存入point里。若大于两个,计算当前点

与前两个点间所形成的夹角roadCurvatureRad,再判断点数是否超过了255个或

者roadCurvatureRad小于所要求的最小角度。如果不满足条件,则将当前点存储

points里,继续找下一个点。若果满足条件,则返回当前点的上一个点,判断当

前points里的点之间的距离,若小于最小距离,则清空points,存入当前点。若

大于最小距离,再判断其点数是否超过了两个,若没超过,则在两个点的中间增

加一个点。若超过两个点,则将points中的点转存到Infomationlist_CLH中,并

清空points表。如此依次往下进行,直到检查完所有的点并按顺序存好为止。

以上两个流程图主要功能是将直线划分成MH并将其中的点存入相对应的名

字中。主函数遍历所有直线的名字,调用的函数在该名字下遍历该直线的所有的

点,将满足条件的点存入相应的数组中,最后加到名字里。

部分代码如下:

Voidt_CurvedLabellingHints_LF(std::vector)

{

std::vectorpoints;

_back(m_koord[0]);//addfirstpointtopointarray

intsizecoor=m_()

for(inti=1;i

{doubledist=gdbl_koord_distance()

if(distance

{

continue;

}

if(pointssize>=2)

{

doubleroadangle=winkel(points[pointsizesize-2],points[pointsize-1],current

point);

}

if(pointsize==255||roadangle

{

koord_ccornerpoint=point[pointSize-1];

}

if(coordsSize==2)

本科生毕业设计(论文)

21

{

_back(coords[1]);

coords[1].m_x=(coords[0].m_x+coords[2].m_x)/2;

coords[1].m_y=(coords[0].m_y+coords[2].m_y)/2;

}

Infomationlist__back(InformationForLH_c());

InformationForLH_c&lh=Infomationlist_();

lh.m_(coords);

}

}

}

}

上述函数主要调用了两个函数,一个是:

gdbl_koord_distance(intcoord_system,longx1,longy1,longx2,longy2),

另外一个是:

winkel_zwischen_drei_punkten(constgdblib::koord_c&p1,const

gdblib::koord_c&p2,constgdblib::koord_c&p3).

这两个函数一个是计算两点之间距离的,一个是计算三点之间的角度,在不

满足条件下对当前点进行切割。下面将简述一下部分代码。

关于gdbl_koord_distance函数:

doublegdbl_koord_distance(intcoord_system,longx1,longy1,longx2,long

y2)

{

doubledx,dy,d2;

doublexratio;

doubleyratio;

dx=(x2-x1)*xratio;

dy=(y2-y1)*yratio;

d2=dx*dx+dy*dy;

returnsqrt(d2);

}

关于winkel_zwischen_drei_punkten()函数:

doublewinkel_zwichen_drei_punkten()

{

本科生毕业设计(论文)

22

if((p1.x==p2.x==p3.x)&&(p1.y==p2.y==p3.y))

{return0;

}

if(p1.x==p2.x==p3.x)

{returnPI;

}

if(p1.y==p2.y==p3.y)

{returnPI;

}

doubledA=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y));

doubledB=sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y));

doublescalar=(p2.x-p1.x)*(p2.x-p3.x)+(p2.y-p1.y)*(p2.y-p3.y);

doublecosw=scalar/(dA*dB);

doublew=acos(cosw);

returnw;

}

由以上函数可知:

有两点A(x1,y1)与B(x2,y2),则dx=(x2-x1),dy=(y2-y1),求A点与B点之间的距

离,则d=√dx²+dy²。

求三点之间夹角利用公式cos∠A=AB*AC/(|AB|*|AC|)设A(x1,y1)

B(x2,y2)C(x3,y3),则向量AB=(x2-x1,y2-y1),向量AC=(x3-x1,y3-y1)

cos∠A=AB*AC/(|AB|*|AC|)

=[(x2-x1)*(x3-x1)+(y2-y1)*(y3-y1)]/{√[(x2-x1)²+(y2-y1)²]+

√[(x3-x1)²+(y3-y1)²]}

同理可求出其他的角。

本科生毕业设计(论文)

23

4.3地图数据的描画

以上gdblib::linienzug_c::t_CurvedMarkHints_LF()函数以及

gdblib::linienzug_c::calc_MH()函数是将符合条件的点存储起来并添加文字标记

的过程。下面将介绍如何将地图数据描画出来。

4.3.1地图数据描画工具

地图数据描画工具Mapdatashow可读入地图数据,对地图数据进行分析并描

画,使数据更加直观地显示出来,根据展现出来的画面可以检查数据是否有错误。

点击地图中的元素,可查看元素的各种属性信息。通过控制,可对地图进行放大

和缩小,可以查看到不同比例尺下的地图数据显示情况。

将地图数据分块存储,通过对不同数据块中不同数据元素的描画,实现数据

的描画显示,方便了测试工作。

本科生毕业设计(论文)

24

4.3.2OnPaint()函数流程图及功能介绍

图4.6OnPaint函数流程图

本科生毕业设计(论文)

25

图4.7DrawPoint流程图

本科生毕业设计(论文)

26

View::Draw

MHPoint()

参数:

boolSelect,

intt,

longxcoord,

longycoord,

constchar*Text

文字标注的名字是否为空

画线并填充

根据计算好的位置描画名字

当前点

是否在地图显示软件显示的

区域内

将实际坐标转化为屏幕坐标

名字是否存在

以文字标注的坐标为中心点

计算开始显示名字的位置

点击位

置是否在以文字标注为中心的一定

范围内

在元素对话框中

显示元素和文字标注的信息

是否点

击了元素对话框中文字标注

的信息

用矩形框将文字标注重点描画

Y

结束

Y

Y

Y

Y

N

是否点击了显示区域内的文字标注

N

图4.8DrawMHPoint流程图

本科生毕业设计(论文)

27

图4.6所示为OnPaint()函数。此函数主要实现了对地图数据的描画,判断

元素是点、线或面,根据其所属类型进行描画。并可根据其MH数据对相应的元

素命名,使其相应的名字显示在相应的位置上。判断该block是否存在,如果不

存在则函数返回;否则进行下一步。具体步骤如下:

1.遍历block中的每个patch,将每个patch中的每个元素依次描画出来。

2.如果当前patch中还有没显示的文字标注,则判断该文字标注的比例尺是

否大于等于地图显示软件当前显示的比例尺;否则查找下一个patch。

3.如果该文字标注的比例尺大于等于地图显示软件当前显示的比例尺,则根

据文字标注的类型进行描画;否则查找下一个文字标注。

4.当文字标注为点文字标注时,则用函数DrawPoint()描画文字标注点,并在

其右侧描画名字;当文字标注为水平文字标注时,用DrawMHPoint()以该文字标

注点为中心描画名字,但不描画文字标注点;当文字标注为曲线文字标注时,用

函数DrawPoint()描画形状点,取中间的形状点用函数DrawMHPoint()以该点为中

心描画名字;当文字标注为编号文字标注时,用函数DrawPoint()描画形状点,取

中间的形状点用函数DrawMHPoint()以该点为中心描画编号。

5.当前patch中所有的文字标注描画完成后,查找下一个patch,直至所有

patch均描画完成结束。

图4.7所示为DrawPoint()函数。此函数用来描画文字标注点,并在文字标注

点的右侧描画名字。

drawPoint(LHl,0x03000000,oordlist[i].m_x,

oordlist[i].m_y,0)具体步骤如下:

1.画线并填充。

2.当前点是否在地图显示软件显示的区域内,如果在,则继续描画;如果不

在则函数返回不描画该点。

3.将当前点的实际坐标转换成屏幕上的坐标。

4.如果当前文字标注存在名字,则在该文字标注坐标的右侧描画名字,并描

画该点;如果不存在则函数返回。

5.如果点击了以文字标注为中心的一定区域内,则在元素对话框中显示元素

和文字标注的信息。

6.如果点击了元素对话框中的文字标注信息,则在地图上将该文字标注用边

框重点描画出来。

图4.8所示为DrawMHPoint()函数,此函数用来实现以文字标注点的中心描

画名字,但并不描画该文字标注点,函数为:

mMapView->drawLHPoint(LHl,0x03000000,oordlist[cnt/2

本科生毕业设计(论文)

28

].m_x,oordlist[cnt/2].m_y,kachel->m_string_ing(curN

).c_str());具体步骤如下:

1.文字标注的名字是否为空,如果为空,函数返回;否则进行下一步。

2.画线并填充。

3.以文字标注的坐标为中心点,计算开始描画名字的位置。

4.当前点是否在地图显示软件显示的区域内,如果在,则继续描画;如果不

在则函数返回不描画该点。

5.将当前点的实际坐标转换成屏幕上的坐标。

6.如果当前文字标注存在名字,则以该文字标注坐标的为中心描画名字;如

果不存在则函数返回。

7.如果点击了以文字标注为中心的一定区域内,则在元素对话框中显示元素

和文字标注的信息。

8.如果点击了元素对话框中的文字标注信息,则在地图上将该文字标注用边

框重点描画出来。

本科生毕业设计(论文)

29

第5章测试

以下四个图分别是在Mapdatashow软件上将地图数据描画出来的图片,目的

是用来检出地图数据是否有错误,检验功能是否实现。

图5.1河流的文字标记

图5.2道路的文字标记

本科生毕业设计(论文)

30

图5.3道路的标记号

本科生毕业设计(论文)

31

第6章结论

本论文主要介绍了国内外的汽车导航事业的发展现状,汽车导航的功能及其

工作过程。重点了解地图数据的几种重要的格式及其表现的方式,沿路文字标记

的实现过程以及如何更好地使用地图数据描画软件Mapdatashow显示出数据的过

程。

本次设计内容是针对汽车导航地图数据中关于沿路标记文字的算法研究。本

设计主要应用了C++语言的类和STL模板库中的vector容器作为主要存储方式,

通过对原始数据的预计算,实现了在转换地图数据的过程中,为线元素添加水平

文字标注。其中函数实现分为两大块:一是如何对路进行切割标记名字的,二是

如何在Mapdatashow软件上描画出数据的信息。

对路进行切割,要考虑到路包含的形状点数目,两个形状点之间的距离,以

及转弯的夹角问题等。添加名字要考虑到是否是道路名字,标记号的处理情况,

显示的比例尺,判断新旧版本,显示设置为名字和路段的最小比例等问题。在

Mapdatashow软件上显示需要判断Block中Patch的元素,并描画Patch中的元素。

判断是否是市中心以及道路,如果是道路标记号的处理情况。在Mapdatashow上

如何对数据进行提取和描画。

本次设计具有实际的应用价值。在时间上,如果没有文字标注,导航仪需自

己计算显示名称的位置,由于地图数据量庞大,计算繁琐,所以会耗费大量时间。

如果通过预计算添加了文字标注,即可省去导航仪计算的时间,地图显示软件只

需从少量的文字标注中选择最合适的显示即可,故节省了大量的时间。在空间上,

导航仪的内存空间很有限,计算大量的数据很容易出现内存空间不足的现象。添

加了文字标注后,由于减少了数据量,导航仪在显示时减少了计算,故节省了大

量的时间。所以,为地图数据添加文字标注,不论从时间还是空间上,都为导航

仪节省了大量开销,减轻了导航仪的负担,从而使导航仪能够快速稳定的运行,

使用户了解到自己所处的位置,选择最短路径快速地到达目的地。提高了城市路

网的利用率,减轻了交通堵塞的情况。

本科生毕业设计(论文)

32

参考文献

[1]谢志颖.LBS系统中动态路径选择的理论与方法研究.第二版.武汉:武汉大

学,2005:32-120

[2]杨忠敏.前景无限的现代汽车电子导航技术.第一版.北京:交通与运

输,2006:26-56

[3]杨兆升.朱中.交通流诱导的信息流系统研究.第一版.北京:公路交通科技,

2009:15-62

[4]曹冲.我国GPS车辆应用系统的产业化前景分析和市场展望.中国全球定位系

统的技术应用.2006(2):34-40

[5]过敬君.车载导航新进展及在智能交通系统中的应用.车载定位航空技术在智

能交通系统.2008(2):22-28

[6]马石安.VisualC++程序设计与应用教程.第二版.北京:清华大学出版社,

2007:25-69

[7]杜萌.基于DSP的车载DPS/DR组合导航系统硬件测试.微计算机信

息.2005(2):103-105

[8]张谦.基于GPS的手持个人导航系统设计.第一版.北京:微计算机信

息.2006:18-62

[9]王洪升.基于DSP的移动机器人的设计与实现.电子信息技术,2009(2):55-58

[10]杨玉华.GPS电子地图汽车导航系统.第一版.太原:太原华北工学

院,2007:12-49

[11]张伟.智能交通系统与发展模式.辽宁工程技术大学学报,2005(1):71-79

[12]王晋国.智能导航车载系统.交通工程学报,2005(2):106-109

[13]刘利.我国地理信息产业发展特征.地理信息世界,2004(4):18-22

[14]宋振会.C++语言编程实用教程.第六版.北京:希望电子出版社,2008:23-69

[15]WilliamFord,WilliamTopp,陈君译.数据结构C++语言描述——应用标准

模板库(STL).第二版.北京:清华大学出版社.2008:25-49

[16]李宁,陈彬.基于数据库的海量GDF导航电子地图数据处理方法.测绘科

学,2007(32):157-159

[17]何晶,齐清文,何宗宜.移动数字地图的技术环境和核心问题研究,测绘科

学,2005(6):30-32

[18]AndrewKoenig,BarbaraE,靳志伟译.Moo.AcceleratedC++中文版.第六

本科生毕业设计(论文)

33

版.北京:机械工业出版社,2007:14-76

[19]HerbSutter,於春景译.MoreExceptional.第二版.湖北:华中科技大学出

版社,2009:16-82

[20]百度百科.车载导航[EB/OL]./view/,

2010.12.29

[21]百度文库.车载导航系统的现状与发展[EB/OL].

/view/,2010.12.6

[22]百度文库.汽车导航仪故障检测与维修[EB/OL].

/view/,2010.12.6

[23]phicInformationSystemsfor

UniversityPress.

2007(2):102-156

[24]

Engineering2009(2):217-228

[25]n,.C++Primer.北京:人民邮电出版社,

2006(11):566-601

[26]StanleyLippman.InsidetheC++ObjectModel.北京:人民邮电出版社,

2006:280-320

本科生毕业设计(论文)

34

致谢

大学四年的学习生活转瞬即逝,收获是颇多的。首先非常感谢我的毕业设计

导师李老师,在论文的写作和措辞等方面她也总会以“专业标准”严格要求我,

从选题、定题开始,一直到最后论文的反复修改、润色,李老师始终认真负责地

给予我深刻而细致的指导,帮助我开拓研究思路,精心点拨、热忱鼓励。正是李

老师的无私帮助与热忱鼓励,我的毕业论文才能够得以顺利完成,谢谢李老师。

最后,也是最重要的我要感谢辽宁工业大学电信学院和学院的各位老师四年

来对我的培养和关心,是你们给我提供一个学习的机会,让我们能够在毕业后为

社会做出贡献。感谢我周围的所有同学在我的大学期间给予我的帮助。

本科生毕业设计(论文)

35

本文发布于:2023-01-03 17:40:20,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/85633.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:ma妈妈
下一篇:心理档案
标签:车辆导航仪
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图