




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
车载导航之地图数据研究毕业论文目 录第1章 绪 论11.1 背景介绍11.2 国内外的研究现状11.3 研究内容和意义2第2章 汽车导航简介32.1 汽车导航仪定义32.2 汽车导航仪功能介绍42.2.1 地图描画42.2.2 路径计算42.2.3 车辆定位42.2.4 设施检索42.2.5 驾驶引导52.3 车载导航工作原理52.4 汽车导航工作过程62.4.1 用户输入目的地62.4.2 行驶路线的计算62.4.3 行驶中的导航7第3章 地图数据83.1 地图数据的格式83.1.1 GDF数据83.1.2 MDB数据93.1.3 RDB数据93.1.4 PDB数据103.1.5 LDB数据103.2 地图数据的主要元素103.3 地图数据的比例尺113.4 地图数据的分层与分块存储123.4.1 地图数据的分层存储123.4.2 地图数据的分块存储13第4章 地图数据沿路文字的标记144.1 地图标记概述144.1.1 一些术语的定义144.1.2 标记提示(MH)分析154.2 功能实现154.2.1 概述154.2.2 函数功能简介164.2.3 函数流程174.3 地图数据的描画234.3.1 地图数据描画工具234.3.2 OnPaint()函数流程图及功能介绍24第5章 测 试29第6章 结论31参考文献32致 谢34II第1章 绪 论1.1 背景介绍交通拥挤、交通安全和交通环境是当今交通领域的三大关键难题。随着交通问题的日益严重和交通设施建设成本的日益高涨,各发达国家都在有组织有计划地研究发展交通信息化工作,把高科技的手段应用于交通管理,在现代科学技术的带动下,诞生了智能交通系统(ITS)。汽车导航系统是ITS的重要内容,有望成为ITS中的一项重要科技产业。汽车,是现在最常用的交通工具。随着经济日益发展,城市建设不断扩大,道路网也变得错综复杂,很多汽车的驾驶者在一个不熟悉的地方不能及时准确的判断出自己的位置和方位,这就需要汽车导航仪的帮忙了。它可以帮助汽车驾驶者节约时间,减少走冤枉路的几率。汽车导航系统是在全球卫星定位系统GPS基础上发展起来的新型技术。驾车者只要将目的地输入汽车导航系统,系统就会根据电子地图自动计算出最合适的路线,并在车辆行驶过程中(如转弯前)提醒驾驶员按照计算的路线行驶。今天,汽车导航系统已渐渐普及,几乎每台车都会有一个这样的系统。使汽车驾驶者在外出时也能像在自己的家乡那样在交通道路上自由穿梭。汽车导航系统最重要的组成部分就是地图数据,本文主要叙述的就是道路上文字的显示算法。通过这个算法,将道路的名字筛选出来,并附加在相应的路段上,显示出来。1.2 国内外的研究现状在国外,汽车导航系统发展得相当成熟,成为大众的一个生活辅助工具,乃至必需品。目前国际上已经形成了日本、欧洲和北美三大市场,日本是汽车导航产品概念的提出者和市场的推广者,经过数年的技术发展和市场推广,产品的技术和工艺日趋成熟,并在产品的技术先进性方面在市场中处领先地位。汽车导航系统在我国起步较晚,但发展相当快。我国出于军事上的考虑,一直将地图视为国家机密,对绘制与编辑都进行了限制,尤其是外资企业很难直接插手中国国内的地图绘制。但从1997年起,在我国政府的地图管理部门国家测绘局的协助下,与四维图新共同绘制车载导航系统用的电子地图。从2002年开始提供包括部分城市在内的电子地图,很多已被丰田等厂商的车载导航仪采用,到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 研究内容和意义现阶段,导航产品的研究已经日趋成熟,导航产品的应用也已经普及,考虑更多的应该是客户的需求,尽可能的让客户感到舒适与满意。城市的道路有很多很多,错综复杂,它们互相连通组成了我们的交通网络。每条路都有自己的名字,通过这些道路的名字可以判定自己所在的具体方位或目的地的位置。在导航仪上将路名显示在地图的道路上,会更加直观的展现出驾驶者所在的地点,使驾驶者感到更加的方便,快捷。本文主要论述的是如何利用Microsoft Visual Studio 2005软件编程实现沿路标记文字,以及内部函数的分析和实现过程。最后在显示数据的软件Map data show上显示出沿路文字标记的具体画面,检测出软件编程方面是否有错误。经过测试,运用预先处理地图数据计算并筛选出文字标注的方法,使地图显示软件动态显示地图中的元素的名字,大大提高了车载导航仪处理数据的效率,使导航仪地图信息显示速度加快,降低了导航仪由于处理速度不够而死机的概率,并且节省了导航仪内存空间,具有实际的应用价值。第2章 汽车导航简介2.1 汽车导航仪定义因为对汽车导航不熟悉,很多人一听到汽车导航,想到的就是GPS全球定位;其实这种认识是不全面的, 完整的汽车导航系统应该包括两部分: 全球定位系统和车辆自动导航系统。其一般是由GPS天线, 集成了显示屏幕和功能按键的主机,以及语音输出设备(一般利用汽车音响系统输出语音提示信息)构成的。受车内车导航设备和汽车音响集成在一起。汽车导航仪是集导航,通讯与服务,智能控制,娱乐于一体的汽车专用设备。图2.1汽车导航仪图2.2汽车导航仪界面2.2 汽车导航仪功能介绍车载导航的主要功能有:地图描画,路径计算,车辆定位,设施检索,驾驶引导等。2.2.1 地图描画地图描画是导航系统最直接的功能。它是在导航终端的显示屏上描画和显示存储在煤质中的电子地图信息。最基本的电子地图信息包括:道路,建筑,山川,河流和桥梁等信息。还可以根据用户设定的比例尺进行切换,目前更先进的导航系统可以根据2D 3D显示切换,3D可以细致的显示出建筑物街道的特点,使分辨起来更加的方便快捷。2.2.2 路径计算用户通过查看地图或检索设施设定目的地位置,导航系统根据目的地来设定最优的路线。用户可以根据自己的需求设定最优解决方案,如路线最短,路况最好,最省钱等。在路线计算的过程中,导航仪根据实时的路况信息及自身存储的一些数据通过一系列的算法计算出最终结果,返回到客户端。2.2.3 车辆定位车载GPS导航系统,其内置的GPS天线会接收到来自环绕地球的24颗GPS卫星中的至少3颗所传递的数据信息,结合储存在车载导航仪内的电子地图,通过GPS卫星信号确定的位置坐标与此相匹配,进行确定汽车在电子地图中的准确位置,这就是平常所说的定位功能。该功能可以给用户提供车辆所在的位置和方位。车辆的位置通常由经纬度表示。通过卫星定位及各种算法对车辆所在位置进行匹配和确定,最终返回到客户端。2.2.4 设施检索检索方式主要分为以下的四种方式:1 设施名称检索:知道设施名称的情况下可使用此检索方式,例如:目的地为“天安门”,输入每个字拼音的首字母。2 附近设施检索:提供现在位置附近、路线附近和目的地附近等多种附近设施检索方式,极大的满足在驾驶过程中的各种需要。3 路线附近设施检索:行驶在设置的路线上,如果想寻找附近的加油站,以“路线附近”检索方式可查询从本车位置方圆30公里周围的区域,按离本车位置由近及远的顺序最多可显示20个查询结果。4 快速的路线检索:目的地设定后,通过具有高速运算能力的芯片,导航系统能在3秒内推荐5种路线方案,可以根据自身需求选择理想的行驶路线,最多可设置5个目的地,同时根据道路情况选择绕行路线,设定回避区域,大大提高了行车效率。2.2.5 驾驶引导用语音提前向驾驶者提供路口转向、导航系统状况等行车信息,就像一个懂路的向导告诉用户如何驾车去目的地一样。导航中最重要的一个功能,使用户无需观看操作终端,通过语音提示就可以安全到达目的地。画面导航:在操作终端上,会显示地图,以及车子现在的位置,行车速度,目的地的距离,规划的路线提示,路口转向提示的行车信息。重新规划线路:当用户没有按规划的线路行驶,或者走错路口时候,GPS 导航系统会根据你现在的位置,为你重新规划一条新的到达目的地的线路,引导驾驶者轻松的,方便的,快捷的驶向目的地。期间,导航系统自动更新车况信息,会对路径做相应的改动。2.3 车载导航工作原理当前的汽车导航系统包括两部分:全球定位系统和车辆自动导航系统。汽车导航设备一般是由GPS天线,集成了显示屏幕和功能按键的主机,以及语音输出设备(一般利用汽车音响系统输出语音提示信息)构成的。受车内安装位置的限制,一般汽车导航设备和汽车视像音响合成在一起,可以播放CD、VCD和DVD碟,其中DVD驱动器负责读取电子地图DVD光盘,因此,一些汽车导航系统又称为DVD导航系统。内置的GPS天线会接收到来自环绕地球的24颗GPS卫星中的至少3颗所传递的数据信息,由此测定汽车当前所处的位置。GPS接收了定位卫星信号,经过微处理器计算出汽车所在精确经度和纬度以及汽车速度和方向,并在显示器上显示出来。它通过地面任意一点(如汽车)和上空四颗定位卫星的相对距离计算出汽车的准确位置。如果用户知道某点距一颗卫星的距离,我们可以知道该点必然处于以第一颗卫星为球心,以距离为半径的球面上,如果再知道距第二颗已知卫星的距离,用户可以确认该点处于两个球面相交的圆形曲线上,有了第三颗卫星我们就可以将第三个球面和前一个圆形曲线相交于两点。一般通过第四颗卫星的距离我们就可以唯一确定该点的经纬度了。导航用电子地图在整个汽车导航应用体系中起到核心的作用,针对不同导航应用往往会采用不同规格的电子地图。通常电子地图由记录实际地物的地理数据和与实际地物相关的标识信息以及各类附加信息组成。现在汽车导航的特征之一的“电子地图”,定位功能正式投产的时间是1987年的皇冠,那时,推测航法已经作为定位技术被使用了。是把通过地磁传感器得到的方位和通过车速传感器得到的距离,按照向量积分推算出车辆的行驶轨迹,求得从出发地的相对位置。2.4 汽车导航工作过程目前世界上应用较多的是自主导航, 其主要特征是每套车载导航设备都自带电子地图, 定位和导航功能全部由车载设备完成。它的工作过程主要有以下几个步骤。2.4.1 用户输入目的地在出发前, 用户通过系统提供的输入方法将目的地输入到导航设备中。 除了在系统显示的电子地图上直接点击选取地点外, 更多时候是借助某种输入方法, 将目的地名称 ( 如路名、维修站、机场、火车站、码头、停车场、加油站、酒店、餐厅、医院、邮局及其它公共服务单位等) 输入到系统中。根据输入设备的不同, 可以有不同的地名输入方法。比较常见的是类似目前手机的输入方法, 利用显示屏幕周围的旋钮和按键, 在屏幕上出现的字母表中选取字母, 组成地名, 确认后将这个地名输入到系统中。 但是国内市场上的汽车自主导航系统很少采用这种输入方法, 因为中文字的数量数以千计, 不可能全部列在屏幕上供用户选择, 而且国内汽车自主导航产品基本都是基于 PC结构。因此, 或者借助外接键盘 ( 从使用和存放的便利性出发, 多数采用无线键盘) 以类似 PC 机的中文输入法作为地名输入方法的汽车导航系统, 或者利用触摸屏借助日益成熟的手写识别技术进行中文输入。依靠键盘或触摸屏,同时也可以实现几乎所有的功能按键的功能。 基于“以人为本”的设计思想, 特别是考虑到安全性的要求, 目前人们也在开发基于语音识别技术的产品。2.4.2 行驶路线的计算汽车导航系统中至关重要的一部分是存储在光盘或内置存储器 ( 如硬盘) 中的电子地图。电子地图中存储了一定范围内的地理与道路和交通管制信息, 与地点对应存储了相关的经纬度信息。 汽车导航主机从GPS 接收机得到经过计算确定的当前点经纬度, 通过与电子地图数据的对比, 就可以随时确定车辆当前所在的地点。一般汽车导航系统将车辆当前位置默认为出发点, 在用户输入了目的地之后, 导航系统根据电子地图上存储的地图信息, 就可以自动计算出一条最合适的推荐路线。在有的系统中, 用户还可以指定途中希望经过的途径点, 或者指定一定的路线选择规则 ( 如不允许经过高速公路、按照行驶路线最短的原则等)。推荐的路线将以特殊的方式显示在屏幕上的地图中, 同时屏幕上也时刻显示出车辆的当前位置, 以提供参考。如果行驶过程中车辆偏离了推荐的路线, 系统会自动删除原有路线并以车辆当前点为出发点重新计算路线, 并将修正后的路线作为新的推荐路线。2.4.3 行驶中的导航如果导航系统的处理结果不能以合适的方式表现出来, 那么汽车导航也就只是一个有趣而无用的摆设而已。汽车自动导航系统的输出设备包括显示屏幕和语音输出设备。显示屏幕一般是个 10 15 cm ( 46 英寸)的 LCD 液晶显示屏( 如果需要手写识别作为输入, 液晶显示屏表面还有一张透明的触摸屏) ,主要显示内容包括: 可变比例的地图 (包括相应的路名、公路编号、重要地点名称等)、车辆的当前位置、推荐路线等, 根据用户的设定还可以显示如附近的维修站、加油站、停车场及其他上面提到的如机场、酒店、医院等公共服务单位的名称及地理位置等信息, 以方便用户需要。在车辆行驶过程中, 驾驶员必须全神贯注于驾驶, 而不能经常去查看显示屏幕, 因此, 一个实用而人性化的车辆自动导航系统应该利用语音输出,在必要的时刻向驾驶员提供提示信息。比如, 车辆按照系统推荐路线行驶到应该转弯的路口前, 语音输出设备会提示驾驶员:300 m 后请向左转。这样, 驾驶员根本不必关注屏幕的显示, 也可以按照推荐路线正确快捷地到达目的地。第3章 地图数据3.1 地图数据的格式汽车导航仪的核心部分即地图数据,主要包含GDF数据,MDB数据,RDB数据,PDB数据,LDB数据四种格式。下面将对这几种数据格式进行介绍。本文主要采用的是PDB数据格式,PDB数据能对数据进行描画并图像化显示数据,可以显示出地图数据的点,线,面,极大地方便了后续的测试工作。3.1.1 GDF数据地理数据文件(Geographical Data File, GDF) 是一种保存地理数据的文件格式,用于描述和传输道路网络和道路相关数据。原始的地图数据由地图测绘公司通过实地勘察测绘而成,地图的原始格式有很多种,如GDF、KIVI等,本文只介绍欧洲通行的交通网络空间数据标准GDF。“要素”(Feature)是现实世界地理对象在数据库中的表达,GDF数据文件中的要素分三个层次:Level 2:复合要素(Complex Feature)多个市、区组成。GDF中用Complex表示。 Level 1:单一要素(Single Feature)像道路、建筑物、海洋等规定了属性的要素,GDF中用点(Point)、线(Line)、面(Area)表示。Level 0:形状要素(Geometry)组成点、线、面的几何元素, GDF中用坐标(XYZ)、节点(Node)、边(Edge)、面(Face)表示。图3.1 各层要素之间的关系3.1.2 MDB数据由于GDF格式是纯文本格式,不能被导航仪直接识别应用,所以先将其转换为计算机应用的中间格式MDB(二进制数据)。原始数据只是单纯的地图数据,所以要根据客户需求对其做一些添加,压缩和删减,于是将原始数据转换为导航仪应用的数据格式:RDB,VDB,SDB格式。3.1.3 RDB数据RDB数据存储的只有点和线,主要应用于算路,路径诱导,定位等功能。 图3.2 RDB数据3.1.4 PDB数据PDB数据存储的是所有Map可视化的需要的图形元素点、线和面, 主要应用于地图的描画和显示。 图3.3 PDB数据3.1.5 LDB数据LDB数据主要存储的是国家,城市,POI( Point of Interest )和声音信息等,主要应用于检索功能,极大地满足在驾驶中的需求。3.2 地图数据的主要元素地图中的主要元素是点,线,面。在导航仪上,点主要表示建筑,交叉点,交通灯,POI等。线主要表示道路,铁路,航道等。面主要表示海洋,陆地,建筑,绿地等。如图3.4所示,为汽车导航仪上显示的各种地图数据元素。在导航的电子数据中,通常用点和线表现一条道路,每条道路都有各自的属性,唯一的ID。由于每条道路都不是直的,所以在每条道路上,有一个个的形状点。在地图描画时,通过一定的平滑处理算法连接相邻的形状点,就可以将道路描画出来。如图3.5所示,为道路的形状点。 图3.4 地图数据的主要元素图3.5道路的形状点3.3 地图数据的比例尺地图数据另外一个重要的组成部分就是比例尺,比例尺表示图上距离和实地距离缩小的程度。在不同比例尺下所看到的地图数据是不同的。比例尺越大显示的范围越大,比例尺越小,地图越精细,显示的东西越多。(注:为了说明方便,本文提到的比例尺的大小均是对于比例尺的分母来说的,分母越大,比例尺越大,例如1:50000的比例尺大于1:5的比例尺)图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的控制描画在不同的比例尺下。3.4.2 地图数据的分块存储分层存储能够将地图数据划分为很小的单元,但是即使这样取得每层的数据也是比较困难,因此在分层存储的基础上对每层的数据分块进行存储,这样为数据的取得和管理也提供了很大的便利条件,因为每层的数据量不同,因此不同层的数据块的个数也是不相同的,低层的数据量较大,划分的数据块较多,高层的数据量小,划分的数据块也少。在下面章节提到的地图数据的描画就是利用地图数据的分块存储,将整个地图划分成大的矩形Block,再将Block分成许多的小Patch。图3.8 地图数据的分层与分块存储第4章 地图数据沿路文字的标记4.1 地图标记概述地图中的路是由直线组成的,组成路的直线又由很多的形状点构成。在路上显示文字就是要让用户知道所见路的名称,使其能更好的了解其所在位置。由于路形状的不确定性,为文字在路上的显示增加了很多困难。如,路过长,文字的显示位置如何确定;路有转弯,并且转弯角度很小,文字显示位置的确定等。这都表示了为道路添加文字需要非常严谨的算法。图4.1 地图标记4.1.1 一些术语的定义标记提示(Mark Hints,后简称MH):被用来在地图上适当的地方标记名字,是Map Viewer的一个功能,为了更快速的为一个适合的地方命名。线状特征(Line Feature,后简称LF):由一连串的点及连接点的线组成,这些点也可以指形状点。如:路,河,铁轨,国家边界等。区域特征(Area Feature,后简称AF):是一个面,由一些由直线连接起来的点组成,并且第一个点和最后一个点重合。例如,建筑物,森林,海洋等。最高可见层(Highest Visibility Level):为了给选择最适合的MH提供一个标准,附加的输入是必要的。HVL定义了详细的MH已包含的最小能见度图层。使用了这个信息,Map Viewer可以在放大缩小时阻止文字跳跃。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的过程中为线属性添加Mark Hints的过程。显示数据中有三种元素类型:点、线、面。点主要代表的是建筑物、POI等,线主要代表的是道路、航道、桥等,面主要代表的是湖、公园、广场等。显示数据会被划分为几层,在不同的层中,不同的比例尺下,显示的点、线、面的大小和数量会有所不同。因为随着比例尺的增大,某些元素会缩小到没有必要显示出来。Mark Hints是显示地图时用来建议地图显示软件应该在何处显示该元素的名称。导航仪的内存有限,如果没有Mark Hints而单靠导航仪中的地图显示软件直接计算后显示名称,所耗费的时间很长,并且占用大量内存,效率会很低。Mark Hints是先进行筛选过的少量的数据,在地图显示软件需要显示某一元素的名称时,只需要在少量的hints中选择合适的显示即可。线属性主要应用的是Curved Mark Hints,面属性主要应用的是Horizontal Mark Hints。本文只研究针对线属性的CMH。图4.3 线上文字的显示4.2.2 函数功能简介该功能主要包含两个函数,主函数调用另外一个函数的功能,即为添加文字标记的函数调用划分数据段得函数。gdblib:linienzug_c:set_CurvedMarkHints_LF()的主要功能是对路的形状点进行切割分类,将每一段符合条件的MH存储。并计算其显示的最大比例。gdblib:linienzug_c:calc_MH()遍历所有的线的名字,并根据名字的属性分不同情况进行计算。将名字与上面函数算出的MH进行配对存储,并在相应的坐标点上添加名字。选取名字和LH的最小显示比例存储。4.2.3 函数流程图4.4 制作沿路文字标记流程图图4.4为制作沿路文字标记流程图:calc_MH 函数 功能:为线元素坐标命名,包括道路,河流,航道,海峡。主要调用的函数:1) addNaming(int cat, int icon, int prio, int subPrio, const char *name, int nameNum, int scale, int minscale, element_c *ele, std:vector& HintCoordlist, int radius)2)set_CurvedMarkHints_LF(std:vector&Infomationlist_CMH, log_c& log)函数具体流程介绍:首先从二进制数据文件中取得所有的直线的名字,对所有的名字进行遍历,判断当前的名字的类型,如果是河流或海峡的名字,读取名字的最大显示比例,再判断此比例是否大于当前层的比例,若大于,则继续,小于则跳出继续遍历。接下来要判断当前软件的版本,若为较低版本则不用做沿路文字标记,只设置显示比例等属性。如果为高版本则调用set_CurvedMarkHints_LF 函数,将得到的标准点依次加到当前名字上。如果是道路的名字,则调用set_CurvedMarkHints_LF 函数,将得到的标准点依次加到当前的名字上。如果是标号,则只加属性信息。为道路和航道添加文字标记与为河流或海峡添加文字标记类似,只是道路和航道多了一项添加道路标记号的功能,再就是添加元素的属性不同,这里不做详细的研究。图4.5 形状点分割流程图图4.5为形状点分割的流程图:set_CurvedMarkHints_LF 函数功能:曲线分为多个LH,每个LH有多于两个的形状点。主要调用的函数:1)gdbl_koord_distance( int coord_system, long x1, long y1, long x2, long y2 )2)winkel_zwischen_drei_punkten(constgdblib:koord_c&p1,const gdblib:koord_c& p2,const gdblib:koord_c& p3 )函数具体流程介绍:首先从二进制数据文件里读取限制信息数据,如MH的最小距离、三点之间最小夹角、形状点最小距离等。读入第一个点并存储,遍历各个形状点,判断当前点与上一点之间的距离,如果小于限制距离,则此点不再做判断,继续找下一个点。如果大于限制距离,则判断当前形状点的个数是否大于或等于两个,如果没到两个,则将点存入point里。若大于两个,计算当前点与前两个点间所形成的夹角roadCurvatureRad,再判断点数是否超过了255个或者roadCurvatureRad小于所要求的最小角度。如果不满足条件,则将当前点存储points里,继续找下一个点。若果满足条件,则返回当前点的上一个点,判断当前points里的点之间的距离,若小于最小距离,则清空points,存入当前点。若大于最小距离,再判断其点数是否超过了两个,若没超过,则在两个点的中间增加一个点。若超过两个点,则将points中的点转存到Infomationlist_CLH中,并清空points表。如此依次往下进行,直到检查完所有的点并按顺序存好为止。以上两个流程图主要功能是将直线划分成MH并将其中的点存入相对应的名字中。主函数遍历所有直线的名字,调用的函数在该名字下遍历该直线的所有的点,将满足条件的点存入相应的数组中,最后加到名字里。部分代码如下: Void set_CurvedLabellingHints_LF(std:vector) std:vector points;points.push_back(m_koord0); /add first point to point arrayint sizecoor = m_koord.size()for (int i = 1; i sizecoor; i+) double dist = gdbl_koord_distance( ) if (distance=2) double roadangle=winkel(pointspointsizesize-2,pointspointsize-1,current point) ; if(point size=255|roadangledrawLHPoint(LHsel,0x03000000,curNaming.mHintCoordlistcnt/2.m_x,curNaming.mHintCoordlistcnt/2.m_y,kachel-m_string_tabelle.getString(curNaming.mNid).c_str();具体步骤如下:1 文字标注的名字是否为空,如果为空,函数返回;否则进行下一步。2 画线并填充。3 以文字标注的坐标为中心点,计算开始描画名字的位置。4 当前点是否在地图显示软件显示的区域内,如果在,则继续描画;如果不在则函数返回不描画该点。5 将当前点的实际坐标转换成屏幕上的坐标。6 如果当前文字标注存在名字,则以该文字标注坐标的为中心描画名字;如果不存在则函数返回。7 如果点击了以文字标注为中心的一定区域内,则在元素对话框中显示元素和文字标注的信息。8 如果点击了元素对话框中的文字标注信息,则在地图上将该文字标注用边框重点描画出来。第5章 测 试以下四个图分别是在Mapdatashow软件上将地图数据描画出来的图片,目的是用来检出地图数据是否有错误,检验功能是否实现。图5.1河流的文字标记图5.2道路的文字标记图5.3道路的标记号第6章 结论本论文主要介绍了国内外的汽车导航事业的发展现状,汽车导航的功能及其工作过程。重点了解地图数据的几种重要的格式及其表现的方式,沿路文字标记的实现过程以及如何更好地使用地图数据描画软件Mapdatashow显示出数据的过程。本次设计内容是针对汽车导航地图数据中关于沿路标记文字的算法研究。本设计主要应用了C+语言的类和STL模板库中的vector容器作为主要存储方式,通过对原始数据的预计算,实现了在转换地图数据的过程中,为线元素添加水平文字标注。其中函数实现分为两大块:一是如何对路进行切割标记名字的,二是如何在Mapdatashow软件上描画出数据的信息。 对路进行切割,要考虑到路包含的形状点数目,两个形状点之间的距离,以及转弯的夹角问题等。添加名字要考虑到是否是道路名字,标记号的处理情况,显示的比例尺,判断新旧版本,显示设置为名字和路段的最小比例等问题。在Mapdatashow软件上显示需要判断Block中Patch的元素,并描画Patch中的元素。判断是否是市中心以及道路,如果是道路标记号的处理情况。在Mapdatashow上如何对数据进行提取和描画。本次设计具有实际的应用价值。在时间上,如果没有文字标注,导航仪需自己计算显示名称的位置,由于地图数据量庞大,计算繁琐,所以会耗费大量时间。如果通过预计算添加了文字标注,即可省去导航仪计算的时间,地图显示软件只需从少量的文字标注中选择最合适的显示即可,故节省了大量的时间。在空间上,导航仪的内存空间很有限,计算大量的数据很容易出现内存空间不足的现象。添加了文字标注后,由于减少了数据量,导航仪在显示时减少了计算,故节省了大量的时间。所以,为地图数据添加文字标注,不论从时间还是空间上,都为导航仪节省了大量开销,减轻了导航仪的负担,从而使导航仪能够快速稳定的运行,使用户了解到自己所处的位置,选择最短路径快速地到达目的地。提高了城市路网的利用率,减轻了交通堵塞的情况。参考文献1 谢志颖.LBS系统中动态路径选择的理论与方法研究.第二版.武汉:武 汉大学,2005:32-1202 杨忠敏.前景无限的现代汽车电子导航技术.第一版.北京:交通与运 输,2006:26-563 杨兆升.朱中.交通流诱导的信息流系统研究.第一版.北京:公路交通科技,2009:15-624 曹冲.我国GPS车辆应用系统的产业化前景分析和市场展望.中国全球定位系统的技术应用.2006(2):34-405 过敬君.车载导航新进展及在智能交通系统中的应用.车载定位航空技术在智能交通系 统.2008(2):22-286 马石安.Visual C+程序设计与应用教程.第二版.北京:清华大学出版社,2007:25-697 杜萌.基于DSP的车载DPS/DR组合导航系统硬件测试.微计算机信息.2005(2):103-1058 张谦.基于GPS的手持个人导航系统设计.第一版.北京:微计算机信息.2006:18-629 王洪升.基于DSP的移动机器人的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论