《单兵作战系统中嵌入式GIS的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究摘要目前,信息战被认为是未来战争的主要作战样式。在信息战下战场必将是数字化的战场。因此,各国都在研究单兵作战系统,以提高单兵在未来数字化战场上的作战力和生存力.而单兵作战系统具有地理信息系统(GIS)功能是非常必要的。针对此背景,结合GIS、嵌入式Linux、Q'r/Embedded、路径寻优等技术,本文旨在开发一个具有自主知识产权的、安全的、无后门的嵌入式GIs,应用于单兵作战系统。本文研究了嵌入式GIS及其相关技术,对IAnux下开发嵌入式GIs的大致流程进行了研究和探讨。本文在嵌入式Linux操作系统上采用QT/Embedded作为图形用户界面(GUI)设计工具,设计了系统的GUI,在此基础上实现了嵌入式GIS的空间数据管理、地图显示、信息标注等部分功能模块。另外,本文还对路径寻优进行了研究,分析了原始Dijkstra算法及直线优化Dijkstra算法的原理,并设计了实现算法的数据结构。整个系统的设计运用面向对象编程思想,采用纯C++语言来编程实现,具有良好的移植性和通用性。关键词:单兵作战系统,嵌入式GIS,嵌入式Linux,QT/EmbeAded,路径寻优,Dijkswa算法 Abstract硕士论文Nowadays,informationwarfareisconsideredasthechieffightiIlgformoffuturewarfare.UndertheInformationwarfare,thebattlefieldwouldbecamedi百£a1.Therefore,inordertodlllancetIlecombatcaDabililiesandsurvivabilityofindividual-soldieronthefuturedi百talbattlefield,eachconmryisdoingsomeresearchonindividual-soldierfighthlgsystem.Andit’SverynecessarytointegrateGeographicInformationSystem(GIS)forindividual-soldierfightingsystem.Based011thisbackground,withthecombinationofsometechnologiessuchasGIS、EmbeddedLinux、QT/Embedded、Path—findingandSOOll,thisthesisaimstode’rdopasafeEmbeddedGISwithindependentintellectualpropertyrightandwithoutbackdoor.ThisEmbeddedGISwillbeusedinindividual—soldierfightingsystem.Inthisthesis.EmbeddedGISandcorrelativetechnologiesalestudied.neapproximateprocessofdevelopingembeddedGISarealsodiscussedandresearched.BasedonembeddedlinuxOS,QT/Embeddedis咄∞asGUItoolstodesignGUIofthissystem.OnthebasisofGULsomefunctionalmodulesofembeddedGISarerealized,suchasspatialdatamanagement,mapdisplay,informationlabel,etC.Besides,authorofthisthesisdoessomeresearchonPath—finding,analyzestheprincipleoftheoriginalDijkstraalgorithmandbeelineoptimizingDijkstraalgorithm,anddesignsthedatasl/'uctln'eforthealgorithm.ndssystemistransplantableanduniversalasthedesignofsystemabsorbsthethinkingofObject-OrientedProgrammingandadoptsc*Languagec0realizeit.Keywords:individual—soldiertiglltingsystem,eInbedded【j岱,锄beddedL,lnux,QT厄mbedded,Path-finding,DijkstraalgorithmⅡ 声明本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均已在论文中作了明确的说明。学位论文使用授权声明南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密论文,按保密的有关规定和程序处理。研究生签名:协,年‘月30Et 南京理工大擘硕士学位论文单兵作战系统中嵌入式GIs的研究1.绪论1.1研究背景进入21世纪后,国际军事界普遍认为未来战争的主导作战样式是信息战。如何在未来战争中保持优势,打赢信息战已成为各国军事家们普遍关注和研究的问·题。美国国防部已经认定数字化信息技术是美军装备的重点,数字化战场和数字化部队是支撑信息战的两大支柱。数字化战场是指以信息技术为基础,以信息环境为依托,用数字化设备将指挥、控制、通信、计算机、情报、电子对抗等网络系统联为一体,能实现各类信息资源的共享、作战信息实时地交换,以支持指挥员、战斗员和保障人员信息活动的整个作战多维信息空间;数字化部队就是装备了数字化信息系统的部队u.单兵作战系统是以单兵为基本单元,人.机一环境统筹考虑,应用多种先进技术的高技术士兵装备系统,它使士兵、武器、装备间形成了一个有机的整体,从而全面增强单兵的火力、机动、通信、观瞄和防护能力,使每一个士兵都成为有效的火力攻击单位,既能独立作战,又能协调行动,全面提高单兵作战效能,使士兵有条件在未来信息化战场上赢得优势【2】。发展单兵作战系统,提高单兵综合作战能力对战场的意义是由士兵在数字化战场上的作用所决定的。分析数字化战场士兵作战特点可以发现,主要以班组或小分队形式进行的活动,既是分散又需彼此联系,协调行动,战斗使命更趋向多样化。数字化战场要求士兵具有比以往更强的攻防能力、更好的隐蔽性、更强的灵活性,因此,大幅度提高单兵的作战效能,已经被摆在一个突出的位置上来。由于作战环境、作战方式的差别,所有的单兵系统也会有差别,但共同的目标是获得更佳的杀伤力、通信能力、生存能力和机动能力,因此,单兵作战系统大都由以下几个部分组成:综合头盔子系统、计算机和无线通信子系统、武器子系统、防护服和单个设备子系统等。1.2发展概况目前,世界各国的陆军都在积极制定和实施一系列“数字化单兵作战平台”发展规划,研制用于单兵的信息化装备,建立自己的单兵作战系统,提高士兵在未来数字化战场上的生存力、作战力。20世纪80年代末,美国陆军就提出4士兵现代化计划”,其中关键项目是。士 硕士论文兵综合防护系统”.同时,美国实施了一项“增强型士兵系统”计划,其目的是把“士兵综合防护系统”证实了的合适技术变成要装备部队的系统。1993年,美陆军将“增强型士兵系统’’计划更名为‘‘2l世纪地面勇士”计划,它强调利用美国微电子技术的优势,把“士兵系统”作为一个节点纳入数字化的C4I网络之中。1996年美国陆军将‘'21世纪地面勇士”和“第二代士兵系统”合并成统一的研究工作,简称为“地面勇士”计划。.、“地面勇士”系统由五个子系统组成:1.计算机,电台子系统计算机,电台子系统是士兵系统的指挥、控制、通信、计算机与情报予系统。它是士兵系统的核心,是将士兵与未来数字化战场紧密联系的工具,完成战场信息的采集、传输、处理、显示和决策、控制功能,是体现2l世纪单兵装备信息化的重要系统。这个系统包括计算机、士兵电台、班组电台、带综合导航系统的全球定位系统、手持乎板显示器、视频截获装备、与作战电台识别相兼容的接口等。2.防护服和单兵装备子系统防护服和单兵装备子系统包括先进的承载体、模块化防弹背心、防化学、防生物衣服、手套、靴子及其它现有衣服和单人装备.背装具的背架柔软,适合人体尺寸,框架及承载装置也是放置金属导线的地方。背架不仅是计算机,电台的承载体,而且是放置与保护导线的载体。计算机及电台部件易于迅速、方便地替换。背包系统能快速重组,适应不同使命的需要。此子系统采用模块化设计,便于各部件功能及材料的改进。3.软件子系统软件子系统包括战术软件和任务支援软件。这些软件通过灵活的用户界面使士兵系统与数字化c4I系统联网,大大提高士兵执行任务的效率和作战能力。战术软件的核心功能包括了解作战环境(定位,导航、数字地图显示、位置数据、激光探测及报警)、指挥与控制(指挥与控制信息、图表显示处理)、火力计划与控制(部队火力计划、粗略的防护雷区、火力探测控制界面)。此外还包括通信管理、装备管理、工作站管理、数据服务、显示管理,用户界面、任务支援及训练管理功能。4。综合头盔子系统综合子系统包括悬置轻型头盔、头盔显示器、图象增强视频放大装置、激光探测器、防化学,生物面罩、防弹/防激光护目装置、头部方向传感器等。综合头盔子系统可以作为士兵与数字化战场上其他系统的接口,可以为士兵提供防弹功能和高保真的视觉与声觉的战场信息,并且可以在白天、黑夜及核、生、化环境下使用。头盔采用先进材料,重量轻,抗冲击波,而且可调,可固定与悬挂。单目显示器减轻了重量,降低了能耗,允许肉眼直接观察,可在黑暗时调节视觉。显示数据来源 南京理工大学硕士学位论文革兵作战系统中嵌入式GIS的研究计算机、热成象武器瞄准器和视频传感器。视频模式选择有热成象武器瞄准器、摄象机和计算机.电子器件采用超大规模集成电路(vLsD设计,可以脱离计算机/电台使用,丽且白天及黑夜显示电子器件可以通用.激光探测器可以探测3600战场范围内的威胁。5.武器子系统武器子系统包括激光测距仪、数字罗盘、有线武器接口,无线武器接口、视频摄象机、模块化武器系统、热成象武器瞄准器、近战光学瞄准镜、红外激光瞄准器、其它现有武器和附件、理想单兵战斗武器等。激光测距仪/数字罗盘可以精确定位,指示射击,精确定位可达2500米。视频摄象杌用于武器发射后显示命中情况。热成象武器瞄准器可用于步枪昼夜瞄准、图象通过固定于头盔上的显示器显示。近战光学瞄准镜是无视觉差的红点瞄具,只用来瞄准与射击.红外激光瞄准器可以瞄准距离达600米的目标,而且可从固定在头盔上的夜视探测器的显示器看到。“地面勇士”系统计划于1999年开始生产,2000年首先装备一个营,预计到2011年将有34000名士兵装备。地面勇士”系统。为了着眼于21世纪数字化战场,建立数字化部队,法国、英国、澳大利亚、德国、俄罗斯、加拿大、比利时、以色列等国也相继开展了单兵作战系统的研究。法国于1992年提出“先进战斗士兵系统”计划,确定了可积木式组合的几个子系统:核、生、化防护子系统、士兵生存微气候子系统、防弹设备、防火装备和C3I系统。其中整体内置式C3I系统带有全球定位和通信功能的头盔显示仪等。俄罗斯在阿富汗战争之后开始重视发展“士兵系统”,提出了“巴尔米察”计划,目的是提高单个士兵的战斗效能。经过几年的努力,目前俄罗斯新单兵装备已经通过国家靶场实验。英国在1993年提出了“未来野战士兵系统”计划,该系统己取得很大进展,一是解决了人机接口的这个大问题,二是成功地改进了头盔子系统中的“水阻隔”透视图象装置,可以从头盔摄象仪中获得图像。澳大利亚国防军1995年指定了“武士”计划,该计划已由装备自成系列的研究模式向“综合系统”力佝发展。目前,澳军已研制出一种能适应低强度冲突和长期战斗需要的装备,可随时把信息传送到己方战士识别系统中.其他各国也都制定了自己的“士兵系统”计划,而且在发展上各有突破tll。f.从我国国情出发,我们也需要大力发展单兵作战系统。首先,应当承认,在相当长的时期内,我国在制天权和制空权这方面与发达国家还是存在一定差距,因此,一方面我们要努力缩小与发达国家在这些领域内的差距,另一方面则要强化地面部队突击能力,加紧研制在敌空中火力和远程火力攻击下具有较强生存能力的轻武器,增强单兵或小分队的独立作战能力,从而有效地发挥我军指战员机智勇敢的优势,使之成为我军扬长补短、克敌制胜的法宝。 硕士论文其次,单兵具备必要的信息手段是建立一个现代化作战体系的需求.战术ch系统(指挥、控制、通信和情报系统)的建设将后方高级指挥机构和前方指挥所连成网络,使之相互间能更好地进行协调和支援。单兵,作为各种战斗指令的执行终端,若与前方指挥机构的联系还停留在原有的水平上,则难以适应现代战争的要求。单兵作战系统能使每一个士兵都成为有效的火力攻击单位,既能独立作战,又能协调行动,是全面提高单兵作战效能、满足未来作战需求的有效途径之一。。考虑到我国的实际情况,我国的单兵作战系统应具备研发得起、装备得起的特点,因此,必须在高新技术微型化和低成本化的基础上,根据资源的实际情况,结合未来战场我军士兵的主要任务,借鉴国外研制经验,把握重点,从最基本、最主要的装备入手,形成由简到繁、逐步完善与提高的发展思路t31。1.3本文任务单兵作战系统中,具有地理信息系统(GIS)功能是非常必要的。因为对于身处在数字化战场上的单兵,了解作战环境是非常重要的。如果每个数字单兵利用全球定位装置在数字地图上定位自己的位置,则能改善单兵选择进攻和退守路线的能力。而在指挥中心,每个单兵的绝对位置在数字地图中都明确地显示出来,整个战场态势就十分清楚,有利于指挥员迅速正确实旖、调整或制定作战计划,对作战行动作出正确决策。如何让单兵作战系统嵌入G璐功能就是本文要研究的。国外的一些著名GIs厂商已经开发出一些嵌入式GIs产品。如果采用这些软件或设备来进行二次开发,无疑会方便许多,但是如果这样做,存在着两个问题:版权和安全问题。首先,需要支付一笔不少的版权费用,这无疑会提高产品的成本;其次,则是安全问题,对于研制用于军事用途的一些产品,安全是很重要的。谁也不敢保证这些国外厂商会不会象微软一样在自己产品中留有某些后门。而国内的一些产品绝大多数都是采用微软的wmCE作为操作系统,安全性也不好。因此,本文旨在研制出拥有自主知识产权的,一完全安全的嵌入式GIs,能方便应用于单兵作战系统中。本文任务是结合地理信息系统(GIS)、嵌入式Linux、GPS定位和路径寻优等技术开发一种嵌入式GIS设备,应用于单兵作战系统。GPS定位可以准确定位自己的位置,士兵可以确定同伴的与自己的相对位置,相互之间利用无线通讯模块进行联络。指挥员则可以通过各个单兵采集的视频来了解整个部队的战况和战场态势,合理地部署整个队伍的行动计划。利用数字地图的标注功能,士兵侦察时可以方便地在地图上作出各种标注,并利用无线通讯模块将数据上传给指挥中心。作者的主要工作为开发出一套通用的、方便移植的嵌入式GIS,最终实现能正4 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究常读取数字地图并显示,并能实现基本的放大,缩小、漫游、标注、导航定位等功能。整个系统都是用纯CH编写,可以方便地移植到其他系统中.另外,此系统完全是由作者单独开发的,拥有自主知识产权,完全安全的,不存在后门问题,应用于单兵作战系统中绝对安全。1A本章小结本章首先介绍了论文的研究背景,然后讨论了国-内外的发展概况,从而引出了本论文的主要任务。5 嵌入式GIS及相关技术硕士论文2.嵌入式GIS及相关技术2.1.1地理信息系统(GIS)地理信息系统,简称GIS(GeographicInformationSystem).顾名思义,地理信息系统是处理地理信息的系统。地理信息是指直接或间接与地球上的空间位置有关的信息,又常称为空间信息。在国际上虽然许多学者对GIs有不同的表述,但其基本概念是大体相同的。地理信息系统是利用计算机存贮、处理地理信息的一种技术与工具,是一种在计算机软、硬件支持下,把各种资源信息和环境参数按空间分布或地理坐标,以一定格式和分类编码输入、处理、存贮、输出,以满足应用需要的人.机交互信息系统。它通过对多要素数据的操作和综合分析,方便快速地把所需要的信息以图形、图像、数字等多种形式输出,满足各应用领域或研究工作的需要。,GIS的应用系统主要由5个部分组成:硬件、软件、数据、人员和方法。GIS是计算机科学、地理学、测量学、和地图学等多门学科的交叉,它是以地理空间数据库为基础,采用地理模型分析方法适时提供多种空间的和动态的地理信息,为地理研究和地理决策服务的计算机技术系统。地理信息系统在国民经济建设中得到了广泛运用,特别是在地域开发、环境保护、资源利用,城市管理、灾情预测、人口控制、交通运输等方面发挥着积极的作用,对我国经济腾飞和社会可持续发展起到了十分重要的作用。自从60年代世界上第一个地理信息系统诞生以来,地理信息系统如“星星之火”般迅速发展【4.51。2.1.2嵌入式GIS嵌入式GIS是GIS与嵌入式设备集成的产物,是GIS的一个新兴应用领域。典型的嵌入式GIS应用由嵌入式硬件、嵌入式操作系统和嵌入式GIS软件组成。随着嵌入式系统、GPS、微型RTOS、无线通讯和移动互联等各种技术的迅猛发展,给嵌入式GIS的发展提供了良好的契机和强劲的技术支撑,使得发展一个完整、实用、低成本的嵌入式GIS成为可能。嵌入式GIs的应用领域非常广泛,可以应用到军事国防、野外数据采集、智能汽车、智能交通、信息家电、工业控制、环境工程和个人用户等有关的各个领域,给人们的生活带来了极大的便利。嵌入式GIS的主要功能应包括以下5部分6I:6‘ 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究◆电子地图功能——包括地图显示、浏览、图层管理等;◆路径分析功能——包括路径规划和途径道路的属性查询、轨迹跟踪及记录与回放等;◆查询检索功能——能对兴趣目标信息分类查询,地名查询及定位;◆导航定位功能——根据接收到的卫星定位数据,对用户当前位置进行精确定位,并可根据需要,通过地图匹配的方法,将接收到的定位数据匹配到图幅的交通线上,对移动目标进行定位;◆信息标注功能——对于一些野外测量设备,用户要求能够在地图上实时地对目标点的位置进行标注,对其属性进行详细记录。嵌入式GIS是和桌面GIS相对的。桌面GIS指组成地理信息系统的计算机系统是通用的个人计算机,而嵌入式GIS则是嵌入式计算机系统。嵌入式GIS和桌面G蕊都可以采用面向对象的编程方法来实现,对象模型的实现方式没有区别,但复杂程度有所不同。桌面GIs要求全面,而嵌入式GIS要求精练,功能可裁减。表2.1.2.1为嵌入式GIS与桌面GIS的一个简单的比较。表2.1.2.1嵌入式GIS与桌面GIS的比较——、\桌面GIs嵌入式GIs程序存储方式PC机硬盘中嵌入式设备芯片中程序的容错程度高。不允许出错程序的修改和升级容易实现不容易实现程序的安全性低高程序的可靠性低高目标代码的大小限制基本无限制要求代码精练程序的资料容量大小嵌入式GIS主要特点是。可裁剪”性,包括资料格式的剪裁、功能剪裁和资料剪裁。不同的用户对兴趣点的要求不同,裁剪可顾及兴趣点内容的精确性、完整性。如个人移动导航系统所用的数字地图就可以很简单,资料格式只需要道路、地标、水体和分界线信息即可,不需要其它诸如植被、等高线等,也不必包括拓扑信息。功能上只要求浏览、卫星定位和简单的查询,不要求GIS中复杂的空间分析能力。资料内容也要作剪裁,道路和地标信息要求详细,其他信息都有作一定的简化,这样就可以节省容量和提高速度。由于运行在资料紧缺的嵌入式设备上,因此,嵌入式GIS应用程序必须考虑合理利用资源,尽量减少资源的消耗,包括CPU运算量、内存和外存的消耗,尽可能的提高效率.7 嵌入式GIS及相关技术硕士论文2.1.3嵌入式GIS的发展概况国外的GIS厂商都开展了嵌入式(珏S产品的研究和开发,有的已经提供了一些功能强大的嵌入式GIS软件。GIS市场中,Mapinfo、Autodcsk、ESRI、和lmergraph四大公司站在嵌入式GIS技术前沿,率先开发出一些软件【7】。Maplnfo公司是美国著名的桌面GIS厂商,它们针对嵌入式GIS推出了MapXMobile。MapXMobile采用MapX/MapXtreme对象模式——最新型的对象模式,可以快速地把MapXMobile组件添加到你的应用中。MapXMobile可以通过PocketPC中的GPs设备来显示坐标。开发者可以在应用程序使用合并、缓冲、相交、擦除等功能来处理点、线、面对象,并返回结果。用户可以利用MapXMobile方便地实现地图的缩放、漫游、选择、测距和图层控制、导航等功能。Autodesk公司提供了AutodeskOnsite的“移动访问”模块。这是移动的企业解决方案,包括软件、应用设计、开发服务、维护、培训和技术支持。Onsite与MapGuide网络地图技术公司最近开发的GIS设计服务器(GISDesignServer)技术相集成,可以传输交互地图、设计信息和商业订单到移动设备。Onsite的客户端包括笔触式用户接口设备,通常是移动掌上设备。Onsite并不是简单传送平面栅格影像,而是传送向量资料及其相关资料,用户可以查询、拉伸、修改、标注地图,然后可以与中心数据库同步这些改变。ESRI提高了觚GIS软件产品--ArcPad。ArcGIS提供全套商业解决方案,是可伸缩的,包括:运行Arclnfo、ArcEditor、ArcView的高端桌面计算机用户;使用ArclMS的IntemetGIS用户;针对便携、移动用户的ArcPad。移动资料是使用ArcIMS通过Internet提供服务,ArcIMS是一个交叉的平台应用,支持几千个并发处理和几百万的日请求。ArcPad支持多种资料接口,如SHP、BMP、JPG、CADRG等向量、栅格地图,不需要转换。ArcPad与GPS集成可支持野外作业人员的无线定位、实时通信和大容量数据库访问,以获得业务所需信息。Intergraph也建立了自己的移动GIs解决方案——曲temwhere。Intergraph功能着重于无线通信和LBS的工业应用。Intergraph凭借在空间信息与定位技术领域30年的开发经验积累,IntelliWhere解决方案体系提供用户实时、基于位置的信息服务以满足设备与资料的独立。这个解决方案具有开放性、可伸缩性,它与GeoMedia技术相辅相成,特别是GeoMedia的网络企业(WebEnterprise)产品。GeoMedia使用无线应用协议(wAP)提供地图和基于位置的信息服务。hltclliwhere允许用户利用移动设备搜索、检索、操作和交互生活消息,像短消息(SMS)一样简单。这个产品可以传送和接收与指定地域相关的属性消息。国内已经有一些公司开发出一些与地图密切相关的软件产品。例如,灵图软件8 南京理工大学硕士学位论文单兵作战系统中嵌入式G1s的研究技术有限公司推出的在移动信息设备上提供地理信息以及位置信息服务的SmartlnHand软件产品.北京慧图公司推出了一种可运行于掌上计算机、进行移动制图和GIS用的野外地质数据采集系统—_PocketMap。北京超图开发出嵌入式地理信息系统开发平台——eSuperM印。台湾“英瑞得信息”公司设计出支持GPS全球卫星定位系统专用软件。WalkMap地图随身走”.台湾通路股份有限公司设计出全台PDA电子地图产品——地图领航员PalmPilotForPalm和地图探险家MapExplorer2001forWmCE。这些嵌入式GIS产品大多数都是基于WINCE或者是其它商业化的嵌入式操作系统平台,价格昂贵,可移植性差,很难满足人们对便携设备的高性能、低成本的要求。出于安全的考虑,也不能用这些产品来研制军事设备。2.2其他相关技术综述22..1嵌入式系统嵌入式系统是指嵌入式计算机(EmbeddedComputer)及其应用系统,是指嵌入于各种设备及应用产品内部的计算机系统,它主要完成信号控制的功能,体积小,结构紧凑,可作为一个部件埋藏于所控制的装置中,它提供用户接口、管理有关信息的输入输出、监控设备工作,使设备及应用系统有较高智能和性价比。嵌入式系统由嵌入式硬件与嵌入式软件组成,硬件以芯片、模板、组件、控制器形式埋藏于设备内部,软件是实时多任务操作系统和各种专用软件,一般固化在ROM或闪存中。软硬件可剪裁,适用于对功能、体积、成本、可靠性、功耗有严格要求的计算机系统中【羽。嵌入式计算机系统主要用于各种信号处理与控制,最早出现在60年代武器控制中,后来用于军事指挥控制和通信系统,目前已在国防、国民经济及社会生活各领域普及应用,用于企业、军队、办公室、实验室以及个人家庭等各种场所。嵌入式系统的市场非常广泛,随着全球信息化的发展嵌入式系统市场还将进一步增长。嵌入式系统可以称为后Pc时代和后网络时代的新秀。嵌入式计算机系统同通用型计算机系统相比具有以下特点[91:◆嵌入式系统通常是面向特定应用的。嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密。9 嵌入式GIS及相关技术硕士论文◆嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。◆嵌入式系统的硬件和软件部必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力.‘◆嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。◆为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存贮于磁盘等载体中。◆嵌入式系统本身不具备自主开发能力,即使设计完成以后用户通常也是不能对其中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。22.2嵌入式操作系统嵌入式系统的软件是实现嵌入式系统功能的关键。也是计算机技术最活跃的研究方向之一。60年代,嵌入式系统就被通讯行业用于电话交换机,当时的嵌入式系统的软件仅是一堆特殊指令构成的控制循环。70年代末以后,随着嵌入式系统越来越复杂,软件也越来越复杂,多任务调度、内存管理、I/O设备管理、嵌入式的操作系统开始出现。80年代以后,产生了大量的各种平台上的嵌入式操作系统,比如VxWorks、pSOS、Neguleus、WinCE、各种Linux和Unix衍生的嵌入式版本和专用的实时系统等等【10l。虽然,由于应用的不同对嵌入式软件系统的要求也不同,而且对嵌入式系统软件的要求也和通用计算机系统上的软件有所不同,但是它们一般都具有如下特点:1.体积小。由于系统本身的存储空间的限制以及为了提高执行速度和系统的可靠性,嵌入式系统的软件一般都固化在内部芯片或则是单片机中,很少存储于磁盘等载体上,这就要求软件本身必须很小。2.执行速度快尽管半导体技术的发展使处理器速度不断提高,片上内存容量不断增加,但是在大多数应用中,存储空间仍然是非常宝贵的,还存在实时性的要求,因此要求程序编写和编译工具的质量要求很高,以减少程序二进制代码的长度,提高执行速度。3.可裁剪性好、可移植性好 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究通常他们都是模块化设计的,具有很强的可扩展性和可裁剪性。嵌入式系统的硬件平台繁杂,所以软件需要很好的可移植性。随着嵌入式系统的发展和应用到越来越多的领域,对它的要求也在发生着变化:1.复杂的嵌入式系统对操作系统的需要嵌入式系统覆盖面很广,从很简单到复杂度很高的系统都有,这主要是由具体应用要求决定的。简单的嵌入式系统根本没有操作系统,而只是一个控制循环.但是,当系统变得越来越复杂时,就需要一个嵌入式操作系统来支持。否则,应用软件就会变得过于复杂,使得开发难度过大,安全性和可靠性都难于保证。.2.支持多任务,具有实时性能在多任务嵌入式系统中,合理的任务调度必不可少,单纯通过提高处理器速度是无法达到目的的,这样就要求嵌入式系统的软件必须具有多任务调度能力。现在,多任务实时操作系统在这一领域的地位显得越来越重要。3.强大的联网功能很多传统的嵌入式操作系统是孤立存在的,但是在网络日益重要的今天,越来越多的嵌入式系统有了联网的要求。嵌入式系统与各种网络相连,尤其是与因特网连接,也给系统提出了很多新的要求,系统需要支持TCP/IP协议和相关实用程序,并且需要处理安全认证和访问控制问题。这些要求使系统变得更加复杂,需要更多的资源。这时就需要具有网络功能的嵌入式操作系统的支持。4.窗口交互功能今天,很多应用领域都要求嵌入式系统能够提供传统上只有PC和高端系统才能提供的类似于XWindow或者MicrosoftWindows的窗口交互系统。这对在运行空间和运行速度都有苛刻要求的嵌入式系统提出了挑战,因为这些窗口系统一般都要求比较高的硬件配置,并且还要考虑运行速度的问题。2.2.3GPS技术’,全球定位系统(GlobalPositioningSystem,简称GPS)是一个适用于全球、包括围绕地球运行的24颗卫星的无线电导航定位系统,由美国国防部(U.S.DepartmentofDefense,DOD)投资并控制,在全世界有数千万个民用GPS用户.该系统是为美军设计,由美国军方操纵.其系统组成如图2.2.3.1所示㈣.全球定位系统主要由三大部分组成:●空间部分;21颗工作卫星,3颗备用卫星。●地面支撵系统:1个主控站,3个注入站,5个监测站。 嵌入式GIS及相关技术硕士论文●用户设备部分:接收GPS卫星发射信号,以获得必要的导航和定位信息,经数据处理,完成导航和定位工作。GPS接收机硬件一般由主机、天线和电源组成。‘卫星1图2.2.3.1GPs系统构成卫星2卫星3卫星4富1,y.1脚’鬻2脚’富护,7.3’零批图2.2.3.2GPS定位原理GPS定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。如图2.2.3.2所示,假设t时刻在地面待测点上安置GPS接收机,可以测定GPS信号到达接收机的时间At,再加上接收机所接收到的卫星星历等其它数据可以确定以下四个方程式:12· 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究[(xl-x)2心1.y^zl-Z)2]1彪+c(Vtt-V,o)=dl【(x2_x)2ky2_y)钆z礁-z)2】1‰(v印v帕)---d2【(x3_x)2Hy3一y)2+(Z3·z)2】“2+c(V印VIo)---d3【(x4-xyqy4.y)qz4-z)2]”tK(V佴-V曲=d4上述四个方程式中待测点坐标x、Y、z和vm为未知参数,其中drffic△t(i=l、2、3、4)。di(i=l、2、3、4)分别为卫星l、卫星2、卫星3、卫星4到接收机之间的距离。Ati(ill、2、3、4)分别为卫星l、卫星2、卫星3、卫星4的信号到达接收机所经历的时间。c为GPS信号的传播速度(即光速)。四个方程中各个参数意义:x、Y、z为待测点的空闻直角坐标;Xi、yi、五(i=1、2、3、4)分别为卫星l、卫星2,卫星3、卫星4在t时刻的空间直角坐标,可由卫星导航电文求得;Ve(i=l,2、3、4)分别为卫星l、卫星2、卫星3、卫星4的卫星钟的钟差,由卫星星历提供;v田为接受机的钟差。由以上四个方程即可算出待测点的坐标x、Y、Z和接收机的钟差V由。2.3本章小结本章从总体上分析了嵌入式系统、地理信息系统(GtS)、嵌入式GIS、嵌入式操作系统以及GPS等与整个系统相关的一些技术。’ 系统结构及软硬件平台硕士论文3.系统结构及软硬件平台3.1系统结构根据军队实战要求,一个作战综合控制指挥系统由三级分系统组成:单兵系统、前方指挥系统、后方指挥中心系统。作战综合指挥系统的总体结构图如图3.1.1所示。图3.1.1作战综合指挥系统结构图.单兵子系统作为整个系统中与敌方最接近的前沿单元,是部队的眼睛,是部队的利刃。在数字化战场中,士兵不再被看作是单独孤立的,而是被看作是一个系统、一个作战乎台,它是战场信息网中的一个节点、一个终端、一个作战系统。单兵作战系统是应该是一个系统集成,它包括有几个即独立运作又相互配合的子系统。而本文研究的嵌入式GIS子系统也是单兵作战系统的一个重要的组成部分。嵌入式GIS系统结构如图3.1.2所示。14图3.1.2嵌入式GIS结构图 南京理工大学硕士擘位论文单兵作战系统中嵌入式6I$的研究由结构图可以看到,嵌入式GIS的逻辑最底层是嵌入式Liaux,在其上面—层是空间数据管理,负责空间数据的读写,空间数据管理层上面是根据空间数据绘制地图,并且可以进行信息检索、导航定位,信息标注等操作.最上面一层面对用户的嵌入式GIS应用软件的操作界面。3.2系统软硬件平台在开发嵌入式GIS程序前,必须为其搭建好系统的硬件平台、软件开发环境以及选择合适的开发工具。3.2.1硬件平台本文采用Intel公司的Sitsang开发平台作为系统的硬件平台。Sitsang开发平台是Intel专为嵌入式处理器IntelXscalePXA255设计的一个综合开发平台。hl瞅XscalePXA255处理器是一个具有高度集成度的通讯控制芯片,它基于IntelXscale微体系结构,内部集成了一个32bitXsealeRISC处理器内核,并具有逻辑单元、多个通讯信道、LCD控制器、内核和PCMcn控制器和通用的I/O口,是面向高性能、低功耗的手持设备而设计的应用处理器。PXA255采用7级超级流水线结构,兼容ARMv5TE架构,支持多媒体处理技术,。采用40位累加器和16位乘法器,以增强对音频和视频的译码能力.由于采用了多电源管理模式,32KB数据Cache和32KB指令Cache,2KB的微小型数据Cache,使得整体的功耗较低。PXA255处理器的主频最高可达400MHz。内部集成了多种外设控制器,其中包括16信道可配置DMA控制器、LCD控制器、接口,以及串行接口模块和USB接口模块等等。‘整个Sitsang开发平台包括hltelXscalgPXA255处理器、64MbytesSDRAM、32MbytesbootROM、32Mbytesflashmemory、触摸屏控制器、音频输入输出接口、2个USB主口、一个USB从1:3、fc总线通讯,以太网接口、红外线接El、标准UART接口可支持蓝牙、一个标准JTAG口、CF卡接口、SD卡接口等等。图3.2.1.1为系统硬件平台结构图。 系统结构及软硬件平台硕士论文3.2.2软件平台图3⋯21PXA255开发平台方框图系统的软件开发平台主要包括嵌入式操作系统和图形用户界面(GUI)。嵌入式系统是~种定制的系统,选择合适的操作系统和GUI是十分必要的。本系统采用嵌入式Linux作为嵌入式GIS的操作系统,使用QT/Embedded+Qtopia作为嵌入式GIS的GUI系统。:1.嵌入式Linux.复杂的嵌入式系统离不开嵌入式操作系统的支撑。嵌入式操作系统是一种实时的、支持嵌入式应用的操作系统软件,核心通常要求很小,因为嵌入式系统中硬件的ROM容量有限。现在,流行的嵌入式操作系统主要是WinCE、Linux、PalmOS、EPOC等.目前国内的嵌入式GIS系统基本上都是基于WINCE平台的,基于Linux平台的嵌入式GIS系统在市场上还没出现【121。16 南京理工大肇硕士学位论文单兵作战系统中嵌入式61S的研究嵌入式LinuxCEmbeddedLinux)是指对Linux进行小型化裁剪后,能够固化在容量只有几百K字节或几兆字节的内存芯片中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究是目前操作系统领域的一个热点。嵌入式Linux具有以下特性和优点:◆Linux是开放源码的,不存在黑箱技术,遍布全球的众多Linux爱好者又是Linux开发者的强大技术后盾。◆Linux的内核小、功能强大、运行稳定、系统健壮、效率高.◆Linux是一种开放源码的操作系统,易于定制剪裁,在价格上极具竞争力。◆Linux不仅支持X86型芯片,还可以支持30多种CPU和多种硬件平台,开发和使用都很容易.◆有大量的且不断增加的开发工具,为嵌入式系统的开发提供了良好的开发环境。◆它沿袭UNIX,遵循国际标准,可以方便地获得众多第三方硬件、软件厂商的支持.◆Linux内核的结构在网络方面是非常完整的。它提供了包括十兆、百兆、千兆的以太网络,以及对无线网络、TokenPing(令牌环网)、光纤甚至卫星的支持。在图象处理、文件管理及多任务支持等诸多方面都非常出色。l基于Linux的种种优点和特性,本课题采用嵌入式Linux作为系统的操作系统平台。将Linux用于嵌入式系统是近年来一个非常热门的研究方向.随着对嵌入式,Linux的研究的深入,通过对其内核进行裁减以减少体积,采用各种方法改善其实时性,以及现在各种用于嵌入式系统的芯片性能的提高,越来越多的嵌入式系统开始采用嵌入式Linux作为其操作系统。2.嵌入式GUI所谓GUl(GraphicsUserInterface),就是图形用户接口。一个良好的GUI系统可能影响一个产品的成败.与PC环境不同的是嵌入式系统通常安装在体积较小、资.源有限的装置上,因此,能够成为嵌入式系统GUI一定要具备以下条件【121:>体积小.大部分嵌入式系统用的flash只有几十兆字节,在这样苛刻的环境下只能尽量的把软件做小。;>消耗系统资源少.嵌入式系统的CPU都不会比PC上的好,内存也是少得多,因此GUI系统面临另一个挑战,即尽量少的消耗系统资源。>系统独立。嵌入式系统的一大特色就是硬件差异大,但无论底层硬件差异多大,上层GUI系统依旧需要表现出统一的界面,所以担任嵌入式GUI系统必须尽量与硬件独立。>可配置性。嵌入式系统往往是定制的,不同的嵌入式系统对GUI的要求也‘1' 系统结构及软硬件平台硕士论文不一样。有些系统要求简单的GUI功能,而有些系统则要求完整的GUI功能.因此用于嵌入式系统的GUI也必须是可定制的。现在已经有很多比较成熟的嵌入式GUI,如Microwindows、MiniGUI、OpcnGUI、PicoGUI、QT/Embedded、Tmy·X等等。表3.2.2.1是对几种主要的嵌入式GUI系统的比较。表3.2.2.1几种主要的嵌入式GUI系统的比较‘\\名称MiniGⅥMicrowindowsOpenGUIQT/Embedde参数\\\dAPI(完备W讥32(很完备)X,W'm32(win32)不完私有(很完Q叭C++)(很性)备备)完备)函数库大300KB600KB小移植性很好只支持x86较好(函数库平台的跨平台交叉编译较困难)授权条款LGPLLGPL:LGPLQPIdGPL系统消耗小(多线程和较大(基于Unix套接最小(不支较大(C++实MiniGUI-lite均字的传统客户,服务持多进程,现,系统资源是针对最小系器体系,进程间的通资源消耗最消耗较大)统资源消耗设信频繁,系统资源消小)计)耗较大)操作系统LimiXLinUX,DOS,ELKSDOS,Linux,Linux支持QNXQT是Linux下的C++用户接口开发包,它具有以下特点:◆支持多平台.其程序可在MSWindows系列(Windows95、Windows98、W'mdowsbit、Windows2000)和UNIX/X11系列(Ianux、SunSolaris、HP-UX、Di百talUNIX、mMAIX、SGImiX)等操作系统上进行方便的移植.◆国际化支持好。已经有很多语言版本,包括中文,从而解决了汉化问题。一◆高度面向对象,模块化高,编写程序简单明了。一般来说,用Mouf编写百行的代码才可实现的功能,用Qt只用十几行就能实现,因此可使程序员从繁琐的编程中解脱出来,以专注于程序本身的内容。◆丰富的API函数。在QTAPI中大概有250个c++类,大多数是GUI专有的。I暑· 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究QT/Embedded是发布QT库的著名公司Trolltech专门面向嵌入式系统的GUI开发库。它是一种c卜+图形用户接口应用程序框架,可以为开发者提供其所需的在嵌入式环境中的、功能全面的图形接口开发工具。它把fir的全部功能(包括强大的功能和不变的应用程序接口)带入Linux的嵌入式系统。凹,Embedded结合了小型和高性能优点,可以在友好的环境中建立代码。这就使程序员即使在没有嵌入式硬件的情况下仍能快速地建立起有效的解决方案。r”⋯9”‘”’1”⋯9⋯””””””54。”“94””7”’”“”4””9⋯⋯“。8}薯鬈≯蓼垒‘ll露‘礅掣2,≥l}谬荔酶孝瑟fi匿;蒜湖一图3.2.2.1Q舶三mbedded和Qtopia的关系Qtopia是TroUteeh公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,它提供了一套核心的应用程序,同时为开发者提供了一套面向对象的应用程序编程接口(APD。Qtopia是基于QT/Embedded的一个应用程序,是QT/Embedded的一个子集。QT/Embedde和Qtopia的关系如图3.2.2.1所示·综合各种因素考虑,本课题选用QT/Embedded+Qtopia作为嵌入式GIS的GUI系统。‘3.3系统开发环境的建立嵌入式系统的开发普遍是通过交叉编译环境来进行开发的,这是由嵌入式系统自身的特点所决定的。在嵌入式系统开发中,目标系统还没搭建起来之前,这时操作系统都不存在,更不用谈编译器了。但这时却需要针对目标平台的编译器来编译启动代码、内核等。而在目标平台搭建好后,由于一般目标平台的硬件资源、软件资源都比较有限,不允许或不能够在目标平台上安装编译应用程序所需要的编译器。这些因素决定了开发嵌入式系统,建立~个交叉编译环境是必须的。19 系统结构及软硬件平台硕士论文3.3.1交叉编译交叉编译,简单地说,就是在一个平台上生成另一个平台的可执行代码。所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,大家常说的x86Linux平台实际上是Intelx86体系结构和Linuxforx86操作系统的统称;而x86WinNT平台实际上是说b嘲x86体系结构和WindowsNTforx86操作系统的简称。交叉编译是嵌入式开发过程中的一项重要技术,它的主要特征是某机器中执行的程序代码不是在本机编译生成的,而是由另一台机器编泽生成的。一般把前者称为目标机(target),后者称为主机(host)。一般的开发步骤都是在主机上建立交叉编译环境,并在主机上开发程序,然后再交叉编译出能在目标机上运行的可执行文件,再通过串口或其他办法将其下载到目标机上执行。3.3.2开发环境简介·.图3.3.2.1开发环境结构图如图3.3.2.1所示,主机(host)为x86Linux平台,目标平台为Sitsang板。主机通过并13、串口以及以太网口与Sit.sang板相连接,并口是与Sitsang板的YrAG口直接相连的。Sitsang板的多功能串口(FFUART)与JTAG共用一个插头,这样减少了Sitsang板的引线插头,设计比较巧妙。JTAG13可以将引导程序redboot下载到Sits觚g板的Flash中.主机的串口再与多功能串口相连,在开发的时候就可以通过Linux的终端lllinicom来对Sitsang板远程控制,并对系统进行调试。由于JTAG的传输速率太低了,所以对Sitsang板烧写文件系统镜像时,由于文件比较大,用JTAG20 南京理工大学硕士学位论文单兵作战系统中嵌入式GI$的研究下载速度太慢,改用以太网口进行数据传输。因为redboot中包含了唧的Client,而主机有珊的Server,只要使用redlx)ot对Sitsang板进行网络设置后,就可以通过以太网口来传输数据了.当Sitsang板系统搭建好后,使用网络文件系统NFS来和主机进行数据传送更加方便快捷。3.3.3开发环境的建立1。建立交叉编译环境本系统开发平台的主机是x86PC机,操作系统为Redhat9.0Linux。在主机上建立交叉编译环境,需要安装交叉编译工具链,包括交叉编译工具(二进制工具binutils和针对Xsgale的gee编译器)和标准C函数库(glibc)。安装好这些后,设置好一些环境变量,交叉编译环境就建立完成。2.交叉编译引导程序引导程序的任务就是在操作系统安装完成之前提供必要的人机界面并完成网络等设备的初始化,在操作系统安装以后将操作系统载入内存并移交控制权。Redboot引导程序也是程序,要在Sitsang板上运行,所以也必须由针对Sitsang板的gcc编译器来编译后才能在目标机上运行。首先获取Redboot源码,然后利用主机上安装好的交叉编译环境交叉编译Redboot,最后通过JFLASH工具将其烧写到Sitsang板的FlashROM中,从而实现对操作系统的引导。3.编译QT/E和Qtopia无论是在主机Pc上交叉编译QT程序还是目标机Sitsang板上运行QT程序,都需要QT/E库文件。因此需要利用交叉编译器交叉编译QT/E,以生成需要的QT/E库文件。首先,将下载的fir/Embedded的源码解压出来,然后通过configure命令进行关于目标平台配置的设定,最后用make命令对代码进行编译生成库文件和二进制可执行文件。利用编译好的QT/Embedded库再编译Qtopia。4.配置文件系统并下载首先将QT/E库文件和Qtopia的应用程序加入到文件系统,然后根据需要对文件系统进行适当的裁减,将配置完成的文件系统存放在一个临时文件夹中,然后使用mkfs.jffs2工具生成JFFS2格式的文件系统镜像,最后通过唧将其下载到Sitsang板的FlashROM中。5.配置内核并下载首先根据系统的要求配置内核,再编译内核,生成内核镜像zlmage,最后用TFTP工具将内核镜像下载到Sitsang板的FlashROM中. 系统结构及软硬件平台硕士论文6.开发应用程序首先,在主机上用QtDesigner设计出系统界面,完成所需的各种功能,调试成功后,再移植到目标机Sitsang板上。移植时,重新生成pm工程文件,用Ilnake工具生成Makefde,通过arm-linux.gee交叉编译,生成可在Sitsang板上运行的二进制可执行文件,最后利用1FrP下载到Sitsang板上运行.’3.4QT编程QT是一个C++工具包,它由几百个C++类构成。因为C++是面向对象的编程(OOP)语言,而Qt是基于C++构造的,所以,QT也是具有OOP的所有优点。事实上,编写QT应用程序的大部分工作是在基于已有的Qt类编写用户类。因此,对于一个熟悉C++编程的人来说,QT编程和CH编程并没有太大的区别。不同的只是两者依赖的库不一样而已。另外,QT的信号和槽的通讯机制与传统的C++编程的回调函数也不一样。3,4.1信号和槽信号和槽用于对象间的通讯,是QT的核心机制,要精通QT编程就必须对信号和槽有所了解i信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它GUI工具的重要地方。信号和槽是QT自行定义的一种通信机制,它独立于标准的C/c++语言,因此要正确的处理信号和槽,必须借助一个称为moc(MetaObjectCompiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码。在其他众多GUI工具包中,窗口小部件(widget)都有一个回调函数用于响应它们能触发的每个动作,此回调函数通常是一个指向某个函数的指针。回调有两个缺点:首先,它们不是类型安全的,因为不能确定处理函数使用了正确的参数来调用回调函数;其次,回调和处理函数是非常强有力地联系在一起的,处理函数必须知道要调用哪个回调函数。‘QT使用信号和槽的机制来替代回调的技术。信号和槽的机制是类型安全的:j一个信号的签名必须与它的接受槽的签名相匹配。因为签名是一致的,编译器就可以帮助检测类型是否匹配。信号和槽是宽松地联系在一起的:一个发射信号的类不知道也不用注意哪个槽要接受这个信号。QT的信号和槽的机制可以保证如果把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。从QObject类或者它的一个子类继承的所有类可以包含信号和槽。当对象改变22 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究它们的状态时,信号被发送,这就是所有的对象通讯时所做的一切,它不知道也不注意无论有没有东西接收它所发射的信号。槽可以用来接收信号,但它们是正常的成员函数。一个槽不知道它是否被任意信号连接。一个槽可以与许多信号相连,一个信号也可以和你所期望的许多槽相连。信号和槽的连接是通过调用QObjea对象的cJarlllect函数来实现的.该函数的定义如下:boolQObjm::con.m(corlstQObjea+sender,corlstchar+signaJ,cO/lStQObjeet+receiver,constchar‘member)【static】这个函数的作用就是将发射者sender对象中的信号signal与接收者receiver中的member槽函数联系起来。当指定信号signal时必须使用QT的宏SIGNAL0,当指定槽函数时必须使用宏SLOT0。如果发射者与接收者属于同一个对象的话,那么在connect调用中接收者参数可以省略。图3.4.1.1是信号与槽的连接示意图。3.4.2国际化与中文化图3.4.1.1信号与槽的连接示意图“国际化”是指把原来为英文设计的计算机系统或应用软件改写为同时支持多 系统结构及软硬件平台硕士论文种语言和文化习俗的过程。在软件创作的初期,一般的编程语言、编译、开发都是只支持英文的,为了适应更广的语言和文化习俗,软件有必要在设计结构和机制上支持多语言的扩展特性,这一过程就称为国际化.“中文化”是一个很模糊的概念,简单地讲就是让“国际化”的软件支持中文。因此,要做“中文化”必须先做“国际化”。Q'r对国际化有很好的支持。QT使用了Unicode作为内部编码,可以同时支持多种编码。为QT增加一种编码的支持也比较方便,只要增加该编码和Umcode的转换编码便可以了.对于中文,QT支持GBK/Bi95编码。因此,Q'r程序的中文化很简单,可以利用QT的国际化支持很方便地实现。编写国际化的QT程序可以按以下几个步骤来实现:l_对所有用户可见的文本使用QString因为QString内部使用Unicode编码,常见的文本用QString来处理,这样就可以处理世界上的每种语言。同时,既然所有向用户呈现文本的QT函数都把QString作为参数,也就没有了char*到QString的转换的时间开销。2.对所有文字形式的文本使用订O程序中将会呈现给用户的所有文本,都要确保被声明成QObject::tr()函数的一个参数。程序运行时,程序中所有被如函数声明的文本都会被QTranslator翻译。3.构造翻译文件工具fmd廿可以用来查找程序中所有使用tr0/函数声明的文本,用法如下:findtr+.cpp>XXX.po接下来需要翻译生成的p0文件.p0文件中信息的编码是iso-8859.1,翻译成某种语言时应改成该语言使用的字符集,比如对于中文就是GB2312。而真正需要翻译的部分如下:#:i18n.cpp:34.傩gid”ExampleWidget::&File”msgstr””其中,第一行告诉需要翻译的文本所在的文件和位置,.第二行就是需要翻译的文本,第三行为翻译后的文本。po文件翻译好后,需要使用ms92qm工具把它转换.,为.qm文件.用法如下:.ms92qmXXX.poXXX.qm这个qm文件就是需要的翻译文件。QTranslator就是根据此文件来翻译的。4.创建翻译器翻译程序翻译文件建好后,还需为QApplication创建一个翻译器。程序运行时,翻译器载入翻译文件,根据翻译文件进行翻译.具体代码如下: 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究QI协slatof*u-'a吮slator=newQTranshtor(0);b'anslaior->load(”i18n_.gb.qm",。.勺;qApp->installTranslatoKwanslator);其中i18n_gb.qm是翻译文件,qApp为QApplicafion对象。虽然利用QT国际化来实现中文化具有通用性,但是还是比较复杂烦琐。如果只是提供给本地用户使用,无需国际化,则可利用QT带有的本地字符转换引擎来实现编码转换.QTextCodec就可以用来转换字符串的编码。示例代码如下:char*string=”中文和勘glish混和字符串!”;QTextCodec*gbk..codec=QTextCodec::codecByName(”GBF);QStringgbk__string2codec->toUnicode(string);QLabel*label=nffovQLabel({;bk_.sa-ing);另外,利用(yr国际化实现中文化还有个问题,就是QT程序无法访问中文目录。这是因为QDir中读取的文件目录是GBK的,它调用QVtle::encodeName函数来对目录进行编码,然后用QString来存储目录。因此,为了支持中文目录,需要设置QFile的编码函数。QHle::setEncodingFunctionoi蟊数可以用来指定QFile的编码函数。因此只要编写一个编码函数,利用QtcxtCodcc实现GBK到Unicode的转换,然后利用QFde::sctEncodingFunction0函数将其设置为QFfle的编码函数就可以让QT程序支持中文目录。3.5本章小结本章首先讨论了系统的总体结构,然后分别分析了系统的硬件平台、软件平台,接着分绍了系统的开发环境的建立,最后研究了QT的通讯机制及QT编程如何实现国际化和中文化等. 空间数据管理硕士论文4.空间数据管理空闻数据管理是嵌入式GIS的一个比较关键的模块,它负责对空间数据的读出和写入。地图显示、信息标注、定位和路径寻优等其他功能模块都是必须依赖空间数据管理才能碍以实现。4.1电子地图4.1.1电子地图概述地图是空间现象的模型,是现实世界的抽象。通常我们所看到的地图是以纸张、布或其他可见真实大小的物体为载体的,地图内容是绘制或印制在这些载体上。人们使用地图已经有几千年的历史,而电子地图则是随着计算机的发展而产生的一种新型地图。电子地图是指在计算机环境中制作和使用的,是由空间信息与属性信息构成的能够动态显示空间信息和属性信息及实时处理的数字图像。电子地图是存储在计算机的硬盘、软盘、光盘或磁带等介质上的,需要通过专用的计算机软件对这些数字信息进行显示、读取、检索、分析。.电子地图不仅包含纸质地图的各种地理要素,而且还包含其他环境信息和相关内容,具有多维环境信息的特点。例如公路在普通地图上用线划来表示位置,线的形状、宽度、颜色等不同符号表示公路的等级及其他信息:而在电子地图上,是通过一串X,Y坐标表示位置,通过线划的属性表示公路的等级及其他信息,电子地图上的线划属性可以有很多,比如公路等级,名称、路面材料、起止点名称、路宽、.长度、交通流量等等信息都可以作为一条道路的属性记录下来,能够比较全面地描述道路的情况,这些是普通地图简单的符号不可能表示出来的。电子地图的应用领域相当广泛,可广泛应用于资源开发、环境保护、城市规划、土地管理、精细农业、j地图测绘、交通、能源、通讯、林业、水利、电力、房地产开发、智能化小区、自然灾害的检测与评估、金融、保险、统计、军事、商业、石油与天然气、犯罪分析、运输导航、110报警,公交调度等各个社会领域。4.1.2地图分层技术数字地图分层显示是所有GIs系统都应具备的基本功能。目前存在两种分层的 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究方法:逻辑分层和物理分层,两种分层的思想各有优劣。逻辑分层是指数字地图在物理存储器的保存不是按图层来存储,而是通过系统的最终目标代码,结合实际的需要以及图层之间的空间拓扑关系来实现分层。这种分层的方法对文件来说很简捷,但是对系统的代码实现却十分麻烦,并且影响系统的运行速度.物理分层是空间对象按空间关系分开存储。一般是一个平面上的存储在一个文件之中,图层之间的空间对象之间的关系可以根据实际的需要通过程序来实现.这种方法在辅助存储上的文件数目多,每一层有多个文件,但是在系统实现上却简单了许多,而且有利于系统效率的提高。、本文采用的是物理分层,不同的图层存储不同的地图对象(点对象、线对象、面对象、文件对象等),不同图层叠加在一起就形成最终的地图.原理如图4.1.2.1所示。|。:,|’j,●●●*●●点图层线图层面图层图4.1.2.1地图分层示意图./4.2MapInfo地图文件格式目前,地理空间数据的存储格式比较混乱,不同的GIS厂商提出了各自专有的数据格式,比如Maplnfo公司的TAB格式,ESRI公司的Shpfiles格式等等。而这些GIS商家们处于商业利益考虑,都不公开他们的地图文件格式,所以如果采用他们的地图,就必须使用专用软件来处理这些地图文件。但是这些专用软件价格一般也很昂贵,这无疑又增加了系统的成本.另外这些软件基本上都是基于Windows 空同数据管理硕士论文平台的,如果用户开发的系统是基于其他平台的,则没办法使用这些软件.本文旨在开发出一套通用的GIS地图开发包,具有很好的通用性,可以支持不同GIS厂商的地图。本课题开发的嵌入式GIS暂时只支持MapInfo公司的电子地图的,但已经在设计系统总体结构时为其他GIS厂商的地图预留了接口,方便以后进行扩展。本文作者通过查找资料,阅读开源软件源码。长时间对MapInfo的地图格式的仔细分析,最后终于理解了Maplnfo电子地图的文件格式。Maplnfo电子地图采用层次结构组织空间数据,即根据不同的专题将地图分层,每个图层存储于若干个基本的文件,这些文件的文件名除后缀名外部相同。它们是:TAB文件(属性数据的表结构文件)、DAT文件(属性数据文件)、ID文件(索引文件)、MAP文件(空间数据文件)。下面分剐介绍这几个文件。4.2.1TAB文件相对于其他几个文件,TAB文件是最简单的,因为它是ASCII码格式的文本文件,可以用常用的文件编辑工具直接打开。TAB文件主要是定义地图属性数据的表结构,一般都是以字符串“!table”作为开始第一行,然后是用字符串“Iversion”来定义版本号,用字符串“!chaxset”定义默认字符集。字符串“DefinitionTable”这一行申明了下面开始是表结构的定义,一般包括表类型、使用字符集、字段数、字段名、字段类型以及字段长度。如果字段不止一个,则还会定义索引字段。有的表结构文件还会有一些空间信息描述。TAB文件还有另外一个作用就是将一个图层的几个文件关联起来。因此一般打开一个图层,只需指定该图层的TAB文件,就可以利用它们四个文件的文件名相同(除后缀名外)这点来打开其他3个文件(DAT文件、D文件、MAP文件),从而完成对该图层的访问。4.2.2DAT文件DAT文件是属性数据文件,以二进制格式存储的地图对象的属性数据。它的整体存储结构如图4.2.2.1所示。;。文件头块长度为32Byte,其具体的文件存储格式如下:0】【oo字节:表类型0x01--0x03字节:此表更新日期的年、月、日o】【04—弧0r7字节:DAT文件中存储的总记录数0x08--0x09字节:第一条记录的位置指针0x0A--0x0B字节:记录的长度28 南京理工大学硕士学位论文单兵作战系绕中嵌入式GIS的研究ox0(ⅫxlF字节:无意义文件头块紧接着就是字段定义块,每个字段定义块是32字节,字段定义的个数可以由文件头块中第一条记录的位置求得.字段定义块的存储格式如下:、0x00--0x0A字节:字段名0x0B字节:字段类型0x()c---0x0F字节:无意义0x10字节:字段长度oxll字节:小数精度o)【12—0x1F字节:无意义·字段定义块后就是一条接一条地存储记录信息。每条记录信息又是由一个字段一个字段地存储。文件头块?字段定义块1记录块}⋯7⋯⋯7{r{}州《j一i;帮。,嚷条:∞~』—-b字条tk段记‘4”?>定⋯⋯l录r哆义7I记记l录录;位}《{;“置、l⋯。il⋯j三4.2.3ID文件图4.2.2.1DAT文件结构DAT文件ID文件MAP文件纩7。“!第一条记录≯V”.i1l:jl:l第二条记录._I乏空间信息:≥·jrj弋l·{空游信息:},5第一条记录●■一,第二条记录}‘o§+乞,。‘。。舰。么.图4.2.3.1Ⅲ文件的索引功能D文件为索引文件,记录了地图中每一个空间对象在空间数据文件(血ap)中的位置指针,用于连接图形对象和属性数据。索引文件结构比较简单,它以二进制格式存储一个索引表,以四个字节为一组,每组的四个字节组成一个长整数,代表一 空甸数据管理硕士论文个地图对象在MAP文件(空间数据文件)中的绝对位置,而根据这四个字节在索引文件中的位置可以计算出对应的地图对象的属性记录号。因此,通过D文件可以将每个地图对象的空间数据信息和属性信息联系起来,如图4.2.3.1所示。4.2AMAP文件一MAP文件为空间数据文件,以二迸制格式存储地图对象的空间数据。地图对象的空间数据包括对象的几何类型、坐标信息、资源信息等。MAP文件以512(0x200)字节为单位分成若干二进制块,每一块的第一个字节表示此块属于什么类型。总共有6种不同类型的二进制块:文件头块、索引块、对象块、坐标块、已删除块、资源块。其中已删除块是闲置的空间,没有存储任何有用信息,因此就不介绍它了。下面分别讨论其他5种二进制块的文件组织结构:>文件头块0EADBLOCK)文件头块第一字节为o)【00。为文件的第一个512字节的二进制块(在某些新版本的Mapinfo文件中,文件头块是前面的1024字节,不是512字节),在整个MAP文件中只有一个头块。头块存储的主要内容是地图坐标系统以及内部结构。如果头块不是512字节,而是1024字节,则后面的512字节中还会有一些投影参数。头块的文件存储格式具体见附录A。·≯索引块佃怕ExBLOCK)’根索引块图4.2.4.IMAP文件索引树结构图索引块第一字节为0x01,长度为512字节。MAP文件中一般有多个索引块,所有的索引块组成~颗索引树,而此索引数的叶节点指向MAP文件的对象块。图4.2.4.1就是MAP文件中索引树的示意图。索引块的存储格式很简单,第1个字节为块类型标识,第2字节无意义,第3~4字节为索引块中包含的索引数据个数,30 南京理工大学硬士学位论文单兵作战系统中嵌入式GIS的研究第5字节开始连续地存储索引数据。每个索引数据为20字节,前16字节为边界坐标,后4字节为此索引数据指向的子索引块或对象块的位置指针。》对象块(OBJECTBLOCK)对象块的第一个字节为ox02,长度为512字节。MAP文件中对象块一般是多个,存储具体的地图对象(Objec0信息。对象块的前20字节存储格式如下:0x000字节:块类型标识oxool字节:无意义0x002,---Ox003字节:此块使用的字絮数目(不包含前4字节)0x004--0x00B字节:采用压缩坐标时,原点的坐标0x0(O---0x00F字节:此对象块对应的第一个坐标块的位置指针oxOlO—o】【013字节:此对象块对应的最后一个坐标块的位置指针对象块从0x014字节开始一个一个地存储对象数据。对象有许多不同的类型,不同的对象在对象块中的存储长度不相同。不同的对象对应着不同的几何形状(如点、线,面等),因此在对象块中的存储格式也不一样。但几何形状相同的对象又有两种存储格式,一种是坐标数据采用压缩坐标格式,另外一种是采用非压缩坐标的格式。所有对象的前5字节存储格式都一样:第l字节都是对象类型号,第2-5字节是此对象的对象编号,因此本文讨论对象的存储格式都是从第5字节开始的。由于对象种类比较多,具体存储格式见附录B。>坐标块(COORDIANTEBLOCK)坐标块第一字节为0x03,长度为512字节。坐标块存储的主要是对象的坐标信息。坐标块的存储格式很简单,前8字节为总体信息,其的存储格式如下:o)【00字节:块类型标识0x01字节:无意义字节0x02--Ox03字节:此块使用的字节数(不包含前面的8字节)ox04—0)【0r7字节:下个坐标块的位置指针坐标块从0x08字节开始存储的就是对象的坐标信息。只有部分对象会在坐标块中存储它们几何图形的坐标信息。如果某对象在坐标块中存储有坐标信息,则该对象在对象块中就会存储有使用的坐标块的位置指针,对象便可以利用这个位置指针来访问坐标块,获得对象所需的坐标信息。>资源块(RESOURCEBI.OCK)资源块第一字节为0x05,长度为512字节。资源块存储的是绘制对象所需的一些工具的定义表,包括画笔、画刷,符号,字体。资源块的前8字节为此块总体信息,存储格式如下:0】【00字节:块类型标识 空同数据管理硕士论文0x01字节:无意义0x0"2,--q)】【03字节:此块使用的字节数(不包括前8字节)0x04---0]【07字节:下个资源块的位置指针资源块从ox08字节开始存锗的是连续的资源定义块。每个资源定义块的第一个字节表示资源定义块定义的资源类型。总共有4种资源定义(画笔、画刷、符号、字体),它们的存储格式如下:◆画笔定义的格式、0x00字节:资源类型标识(Ox01)0x01---0x04字节:使用此资源的对象数0x05字节:象素宽度0】【06字节:线形0x07字节:点宽0x08---0x0A字节:线颜色◆画刷定义的格式0x00字节:资源类型标识(0x02)0x01—Ox04字节:使用此资源的对象数Ox05字节:画刷的填充样式0x06字节:是否透明填充0x07--0x09字节:前景颜色0x0A--0x0C字节:背景颜色◆字体定义的格式0xoo字节:资源类型标识(0x03)0x01—o】【04字节:使用此资源的对象数o】【05—0)【24字节:字体名◆符号定义的格式0x00字节:资源类型标识(0x04)0x01----0x04字节:使用此资源的对象数:0x05-.-0x06字节:符号编号o】【0r7—0】【08字节;符号大小0x09字节:无意义0x0A—0xoC字节:符号颜色文件头块中存储了第一个资源块的位置指针,而每个资源块中又存储了下个资源块的位置指针,这样所有的资源块就组成一个单向链表。所以只要通过文件头块中的第一个资源块的位置指针就可以访问MAP文件中全部的资源块。 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究43软件实现空间数据管理是嵌入式GIS的一个比较关键的模块,它负责对空间数据的读出和写入。本文旨在开发出一套通用的GIS地图开发包,这个开发包的空间数据管理模块应该支持不同GIS厂商的文件格式。虽然本文暂时只支持MapIufo公司的地图格式,但是本文在设计空间数据管理时,作者充分利用c++面向对象编程技术,考虑到了系统的通用性,为以后支持其他格式的GIS地图预留了接口。空间数据管理的结构图4.3.1所示。、4,3.1空间数据管理的结构图前面已经讲到,地图分层显示是所有GIs系统都应具备的基本功能。因此本文空间数据管理模块以图层为基本单位来进行读、写操作,访问空间数据信息。图层由对象(Objec0组成。每个对象拥有不同的对象特性(Feature),即有不同的几何形状和不同的属性数据。图层利用对象特性(Feature)来逐个访问对象,并将对象的几何形状和属性数据保存在该对象的对象特性(Feature)中。因此对象特性(Feature)用几何形状子块存储对象的几何形状相关的数据信息,用属性数据子块存储对象的属性数据。几何形状子块实现的类继承关系图见图4.3.2所示。由图4.3.1可知,空间数据管理模块依靠图层提供的接口来逐个访问图层所包含的所有对象。但通用GIS接口这层主要作用是为了通用性而为其他格式地图预留接口,方便以后系统的扩展,因 空间数据管理硕士论文此并来提供访问对象的实际接口.通用GIS接口层的整体类结构如图4.33所示。图4.3.2几何形状模块的类结构厂一二荟石一一]L一一一一一一一一1一一一一一一一一一J’。『”飞焉r—习.,包。。譬坌!i!型墅。。l图4.3.3通用GIS图层接口整体类结构图通用GIS接口的存在为系统提供了良好的可扩展性,方便以后系统进行通用性方面的改进。譬如,要支持新的GIS地图,只需分别从通用图层类UGKLayer和通用对象特性类UGKFeature继承出子类,在继承子类中具体实现针对某一特定格式的地图的空间数据管理功能,并提供实际的接口用来访问此地图的空间数据。本文暂时只支持MapInfo电子地图,下面讨论具体实现。 南京理工大学硬士学位论文单兵作战系统中嵌入式GIS的研究Maplnfo地图存储格式比较复杂,采用层次结构组织空间数据,而每层数据又采用双数据库存储模式,即空间数据与属性数据分开存储,两者之间通过索引机制关联起来。结合前面一节的分析,具体来说,Maplnfo电子地图以表的形式来组织地图的。每个表对应一个图层,由四个文件来存储数据,分别是TAB文件、DAT文件、D文件、MAP文件.图层的属性数据存储在DAT文件中,属性数据的表结构存储在TAB文件中,图层的空间数据存储在MAP文件中,属性数据与空间数据之间通过D文件存储的索引表关联起来.一个表的四个文件具有相同的文件名(除后缀名外),因此打开一个图层时,只需指定其TAB文件即可。图4.3.4Maplnfo地图的对象特性类图’因为Maplnfo电子地图是以图层组织的,所以对它的空间数据管理也必须以图层为基本单位来进行.为实现对MapInfo电子地图的空间数据管理,需要从通用图层类UGKLayer继承出针对Maplnfo电子地图的图层类,用来管理图层,提供接口访问地图对象.另外还需要从通用对象特性类UGKFeature继承出子类,用来存储 空问数据管理硕士论文描述地图对象特性的信息。MapInfo电子地图的对象种类很多,因此需要很多不同的对象特。l生(Featare)类来描述这些对象。这些对象特性(Feature)类的继承关系图如图4.3A所示。Maplnfo地图的空间数据管理的实现类结构图如图4.3.5所示。图4.3.5MapInfo地图的空间数据管理类图Maplnfo电子地图并非只有一种存储格式,而是有两种存储格式:基于TAB文件的存储格式和基于MID/MIF文件的存储格式。在图4-3.5中,MapInfoFile类继承UGKLayer类,代表MapInfo地图的图层,但它只是个抽象类,它又有四个派生类:TABF'de、MIFFile、TABSeamless、TABView。类TABVtle处理普通的基于TAB 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究文件的MapInfo地图,类MIPFde处理基于MID/MIF文件的MapInfo地图.类TABSeamless和类TABView都是为了处理一些比较特殊的复杂的TAB文件格式的MapInfo地图而预留的.普通的基于TAB文件的Maplnfo地图使用最为广泛,因此下面只讨论类TABle访问对象的具体实现。通过图层逐个访问MapInfo地图的地图对象有两种方法:一种是通过遍历D文件中存储的对象的位置指针来逐个访问图层中的所有对象,其流程图如图4.3.6中(a)所示;另一种则是遍历MAP文件中的索引块来访问所有的对象,其流程图如图4.3.6中(b)所示i4A本章小结空间数据管理是GIS非常重要的组成部分,因此本章也是本论文的重点。本章首先介绍了电子地图及分层技术,然后详细地研究了MapInfo电子地图的文件格式,最后分析说明了空间数据管理模块的具体软件实现。 皇旦塾堡!堕塑主兰苎(_)(b)图4.3.6逐个访问MapInfo地图对象流程图 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究5.系统实现5.1图形用户界面图形用户界面(GUD是负责系统与用户的交互工作。图形界面的好坏有时可以决定了一个系统的成功与否。本系统以嵌入式I.inux为操作系统,以Q,r饪Imbedded为GUI工具,设计实现了系统的图形用户界面(Gta)。5.1.1启动西面用过Linux操作系统的人都知道,Linux的开机过程很无趣,总是显示一大堆的内核启动信息。如果一个Windows用户去使用Linux系统,一定会惊讶Linux的这些启动信息,或许还以为系统出现了错误,因为Windows启动时只有漂亮的启动画面,只有在系统出错时才会输出~些提示信息。Linux的这些内核启动信息主要是方便系统管理员的调试,对普通用户没有什么用处。因此如果在启动时用一幅漂亮的图片来替代这些烦琐而无用的启动信息,将大大增加系统的美观性。’要为Linux制作启动画面,需要帧缓冲(FrameBuffer)支持。帧缓冲设备是对图象硬件设备提供了一种抽象化处理.它代表了一些视频硬件设备,允许应用软件通过定义明确的界面来访问图象硬件设备,软件无需了解任何涉及硬件低层驱动的东西(如硬件寄存器)。Linux内核本身自带了帧缓冲的驱动,但是默认没有打开此选项。如果要使内核支持帧缓冲,需要在编译内核时加入帧缓冲的选项。有了帧缓冲,就只需要将要显示的图片转换为内核能处理的格式。这样启动时内核利用Fl'a/neBuffer将该图片数据显示出来。如果只是让内核在启动时显示图片,内核启动信息还是会出现。要屏蔽这些启动信息,需要修改内核的源码。内核源码树的最顶层目录下有个kernel子目录,修改该目录下print叠.c文件,将其中的DEFAULT_CONSOLE_LOGLEVEL改为l(默认的是7),然后重新编译内核。这样新内核启动时,就不会出现启动信息,而是显示自定义的图片..启动时如果只显示图片,不提示任何信息,会导致系统的用户界面不够友好。用户对整个启动过程的进度不了解,不知道还需多久启动过程才能结束,因此会感觉启动的时间很漫长.因此需要在启动时显示一个系统启动的进度条,告诉用户整个启动过程已经完成百分之几。为了让Linux支持开机时显示进度条,Linux韵开源组织开发了一个LinuxProgressPatch补丁,可以在一些开源网站上下载。为内核 系统实现硕士论文打上这个补丁,重新编译内核,这样新内核就可以在开机时显示启动的进度条了.系统最后的启动画面如图5.1.1.1所示.5.1.2系统主界面图5.1.1.1系统开机画面QT/Embedded是著名公司Trolltech专门面向嵌入式系统的GUI开发库,它为开发者提供了丰富的GUI类,开发者可以方便地从这些的GUI类继承出子类,完成系统的GUI设计。。本文的系统主界面类mainfrm就是继承自QT/Embextded库的QMainWmdow类,而实现地图绘制画布的类UGKCanvas则继承白QFrame类。主界面是整个系统的主窗体,负责响应菜单事件、工具栏事件,并根据用户的要求,在界面中央绘制出地图。而具体绘制地图的工作则是由UGKCallYas类来实现的。具体的程序界面可以通过QT自带的工具QtDesigner来设计。QtDesigner提供可视化的界面设计,方便开发者设计出比较美观的界面,设计好的窗体为后缀名为ui的文件。QT的另外一个工具uic可以将.ui文件转换为标准C++的.1I文件和.cpp文件。通过uic工具的转换,.h文件为界面类的声明部分,而实现部分代码则在.cpp40 南京理工大学殒士学位论文单兵作战系统中嵌入式GIs的研究文件中.开发者剩下的工作就是实现具体功能。本文系统主界面如图5.1.2.1所示.鼢酗蟠涵盈经《譬籀戳弱戳弱瑶琵驻瓣翰鞴露磁骝弘琵嚣猫繇缓獗露裁糕貂籀露戮嚣露蕊溯鞭强弱翳藤落鞴嘲I魏文#RD耀助毽,i;冷气氏鬯;夕稳|一”“⋯”+~”+{准钐彳S.2地图显示图5.1.2.1系统主界面地图显示是嵌入式GIS的基本功能,信息标注、导航定位等功能都必须建立在地图显示基础之上。下面讨论地图显示涉及到的技术以及具体实现。5.2.1坐标转换MapInfo电子地图的MAP文件中使用长整数坐标来描述地图对象的坐标信息(经度、纬度),横坐标和纵坐标的坐标范围都是从.1·109到1"109。因此,需要将地图文件中的数字坐标转换为地图坐标.这个转换是线性转换,并且MAP文件的头块存储有数字坐标转换到地图坐标的比例系数以及偏移量(见附录A),因此比较容易实现。需要注意的坐标原点象限这个值(MAP头块中也有定义,见附录A)。坐标原点象限决定数字坐标对应的地理坐标选用什么样的坐标系。坐标原点象限如果是一象限,说明地理坐标采用的是N.E坐标,也就是说如果A点的横坐标大于B点的横坐标,则说明A点在B点的东方,类似,如果A点的纵坐标大于B点的纵坐标,则说明A点在B点的北方。如果是二象限,地理坐标采用的就是N_w坐标,即如果A点的横坐标大于B点的横坐标,则说明A点在B点的西方而不是东41 系统实现硕士论文方,纵坐标与一象限时相同.其他象限依次类推。下面讨论整数坐标与地理坐标的转换公式。、09●_毛b)n.1C9(0,0)1C97.109‘dⅧAX毫,y)2(xO,y0)瑚indXMax7:lYMin(a)长整数坐标系(b)地理坐标系图5.2.1.1长整数坐标与地理坐标的转换每个图层都有个最小边界矩形(MBR),如图5.2.1.1中(b)所示,其中矩形为此MBR。该矩形的宽和高在整数坐标系中都用2"109来表示,如图5.2.1.I中(a)所示。因此在地理坐标系中,区间(d)Mn,dXMax)X㈣E数坐标系中横坐标范围(.109,109),而区间(d讹,dYMax)对应于级坐标范围(.109,109)。整数坐标转换到地理坐标的比例系数为:m_XScale=2'105'/(dXMax-dXMin)m_YScale=2*lOV/(dYMax—dYMin)现假设点P的地理坐标为(x,y),对应的整数坐标为(曲),图层边界的中心点0假设为(xO,yO),则对应的整数坐标为(O,o),则有:xO--(dXMin+dXMax)/2.yO=(dYMin+dYMax)/2假设坐标原点象限是第一象限,则有等式:(x-xO)8m__XScale=(a-o)(y-yO)+m_YScale=(b-o)整数坐标为:a=x*m_XScale-xO*m_..XScaleb=y‘m_YScale-yO*m_YScale如果定义偏移量m_XDispl=·xO+m._XScale=-m_XScale*(dXMin+dXMax)/2m_YDispl=-yo‘m_YScale=-mYScale*(dYMin+dYMax)/2则可得出地理坐标到整数坐标的转换公式:42 a=x*m_XScale+m_.XDisplb--y*m_YScale+mYDispl反过来,由整数坐标转换到地图坐标则为:x=(a-m_XDispl)/mXScaley=(b-m_YDispl)/m_YScale对于坐标原点象限是其他象限的情况,可以类似地推导出地理坐标与整数坐标之间相互转换的公式.因为整数坐标转换到地理坐标的比例系数m_XScale和m_YScale在MAP文件中都有告诉,偏移量mXDispl和mY】Displ在MAP文件中也有告诉,因此根据上面的公式就能实现整数坐标与地理坐标之间的相互换算。P●(xJ)O●(ceaX,cenY)(b)地理坐标系幽5.2.I.2屏幂坐标与地理坐标的转换为了绘制地图,还需要将地理坐标转换为屏幕坐标。现假设地理坐标系中有点P(如图5.2.1.2所示),坐标为(x,y),其在屏幕坐标系中坐标为(Sx,sy)。屏幕中心为点O,坐标为(sw/2,sh/2),SW为屏幕宽度,sh为屏幕高度。屏幕中心对应的在地理坐标系中的坐标为(cenx,cenY)。另外,假设单位屏幕像素对应的地理距离为DistperPixel,则点P的屏幕坐标为:.弧=int(sw/24-(x-ccnX)/Disq埘Pixcl);sy=int(sh/2-(y-cenY)/DistperPixel);转换时只需要注意一点,屏幕坐标系中纵坐标是向下的,与地理坐标系是相反的。.5.2.2地图对象绘镪与标记在第4章讨论M叩五面地图格式时可知地图对象种类比较多,譬如点对象,线对象、多边形对象、区域对象、矩形对象、椭圆对象等等.这些对象在图形绘制时 系统实现硕士论文可归结于三种符号:点状符号、线状符号和面状符号.下面分别讨论如何绘制它们。≯点状符号地图通常使用的点状符号有三种:基本符号,字体符号和自定义符号.基本符号为Maplnfo公司定义的一些符号,而字体符号则是使用某些符号字体来表示,自定义符号则是用某些bmp图片或其他格式的图片表示。如果点状符号使用的是自定义符号,绘图时需要将该自定义符号图片绘制在地图上.具体编程实现是利用QPi)cmap加载图片,然后利用QPainter的函数drawPixmapO将Qpixmap绘制到绘图设备上.字体符号是字体里的字符是表示形状的符号而不是表意思的普通字符的。Maplnfo地图使用的基本符号也是以符号字体的形式存在的。因此对于Maplnfo地图的点对象的绘制,除了使用自定义符号的点对象夕卜,其余都是使用字体符号。如何将这些字体符号绘制到地图上呢?具体实现很简单,利用QFont类来打开这个字体,然后就可以使用Qpainter的函数drawText来将字体里的符号绘制到绘图设备上。>线状符号有良好线型的矢量图形系统才具备较强的描述和显示能力。MapInfo支持很多线型的线状符号,而QT的绘图工具QPen支持的线型只有几种简单的线型。简单线型的线状符号可以直接利用QPainter行绘制,象铁路这样的复杂线型的线状符号就只能通过程序设计来实现。,d图5.2.2.1铁路线型示意图因为铁路在地图中比较常见,下面讨论如何绘制铁路这种复杂的线状符号。在地图上可以看到,描述铁路的符号是由黑白相间的线段组成的,因此可以通过交替绘制黑白小矩形来实现铁路线型。如图5.2.2.1,假设现需绘制从A点到B点的铁路。首先,计算出A点到B点连线与水平线的夹角ang及A点与B点之间的距离Dist。 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究根据夹角ang及A点和B点的坐标,假定铁路线型宽度定为Wd,便可计算出a、b、c、d四点的坐标。假设铁路线型中黑自方块的长度为Len,则m、11、w、v四点的坐标可以由a点、b点、c点、d点四点求出。绘制地图时,先将a、b、c、d四点连起来,然后先用白色将矩形amnd填充,再用黑色将矩形mwvln填充。如此交替地填充矩形,就可以绘制出铁路线型的线符号。需要注意一点,需要确保线型在连续直线上的连续性。譬如对于铁路线型,如图5.2.2.1所示,A点与B点之间的铁路线型符号,最后一个填充块并不是一个完整的黑色填充块。如果B点与C点也通过铁路线型相连,则绘制B点与C点之间的铁路线型时,应该先绘制一小段黑色填充块,和A点与B点之间的最后一个黑填充方块组合成一个完整的黑色填充块。经过这样的处理,就可以确保线型的连续性。>面状符号面状符号用来表示由闭合线围成的区域对象。面符号的绘制就是将区域的边界线绘制出来,再进行填充。因此绘制面状符号由绘制线状符号和填充两步组成。因为面符号的边界线的线型都是普通的线型,绘制面状符号时可以利用QPainter直接绘制边界多边形。Q脯n皖:dmwPolygonO函数可以用来绘制面状符号的边界多边形,并且该函数还会使用Qpainter当前的画刷填充多边形。所以绘制面状符号只须将其边界多边形及填充颜色告诉QPMnter,利用QPaimer::drawPolygonOi弱数便可实现面状符号的绘制。地图对象显示除了要显示几何形状外,还应该显示其属性信息。因此,地图对象绘制好后,需要对其进行属性信息标记。只有进行了属性信息标记,同几何形状的对象之间才能相互区别。标记的实现是将属性信息利用QPaimer:.:drawTextO函数绘制到地图上.对象的标记位置选择是很重要的,因为标记位置选择不恰当,会影响地图的显示效果。对象的几何形状不同,标记位置选择也不同。对于点状符号,应以点状符号为中心,在其上下左右四个方向中的任一适当位置绘制标记,标记呈水平方向排列;对于线状符号,标记应沿线状符号延伸方向从左向右或从上向下排列,字的间隔均匀一致,特别长的线状符号,名称标记可重复出现;对于面状符号,标记一般置于面状符号之内,沿面状符号最大延伸方向排列,字的间隔均匀一致。一另外还需要注意,标记不能遮盖地物,标记之间不能相互重叠。5.23图层控制由前面章节的讨论可知,Maplnfo地图是按图层组织计算机地图的。也就是说,将一幅计算机地图加工成多个层层叠加的透明层,这个透明层就称为图层。每个图 系统实现硕士论文层包含了整个地图的一个不同方面.例如,第一个图层包含国家边界,第二个图层有代表首都的符号,第三个图层包含高速公路,把它们叠加在一起就形成一幅完整的地图。因为完整地图是由多个图层叠加起来形成的,而每个图层存储在不同的文件中,所以绘制地图也就必须以图层来组织。因为地图是由图层叠加起来形成的,所以组成地图的图层集合存在上下方向的位置关系。绘制地图时,位置在下面的图层先绘制,位置在上面的后绘制。正确地排列图层很重要。例如,假如地图由两个图层叠加而成,一个是省边界的面图层,一个是省会城市的点图层,如果图层顺序排列不对,将面图层放在点图层的上面,则点图层就会被遮掩。因此,需要对地图的图层集合的排列顺序进行管理。另外,由于地图采用分层显示,图层与图层之间没有关联,可以控制只显示某个图层或不显示某个图层。有时需要让某个图层只在一定视野范围内才显示,超出这个视野就不显示。所有这些都要求能对图层进行管理、控制。系统主界面类曲lin矗m中定义了图层管理类GUI_Manager对象,负责管理维护地图的图层集合。GUI_Manager中定义图层列表,用来保存每个图层对象。图层类为GUI_Layer,定义了图层在图层集合中的排列位置以及是否显示、显示视野、是否标记等属性。主界面可以通过。文件”菜单中的“图层”菜单调用出图层控制窗体,如图5.2.3.1所示。图层控制窗体可以添加、删除图层,也可以调整图层集合排 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究列顺序,“显示”按钮可以调用显示控制窗体(如图5.2.3.2所示)来控制图层的显示属性,“标记”按钮则可以调用标记控制窗体(如图5.2.3.3所示)来控制图层的标记属性。图5.2.3.2显示控制窗体5.2A地图缩放及漫游图5.2.3.3标记控制窗体地图无级缩放是数字地图应具备的普通功能。地图缩放就是指通过增加或缩小单位屏幕象素对应的地图距离,从而实现放大、缩小设备屏幕显示的地图视野。所谓1无级”指的是图形能以任何的比例进行显示.系统主界面的工具条上的放大按钮鼍瓤和缩小按钮≥飞就是用来放大、缩小地图的。放大地图操作具体如下:点击放大按钮,然后按下鼠标左键不放在地图上拖动,只要不释放左键,在地图上就会出现一个虚线矩形.当释放鼠标左键时,系统就会将点下左键时和释放左键时的两点所决定的矩形作为放大矩形区域,将这个区域的地图放大到整个地图屏幕区域。地图缩小操作完全相同,只是系统会通过一定换算,将矩形选中区域的地图缩小显示。下面讨论系统如何实现地图放大显示。假设主界面中地图绘制区域在屏幕坐标的位置如图5.2.4.1中所示,其中实线坐标为屏幕坐标,实线矩形为地图绘制区域,虚线坐标为地理坐标,点0为实线矩形 系统实现硕士论文的中心点。现假设当前地图水平视野为oldViewX,垂直视野为oldⅥewY,点O对应的地理坐标为(oldCenX,oldCcnY),图5.2.4.1中的虚线矩形为选取的放大区域矩形,点O’为虚线矩形中心点.·图5.2.4.1地图放大操作绘制地图就是将对象的地理坐标转换为屏幕坐标,然后绘制在设备屏幕上。只要知道屏幕中心点对应的地理坐标以及单位屏幕象素对应的地图距离就可以将地理坐标转换为屏幕坐标。现要将虚线矩形内的区域放大显示到整个屏幕地图区域,则单位屏幕象素对应的地图距离就会改变,地图视野也就改变。放大后实线矩形对应的地图水平视野和垂直视野为:newViewX=oldViewX*(x2-x1)/(rigllt-left);newViewY=oldⅥewY+(y2一y1),(bottom-top);则单位象素对应的地图距离为:’xDistperPixel=newViewX/(right-left);yDistperPixel=newViewY/(bottom-top);DistperPixel=(xPerPixel>yPerPixcl)?xPerPixel:yPerPixel;放大后中心点变为点O’,对应的地理坐标则为:newCenX=oldCenX+oldViewX+((x1+x2)/2·(1eft+right)/2)/(right-left);newCeny=oldCenY-oldViewY+((y1+y2),2·(top+bottom)/2))/(bottom-top);根据点0’对应的地理坐标和单位象素对应的地图距离。重新绘制地图,便可实现将虚线矩形的区域放大到整个地图绘制区域(既实线矩形)内显示。地图缩小显示与之类似,不作讨论。·地图漫游就是移动地图中心点改变地图显示区域。与图形放大缩小相比,地图漫游只改变地图中心点,而不改变单位屏幕象素对应的地图距离。地图漫游对应的 南京理工大学硬士学位论文单兵作战系统中嵌入式GTS的研究工具栏上的工具按钮为甏,而具体操作和放大类似,不同的是按下鼠标左键拖动鼠标时不会出现虚线矩形,释放鼠标后系统就将地图中心点沿着按下鼠标左键和释放左键时的两点连线移动地图,移动距离为两点的距离。5.2.s地图显示实现因为一副完整地图由多个图层叠加而成,所以系统地图显示采用分层显示来实现。图层集合由图层管理器来管理维护。具体实现为系统主窗体础lirlfhn对象定义了一个图层管理器aHManag盯对象,图层管理器管理维护打开的所有图层对象。图层控制窗体提供图形界面,用来对图层管理器中的图层列表进行管理,可以添加删除图层及修改已有图层属性。主窗体艘Iin矗m对象还定义了地图画布类UGKCanvas对象.地图显示就是通过UGKCanvas::paintEvent0数绘制地图实现.本文地图显示模块最后的实现界面见图52.5.1,流程图如图5.2.5.2所示.图5.2.5.1地图显示界面通常,GIS地图显示需要绘制许多复杂的图形。这些复杂图形包含大量的图形元素,显示它需要花费大量的时间,主要是因为绘图函数需要经过大量的运算,计算出应该显示的像素位置并实现对每个像素的显示.因此,在开发GIS系统时,应该尽可能采取好的策略,提高软件的运行速度。下面讨论如何提高地图显示的速度。 系统实现硕士论文图5.2.5.2地图显示流程图因为数字地图可以进行缩放,一般情况下屏幕上显示的地图对象只是所有地图对象中的一部分.因此不在屏幕区域的地图对象就可以不绘制。因为系统的绘图函数不会自己判断所画的图形是否在屏幕区域内,调用绘图函数绘制地图对象前应该先判断是否在屏幕区域内,如果不在则不用对该图形进行绘制。怎样判断一个地图对象是否在屏幕区域内呢?严格的说,要通过计算判断地图对象与屏幕区域是否相交来确定。如果按此方法判断,必须经过大量的计算,这样更影响显示速度.本文采用另一种改进的策略实现判断地图对象与屏幕区域是否相交.这种策略就是通过判断地图对象的边界矩形与屏幕区域边界矩形是否相交来实现。S0 南京理工大学硕士学位论文单兵作战系统中嵌入式GIS的研究本系统硬件的可用ROM较小,因此地图数据文件不是保存在Flash中,而是存储在外接USB存储设备上.从外接USB存储设备读取文件所需的时间比从Flash中读文件需要更多的时间。而本系统的可用RAM为64Mbyte,比较充裕。因此为了提高运行速度,系统采用将地图数据读取出来保存在内存的这种方式来存储地图数据。这样避免每次地图显示时都需要去读取文件,从而提高了系统的运行速度。5.3信息标注信息标注也是嵌入式GIS应具备的功能。信息标注对于单兵作战系统更是必不可少的。例如,执行侦察任务的单兵可以将发现的敌人火力点分布等战场态势信息在地图上进行标注,然后利用无线通讯将此信息上传给指挥中心。嵌入式GIS的信息标注就是在当前地图上绘制特定的符号,加上信息注释。符号一般是一些小尺寸的图片,信息注释可以是预先设置好的,或则由用户直接输入..图5·3·l信息标注界面7簪镒在本文系统中,信息标注的具体操作步骤如下:点击工具栏上Z按钮,然后将鼠标移动到需要标注的位置点击鼠标左键,则会出现标注控制对话框。在标注对话框中选择标注符号类型,点击。确定”后,系统就会在鼠标左键位置绘制出标注符号,并标记注释.标注结果如图5-3.1所示。另外,工具栏上搿按钮可以用来将标注结果界面保存为JPG图片.对此JPG图片进行特定的加密压缩,然后利用无线5l 系统宴现颈士论文通讯技术将其上传给指挥中心。各个单兵都将自己侦察到的信息发送到指挥中心,指挥中心便能对整个战场态势了如指掌,从而更好地指挥战斗。5.4本章小结本章首先介绍了系统的主界面以及启动画面,然后研究了坐标转换、图层控制、地图对象绘制、地图缩放和漫游等技术,最后介绍了地图显示和信息标注的具体实现。。 南京理工大学硕士学位论文单兵作战系统中嵌入式GI$的研究6.路径寻优算法的研究在战场上,战场态势瞬息万变,战机稍纵即逝.面对出现的战机,谁能最快地作出反应,就最有可能取得胜利。假设部队需要赶到一个地方执行任务,如果能在GIs地图上找到最短路径,便可缩短行军时间,提前到达目的地,赢得作战时间.因此,对于单兵作战系统,路径寻优是一个非常重要的功能。当前,大多数路径寻优的算法都是基于图论领域中的Dijkswa算法的,而很多Dijkstra的改进算法,它们从不同的侧重点对Dijkstra进行了优化.本文决定选用直线优化Dijkstra算法彤】作为路径寻优的算法。6.1原始Dijl岱-tra算法Dijkstra算法是由GW.Dijkstra于1959年提出的。该算法主要是基于图的邻接矩阵表示和遍历算法,运行结果是某一顶点到其他所有顶点的最短路径。算法的优点是程序设计简单,通用性强;缺点是算法不是针对特定两点的,因而效率较低,加之邻接矩阵占用空间十分巨大,严重浪费了计算机的资源。这方面自勺改进研究是GIs领域的一个非常有实际意义的问题。Dijkstra方法的基本思想就是从起始点(假设为Vs)出发,逐步地向外探寻最短路径。执行过程中,每个点对应的都记录下一个数(称为这个点的标号),它或者表示从Vs到该点的最短路径的权(称为P标号),或者是从Vs到该点的最短路径的权的上界(称为T标号),方法的每一步是去修改T标号,并且把某一个具有T标号的改变为具有P标号的点,从而使具有P标号的顶点数多一个,这样至多经过n-1次(假设总共有n个顶点)就可以求出vs到各点的最短路径。V图6.1.1简单有向图vl 路径寻优算法的研究硕士论文下面结合实例来说明Dijkstm算法的基本思想。假设网络图如图6.1.1,需求点vl到V8的最短路径,图中每条线段上的数值代表该线段两端点之间的距离。首先,因为所有wu(vi与Vj的距离)都是非负的,故有d(Vl,VO=O(d(V1,vj)表示Vl到Vi的最短路径的长度)。这时Vl是具有P标号的点。现在考察从vl出发的三条弧:Ⅳl,V2)、(Vl,V3)、(Vl,vo。如果从Vl出发沿(、,l,V2)至q达v2,这时路径长度为d(Vl,V1卜W1乒6;如果从Vl出发沿(Vl,V3)至Ii达V3,这时路径长度为d(Vl,V3)+W13m3;类似地,若沿(Vl,V4)到达v4,这时路径长度为d(V1.V4HW14=I;因为rain{d(Vt,V1)+w12,dCVl,V3卜W13,d(Vt,V4)+W14}=dCVl,V4HW14=l,因此可以断言,从Vl到v4的最短路径长度为1.这是因为从Vl到v4的任一条路,如果不是(Vl,V4),则必先从Vl沿(Vt,V0到达v2,或者沿Ⅳl,V3)到达v3。但因为d(Vl,VI)+Wt2=6,d(Vt,V3)+W13=3,不管从v2或v3如何到达v4,所经过路径长度必然大于1,因此可以断定V1到v4的最短路径就是(vl,V4)。这样就可以使v4变成具P标号的点。然后再考察从V1及V4指向的其余点的弧。由上已知,从V1出发,分别沿(vl,v2)、(vl,v3)到达v2、v3,这对路径长度分别为6与3,而从v4出发沿-(v4,vo到达v6,这时路径长度为d(Vl,V4HW46=l+10=ll。因为min{d(Vl,V1)+W12,d(Vl,V3)+Wt3,d(V1,V4净W46}=d(Vj,V3净Wx3--3。基于同样的理由可以断言,从VI到v3的最短路径为(Vl,V3)。这时又可以使点v3变得具有P标号的点。如此重复这个过程,就可以求出Vt到任一点的最短路径。下面叙述Dijkstra算法实现的具体步骤。在具体实现时,对每个节点设置几个属性变量P(i),D(i)'M(i),L(iJ)。其中P(i)代表i点的前一点的编号;D(i)代表已经确定的从起始点到i点的最短距离;M(i)点可以有三个值O、1、2,其中0代表还没有查询过的这个点,1代表已经访问过这个点,但是起始点到该点的晟短路径未确定,2代表起始点到该点的最短路径已经确定;“iJ)代表点i到点i的距离。具体步骤如下:-1.初始化所有的点,令每个点P(i)值为空,D(i)为无穷大,M(i)为O;2.将起始点的D(i)的值为零,M(i)为2;3.访问与i点相连的所有j点,设置其P(j)=i,D(j)=D(i)+UiJ),M(j)_l;4.把所有的M(i)=l的点最短路径来进行比较,找出最短的点,将其设置为新的起始点,并且将其M(ib2;5.判断M(i)是否为终点,如果是,则退出循环,否则就回到(3)。 南京理工大学硕士学位论文单兵作战系统中嵌入式GIs的研究6.2直线优化D司kBtra算法原始Dijkstra算法一种行之有效的优化方法是:减少算法中成功搜索的搜索范围,以尽快到达目标结点,其核心思想是:在所研究的网络可以被看成平面网络的条件下,将临时标记结点到源点的最短路径与此临时标记结点到目标结点的直线距离之和作为此临时标记结点的属性值,这个属性值将作为从临时标记结点集合中选取永久标记结点的依据,即选取此属性值最小的I临时结点作为永久标记结点,这种优化方法称为直线优化Dijkswa算法.此方法使得I)ijkstra算法的搜索方向智能地趋向目标结点,减少了算法中遍历的结点个数,从而提高了搜索速度。(a)传绕嘶奴m算法(b)直线优化Dijkstra算法图6.2.1两种算法结点搜索过程示意图直线优化Dijkstra算法与原始Dijkstra算法的搜索过程比较示意图如图6.2.1所示。由图可见,原始DijXstra算法的搜索过程可以近似为以源点为圆心的一系列同心圆,搜索过程没有考虑终点所在的方向或位置,在从源点出发的搜索过程中,其他结点与终点被搜索到的概率是相同的.直线优化Dijkstra算法的搜索过程可近似为以源点和终点为焦点的一系列同心椭圆。因为永久标记点的选取原则为:当前结点距源点的最短距离与此结点到终点的直线距离之和最小者被选取为永久标记点,所以搜索过程明显趋向于终点,搜索过程到达终点的速度明显快于原始的Dijkswa算法,搜索到的结点也少于原始的Dijkstra算法。如图6.2.1中∞所示,设Sp=2,Sq=5,pE=8,qE=2,从源点出发进行原始Dijkstra算法搜索,首先取结点p和q作为临时标记点,因为Sp长度小于Sq长度,所以选取结点P为永远标记结点,再以P为新的源点继续进行下一轮搜索,丽结点P则是最后要淘汰的.如果采用直线优化I>ijkstra算法,则因为Sp+pE=10,Sq+qE=7,所以结点四被选取为永久标记点.如图6.2.2所示工l为临对标记结点Pl距源点的最短路径长度,k为临时标记结点PⅡ距源点的最短路径长度,Dl为结点Pl到终点的直 路径寻优算法的研究硕士论文线距离,Dn为结点PⅡ到终点的直线距离,P1和Pn的连线为c.原始Dijkstra算法永久标记结点的选取原则是:如果Ll>L咀,则选取Pn为永久标记结点。如果Ll
此文档下载收益归作者所有