探析基于构件技术的电子海图系统的研究

探析基于构件技术的电子海图系统的研究

ID:34770806

大小:1.83 MB

页数:69页

时间:2019-03-10

上传者:U-24835
探析基于构件技术的电子海图系统的研究_第1页
探析基于构件技术的电子海图系统的研究_第2页
探析基于构件技术的电子海图系统的研究_第3页
探析基于构件技术的电子海图系统的研究_第4页
探析基于构件技术的电子海图系统的研究_第5页
资源描述:

《探析基于构件技术的电子海图系统的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

大连海事大学硕士学位论文基于构件技术的电子海图系统的研究姓名:魏源申请学位级别:硕士专业:交通信息工程及控制指导教师:赵德鹏20040301 摘要本文从软件工程的角度出发,选取目前软件开发中先进的构件化方法,并以s一57、s.52国际标准为基础,对ECDIS进行构件化的设计与实现。ECDIS的基础平台可封装成二次开发包(SDK),该SDK由粒度适中、功能独立的多个构件组成。将SDK构件服务扩展到网络环境下,就形成构件化WebChart。在数据模型中,结合元数据理论和$57理论数据模型,设计出“交换集.数据集一物标”的三层数据访问模型。在海图显示上,采用S.52的表示库来进行海图的显示,对于WebChart的显示采用ActiveX控件的方式来进行海图的网络显示。本文采用COM技术实现了SDK系统及其6大基础构件。论文分六章介绍了本人所从事的研究工作。第1章介绍ECDIS的概况,将构件化电子海图与传统的电子海图进行比较,提出构件化是ECDIS发展的方向。第2章介绍构件技术与分析方法。第3章从数据模型与数据传输方面,设计出SDK与WebChart具有各自特点的数据处理模块。第4章为显示控制的设计。第5章为系统设计与实现。使用UML与构件技术的方法进行设计与实现。第6章为本论文的总结与展望。关键词:电子海图显示与信息系统,S.57,S.52,构件技术,UML AbstractThethesisselectscomponent-methodfromsoftwareengineeringtodesignandrealizethecomponentECDISwhichbasesonInternationalstandards(S-57,S-52).ThebasicplatformofECDISCallpackintoSecondDevelopedKit(SDK)thatcomposesofseveralindependentcomponents.IfSDKdevelopsinnetworkenvironment,componentWebChartcomesintobeing.Ondatamodel,thisthesisadoptsthemetadatatheoryandS-57theoreticaldatamodeltodesignathree—layersdataaccessmodelas“ExchangeSet-Dataset·Object”.SDKusesPresentationLibraryofS-52todisplaychart.WebChartusesActiveXtOimplementthenetworkdisplayofchart.SDKsystemanditssixbasiccomponentsrealizewithCOM.ThisdissertationisabouttheresearchIhavecIlgagedin.Chapter1introducesfundamentalconceptionsofECDIS,comparescomponentECDISwithtraditionalECDIS.Chapter2introducescomponenttechnologyandanalysismethod.Chapter3designsdataprocessingmodelofSDKandWebChart.Chapter4introducesthedesignofdisplaycontr01.Chapter5designsandrealizesthesystem,usingUMLandcomponenttechnology.Chapter6makesasummaryofthethesis.Keywords:ElectronicChartDisplayandInformationSystem(ECDIS),S-57,S-52ComponentTechnology,UML¨ 1.1ECDIS概述第1章绪论1.1.1ECDIS的概念与国际标准电子海图显示与信息系统(ElectronicChartDisplayandInformationSystem,ECDIS)是集多门学科与技术为一体的系统,它综合了导航、雷达、航行与避碰、海洋测绘、计算机软件开发、图形图像处理、数据库、人工智能、通信等相关技术。ECDIS的成熟程度是一个国家在航海技术和航海设备水平上的标志。国际海事组织(InternationalMaritimeOrganization,IMO)ECDIS性能标准给出的ECDIS的定义Ⅲ:ECDIS是一种航海信息系统,该系统有足够的备用设备,可以认为符合1974SOLAS公约的V/20条款规则要求的现实性海图的规定,通过从系统电子航海图(SystemElectronicNavilgationalCharts,SENC)中选择的信息与从导航传感器获得的位置信息的显示来帮助航海人员进行航线设计和航路监视,并且能够按要求显示其他与航海相关的补充信息,其基本组成部分如图1.1所示。计程仪罗经测深仪ECDIS显示IHOS52显示标准主机(SENC)海图数据电子导航海图ENCIHO$57数据标准定位仪器通信设备雷达ARPA固卜1国际通用的ECDtS组成凰1985年5月,国际海道测量组织(InternationalHydrographicOrganization,rHo)l 出版发行了ECDIS暂行性能标准Iu,并建议各成员国进行海上试验,对ECDIS性能标准的完整性和实用性进行评估¨1。1986年。IMO和IHO成立了一个由各国有关部门组成的协调小组(HGE),共同参与电子海图方面的技术讨论。从此ECDIS的发展进入了一个标准时代¨】。1996年2月,IH0增补通过了关于电子海图内容、图标、颜色和ECDIS显示系统的规范,即$52(第五版)。规定了电子海图的内容和显示、数据结构、改正方法和信息传输途径,以及屏幕上电子海图的颜色和符号等使用细节“I。1996年11月,IHO公布了$57标准第三版,描述了用于各国航道测量部门之间数字化航道测量数据的交换以及向航海人员、ECDIS的生产商发布这类数据的标准,是具有法律效力的矢量式电子导航海图和数据交换传输标准。$57规定了电子航海图(ElectronicNavigationalChart,ENC)的数据交换格式、ENC数据库的性能标准,以及ENC的改正概要⋯。1997年9月,国际电工委员会(InternationalElectrotechnicalCommission,IEC)提出了对ECDIS硬件设备的检验和测试标准(IEC61174)。IEC61174描述了ECDIS的性能测试方法和要求的测试结果。通过该标准的测试是ECDIS合法地成为船用设备的前提⋯。1.1.2ECDlS的目标基于国际标准的ECDIS的发展目标是:(1)应用普及化随着分布式系统与网络的迅速普及,越来越多的应用系统依赖网络获取信息、处理事务。ECDIS应当抓住网络这一日益发展的“第四媒体”,扩大ECDIS的应用领域。将ECDIS与Web服务器集成,实现海上地理数据的网络共享。用户可以通过Intemet在任意的地点对系统进行访问,从而使ECDIS的应用更为普及。(2)数据分布L·、全球范围来看,地理数据的存储是分布式的。Intemet的发展,能够解决这科t分布式数据访问的困难。ECDIS发展的最终目标是形成基于全球共享数据的广域系统,对于分布式数据环境的适应是急需改善的环节。基于Web的电子海图系统(WebChart)因此孕育而生。它能够使得ECDIS用户通过网络不但能够访问分 散在不同站点的数据,享受数据处理服务,还能维持系统的一致性以及平衡这种访问的网络负载。(3)互操作性$57标准为各开发厂商的ECDIS提供了互操作性的基础。各厂商的ECDIS通过交互接口能够实现系统间的互操作。但是ECDIS的目标不仅仅是自身系统间的互操作,而且还需要与地理信息系统(GIS)、管理信息系统(MIS)等应用系统之间实现互操作。如何实现多系统之间的互操作,是ECDIS的一个难点,对于ECDIS在深度与广度上的应用有着重要的意义。1.2构件化电子海图系统与传统电子海图的比较ECDIS经过十几年的发展,其基本功能相对比较完善。但由于以前的开发过程受到软件开发环境局限的影响,传统的ECDIS存在着诸多的问题,采用构件化的开发方法能够很好的解决这些问题。1.2.1软件实现方面(1)源代码管理传统电子海图系统的源代码数量庞大,庞大的源代码耗费大量的人力进行管理,使系统的开发周期延长。构件化的电子海图系统对整个系统进行了适当粒度的划分,将系统分为高内聚低耦合的构件模块,实现对源代码的合理封装与管理。(2)系统模块管理传统的电子海图系统各模块之间采用源代码级别的类与函数进行通信,这使得模块问的关系非常含糊与复杂,很难在原有的基础上进行相应的扩展。构件化的电子海图将各模块封装成对应的构件,构件之间通过接口来实现通信,而不是通过源代码级别的类与函数进行通信,这极大的简化了构件间的关系。只要符合对应接口的要求,就可以实现构件间的关联。:3)系统整合和调试周期传统开发过程采用的是基于源代码功能分块,这些功能与其他的功能存在着千丝万缕的联系,这就增加了系统开发人员的工作负担:构件化开发在系统的设计阶段,就对各个模块进行了独立的设计,只要保证了接口的完备性就能很容易3 实现系统的整合。在测试阶段,传统开发必须在系统各模块整合成完整系统后才。开始;构件化开发的各模块是独立的,可以单独地调试与运行.只要保证了接口输入与输出数据的正确性,就能保证该模块的正确性,无需等到系统整合后再进行测试。构件化相对于传统方法能够提高开发效率、缩短测试周期。(4)可维护性传统的开发在系统出错时,需要跟踪到系统的源代码中找问题,由于系统的关系复杂,发现问题的难度很大。构件化开发将各个功能封装在构件中,使得代码的维护有了针对性。当系统出现错误和缺陷时,由于构件接口的输入和输出是明显的,这样就提高了系统的可维护性。(5)技术难度对于传统的开发人员,只需要掌握一门计算机语言就可以进行电子海图系统的开发。而构件开发人员,不仅需要有相应的计算机语言基础,而且需要掌握构件技术的设计与实现原理,涉及到诸多操作系统底层的结构与操作。这样从技术的角度,构件化的开发需要的是技术能力更强的开发人员,对于系统的实现难度比传统的开发要大。1.2.2功能特征方面(1)独立性与可升级性19】传统的应用系统集成了电子海图应用系统的所有功能,大部分功能无法单独升级或替换。构件化开发中的各个模块之间保持着一定的功能独立性与开发独立性,而且编译、调试和测试都是独立进行的。如果系统的外部环境发生变化或者用户的需求有所更改时,只需要对受到影响的构件进行修改即可,升级与替换非常方便和快捷。(2)语言无关性和继承性lgl传统的开发是针对某一种计算机语言的开发环境来进行的,对于其他语言的开发环境是不支持的。采用构件技术开发的构件是语言无关的,在一种语言开发环境中开发的构件,只要满足构件的接口标准,就可以在其他语言开发环境中使用。这样开发出来的系统能够被很好的继承,而不会出现开发环境或者其他因素的变化而被淘汰。4 (3)保密性和安全性1q传统开发对于系统和数据的安全与保密性是需要在源代码中加入相对应的加密算法来实现的,增加了系统的复杂程度。构件技术由于其自身的特点,将各个接口函数的实现封装在构件的内部,在构件外部看到的只是对各个接口的系统声明。这个过程就是进行了一次加密,对于代码的保密性和安全性是一个进步。(4)与外部系统之间的互操作传统的电子海图系统没有与外部系统(如GIS、MIS等)之间的互操作行为,主要完成其基本功能,对于在整个信息系统中的扩展应用还是空白。采用构件化方法.提供相对应的接口,就能够很容易的实现与外部系统的互操作。因此,传统的软件技术已经适应不了电子海图发展的需要,迫切需要一种能够快速开发和将功能模块独立的软件开发方法。使用软件开发中的构件化方法,以电子海图应用系统为背景,将电子海图应用系统模块化,能够很好的满足ECDIS的发展需求。这种设计方法把庞大的程序设计成一些小的、功能单一的模块,而且这些模块适用于任何开发环境,具有极强的交互性,可以跨平台进行通信,使电子海图应用系统具有良好的继承性。1.3本文的研究内容ECDIS在其发展过程中,要想实现其应用的普及、数据分布与多系统的互操作,必须从开发方法上寻求突破。传统的开发方法中存在着诸多问题,严重阻碍了ECDIS的进一步发展。本文从软件工程的角度出发,选取目前软件开发中先进的构件化方法,对ECDIS进行重新设计。从根本上解决了传统开发方法的弊端,能够实现系统内部各模块的无缝链接以及与外部系统的良好扩展。在构件技术的基础上,将ECDIS的基础平台划分成粒度适中、功能独立的多个构件。基础平台就可以被包装成可供二次开发的开发包(sDK)。在这个SDK基础上进行功能开发,只需使用SDK提供的接口,无需涉及到基础平台实际的代码。这样降低了模块间的耦合程度,保证模块的独立性,使得系统的开发、调试与维护变得快捷、高效,能满足ECDIS发展的目标。为了使SDK的分析与设计符合ECDIS的需求,本文采用具有国际标准的统一 建模语言(UnifiedModelingLanguage,UML)对整个SDK进行建模与设计。在SDK的基础之上,将基础的构件服务向Web方向发展,实现基于构件技术的WebChart。构件化WebChart能很好的实现远程ECDIS与本地系统的结合,对实现海上地理信息的全球共享有着不可估量的作用。在本文的实现过程中,采用了微软的COM技术来制作电子海图系统的构件。本文以系统设计为主线,详细阐述了数据处理、显示控制、总体设计与详细设计等各层次的设计与实现。具体结构如下:第1章第2章第3章第4章第5章第6章介绍ECDIS的概况,将构件化电子海图与传统的电子海图进行比较,提出构件化是ECDIS的发展方向。介绍构件技术与分析方法。详细分析了$57数据的特性,结合本地与远程系统的特点,从数据结构与数据传输方面,分析SDK与WebChart的异同点,设计出符合各自特点的数据处理模块。显示控制的设计。对于本地与网络显示,SDK与WebChart也有着许多的异同点。系统设计与实现。使用UML与构件技术的方法,合理的划分各模块,设计出各模块的详细接口。在详细设计的基础之上,对系统进行基础构件与SDK系统的实现,并对SDK系统的性能进行分析。总结与展望。对系统的设计与实现进行总结,提出有待完善之处。 第2章构件技术与分析方法2.1软件构件技术2.1.1构件技术概要构件技术的方法来自于软件重用的思想。面对日益庞大的应用系统,如何迅速高效地构筑软件系统是摆在软件开发人员面前的一个难题。由于大多数的应用软件是以“黑箱”的形式呈现在用户面前,因此可以把用户界面与处理层次区分开来。如果我们把传统的软件开发模式中的模块划分的思想加以扩充,构造子程序库,引入重用的机制,便可得到所谓的构件方法。Szyperski将构件定义为“软件构件是一个仅带特定契约接口和显示语境依赖的结构单元”,同时还指出:“软件构件可以独立部署,易于第三方整合。”111]对于构件化系统而言,整个系统可以看作是一个构件库。构件库中的每个构件就像是工业生产线中的零部件,对于需要更换的零件,直接取出加以更换,而不影响到其他零件的使用(见图2—1)。每个构件只是通过接口与外界联系。只要保证了接口的一致性,就能够保证整个系统的正常运行。⑤图2—1构件化程序的运行模型(运行时零件可以替换)软件构件技术是支持软件复用的核心技术,是近几年来迅速发展并受到高度重视的一个学科分支。其主要研究内容包括Ⅲ:(1)构件获取:有目的的构件生产和从已有系统中挖掘提取构件:(2)构件模型:研究构件的本质特征及构件间的关系:(3)构件描述语言:以构件模型为基础,解决构件的精确描述、理解及组装问 题;(4)构件分类与检索:研究构件分类策略、组织模式及检索策略,建立构件库系统,支持构件的有效管理;(5)构件复合组装:在构件模型的基础上研究构件组装机制,包括源代码级的组装和基于构件对象互操作性的运行级组装;(6)标准化:构件模型的标准化和构件库系统的标准化。2.1.2基于构件的软件开发集软件复用、分布式对象技术、客户/服务器结构和构件技术于一身的基于构件的软件开发方法(Component-BasedDevelopment,CBD)是20世纪90年代兴起的一种新的软件开发方法1141,以软件架构为组装蓝图,以可复用软件构件为组装预制块,支持组装式软件复用,是提高软件生产效率和产品质量、减轻人员流动副作用、缩短产品交付时间的现实有效的途径之~。软件的内在本质是易变性,所以在考虑基于构件的软件开发模型时,应该将开发的不同阶段的重叠性和递归性考虑在内。虽然不同阶段可能具有重叠性,但是还是把它分为4个阶段:系统分析,领域工程,系统设计和系统实现(如图2—2所示)㈣。图2-2基于构件的软件开发模型CBD是软件工程发展的新阶段,吸收和发扬了面向对象技术、分布计算技术和软件复用中的许多优秀思想,作为一种将软件构件技术运用于应用系统开发中的一种新兴的软件开发方法,其主要优点表现为(12t131: (1)以构件(模块)为单位独立地进行设计和实现,使大规模地软件生产成为可能。(2)缩短应用开发的周期,降低开发费用,提高生产率。(3)CBD技术以构件模型和构件架构作为系统开发者之间的协议标准,极大地提高了应用系统各部分的开发独立性和系统开发的并行性。(4)更易配置最优的解决方案,构件市场上丰富的构件使得对功能的支持更具有可选性,构件提供者的竞争也会使价格变得更低。(5)减少了出错风险,因为用于组装的各构件都已各自通过了测试和验证,同时基于构件的系统开发更有利于渐进的增量式开发测试。这些都保证了软件开发的质量。(6)提高了软件系统的灵活性,缩短了软件系统的分发时间,减少了软件系统的维护费用。为了使得构件的优势能够更好的发挥,在构件的设计过程中,应该注意到以下的几方面:(1)降低耦合:耦合指构件之间的相关性,也就是尽可能的保持少的对外的接口。(!)提高内聚:内聚指构件内元素之间的相关性。(3)控制粒度:粒度系统中构件对应问题域的规模,包括构件数量和大小两个方面。2.1.3主要的构件方法简单地说,构件技术是一种二进制标准。在二进制的基础上,实现了对构件提供的方法和数据进行操纵、共享和访问。基于这种思想,各大组织与公司建立了各自的构件模型,其中最流行的构件模型有3种:对象管理集团(ObjectManagementGroup,OMG)的CORBA技术、微软的COM/DCOM技术以及SUN的JavaBeans/EJB技术。I.CORBACORBA是由OMG提出的一个分布式环境下跨平台、跨语言的对象管理舰范。 主要由四个单元组成:对象请求代理(ORB),定义了CORBA的对象总线;CORBA服务定义了系统级对象框架,用来扩展总线;CORBA设施,定义了直接被商务对象使用的水平和垂直应用程序框架;应用程序对象,即商务对象及其应用程序,它们是CORBA基础结构的最终用户。2.COM,DCOMCOM是Microsoft开发的一种二进制标准,定义了构件对象之间基于这些技术标准进行交互的方法。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称之为“对象接口”的机制来进行通信,进而实现COM对象与同一程序或者其他程序甚至远程计算机上另一个对象之间进行交互,而这些对象可以是使用不同的开发语言,以不同的组织方式开发而成的。早期的COM技术不具备跨计算机的远程调用能力,这种通过通用接口操纵其他对象的功能仅仅局限于同一计算机的不同应用程序之间。后来的COM标准增加了保障系统和组件完整的安全机制,扩展到分布式环境,形成DCOM。DCOM使用一种基于标准的远程过程调用,提供了网络透明及通信自动化。可以使运行于不同机器上的对象之间进行无缝互操作,而且一个对象无须了解另一个对象的位置。分布式对象技术也可以使全局的网络和信息资源看上去像是本地的,这就使用户更容易也更快捷地访问重要的业务信息。通过DCOM和远程自动化,用户可以在整个网络内放置和执行部件I”。由于COM技术对构件接口的完好定义与封装,并在Web构件中有着良好的扩展性,使得其在基于构件开发过程中被大量的使用。绝大多数的应用系统都是基于微软的Windows平台进行开发的,COM技术作为微软的一项核心技术已经与Windows操作系统实现了无缝连接,这些条件使得COM技术在构件化的软件开发中的比重越来越大。在构件化电子海图系统的实现中,本文采用了COM技术。3.JavaBeans/EJB按照Sun公司的定义,JavaBeans是一种“能在开发工具中被可视化操作的、可重用的软件”。它的最初目的是定义一种Java的软件构件模型,使第三方厂家可以生成和销售供其他开发人员使用的Java构件。Bean可被放置在“容器”中,提iO 供具体的操作方法。它可以是中小型的控制程序,也可以是完整的应用程序,它可以是可见的GUI,也可以是不可见的幕后处理程序。在JavaBeans提出来以后,Sun又提出EJB(EnterpriseJavaBeans)。EJB是开发和配置基于组件的分布式商务应用程序的~种组件结构,其结构完全采用基于软件构件模型的分布对象计算体系。用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。2.2UML分析方法2.2.1UML内容概要在基于构件的软件开发方法上,传统的面向对象的软件开发过程在这时已显得力不从心,建立更好的软件开发环境成了当务之急。什么是一个好的软件开发环境呢?一个优良的软件开发环境应该包括三方面的内容:采用统一的软件开发语言,特别是采用统一的建模语言;采用经过证明的软件工程管理方法;采用适当的软件开发和管理工具。首先,统一的建模语言是软件复用的基础;其次,大型软件的开发需要工程化的管理,源代码、版本、文档、测试等都必须进行严格的管理才能保证软件的质量:第三,目标的实现有赖于得心应手的工具。统一建模语言(UnifiedModelingLanguage,UML)是一种对软件密集型系统制品进行可视化、详述、构造和文档化的图形语言。UML给出了一种描绘系统蓝图的标准方法,其中既包括概念性的事物,如业务过程和系统功能,也包括了具体的事物,如用特定的编程语言编写的类、数据库模式和可复用的软件构件。在UML出现之前,面向对象的方法达到了50种以上。1997年,经过各方的努力,OMG批准了统一建模语言UML。它是用来对软件系统进行描述、构造、可视化和文档编制的一种定义良好、易于表达、功能强大且普遍适用的建模语言,统一建模语言融合了BOOCH、OMT和OOSE方法及其它多种建模语言和方法的优点,不仅支持面向对象的分析与设计。还支持从需求分析开始的软件开发的全过程。Ⅲ】UML是一种通用的标准建模语言,可对任何具有静态模型和动态行为的系统 进行建模。在系统开发的不同阶段可以用UML提供的不同框图进行描述。在需求分析阶段,使用用例图来捕获用户需求,描述对系统感兴趣的外部角色及其对系统的功能要求。分析阶段主要用UML类图来描述识别问题域中主要概念和机制的类及类之间的相互关系。UML的词汇表包括三种范畴:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起:图聚集了相关的事物。m1UML/\事物关系图,,——,7;歹,弋≤卜注解类依』关系用k图结构类行为类分组类l关联关系类幽lI1注解泛化关系对象图用例交互图包实现关系顺序图类状态机模型协作图主动类子系统状态图接口框架活动图构件构刊:幽协作实施图节点图2-3UML词汇事物共有四类:结构类、行为类、分组和注解类。结构类的事物主要有七种05]:1.用例(usecase),是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者有价值而且可观察的结果。2.类(class),是对一组具有相同属性、相同操作、相同关系和相同语义的对象的描述。3.主动类(activeclass),是这样的类,其对象至少拥有一个进程和线程,因此它能够启动控制活动。4.接口(interface),是描述了类和构件的一个服务的操作集。5.构件(component),是系统中物理的、可代替的部件,它遵循且提供一组接口的实现。 6.协作(collaboration),定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的总和。7.节点(node),是在运行时存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力和处理能力。行为类事物有两种:1.交互(interaction),是这样一种行为,它由特定语境中共同完成一定任务的一组对象之间交换的消息组成。2.状态机(stmemachine),是这样一种行为,它描述了一个对象或一个交互在生命周期内响应事件所经历的状态序列。分组事物是UML模型的组织部分。主要的分组事物是包。包(package)把元素组织成组合机制,具有多种用途。它还存在着变体,如框架、模型和子系统等。注解类事物是UML模型的解释部分,这些注释事物用来描述、蜕明和标注模型的任何元素。主要就是注解(note)。在第二个范畴即关系中.可进一步分为四种关系m,;第一,依赖(dependency)是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响到另一个事物(依赖事物)的语义。第二,关联(association)是一种结构关系,它描述一组链,链是对象之间的连接。聚合是一种特殊类型的关联,它描述了整体和部分间的结构关系。第三,泛化(generalization)是一种特殊与一般关系,特殊元素(子元素)的对象可替代~般元素(父元素)的对象。第四,实现(realization)是类元之间的语意关系,其中的一个类元制定了由另一个类元保证执行的契约。在第三个范畴即图中,UML提供了五类(共9种)图1151;第一,用例图(usecasediagram),从用户角度描述系统功能,并指出各功能的操作者。第二,静态图(stmicdiagram),包括类图(cl鼬sdiagram)、对象图(object diagram)和包图(packagediagram)。类图描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。包图由包或类组成,表示包与包之间的关系。包用于描述系统的分层结构。第三,行为图(behaviordiagram),描述系统的动态模型和组成对象间的交互关系。其中状态图(statechartdiagram)描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。第四,交互图(interactivediagram),描述对象间的交互关系。第五,实施图(implementationdiagram),包括构件图(componentDiagram)与实施图(deploymentDiagram)。2.2.2UML分析与建模过程UML系统分析的基本思想是运用统~化的描述语言环境(即L"vIL定义的图及图元语),与业务域专家共同将预开发系统的需求在概念层的高度,以图的形式描述,力求准确、全面地把握术语和各种业务活动的过程。运用UML进行需求分析主要完成两个任务。第一。利用LrML用例分析技术建立系统用例图。一个用例是指用户为达到某个目的和系统进行的一次典型的交互过程,其关键是用例必须描述用户所需的可理解的一个功能,根据用例,开发方做出开发计划。第二二,建立应用领域概念模型(简称域模型)。域模型是对用户提出的业务运作过程全貌的描述。UML用类图(概念层)和活动图(工作流程)建立域模型。Is]从应用的角度看,当采用UML和面向对象技术设计系统时,首先应建立系统的逻辑模型,然后建立相应的物理模型。建立系统逻辑模型的过程大致分为三步:第一步描述需求,第二步根据需求建立系统的静态结构,第三步是描述系统的行为。其中在第一步与第二步中所建立的模型都是静态的,可用三种图来描述,即用例图、类图和对象图,属于UML的结构建模机制。而第三步中所建立的模型或者可以执行,或者表示执行时的时 序状态或交互关系,可用四种图来描述,即状态图、活动图、顺序图和协作图。属于UML的行为建模机制。I”】建立系统物理模型的过程大致分为两步:第一步时描述代码部件的物理结构及各部件之间的依赖关系:第二步时描述系统中软硬件的物理拓扑结构,以及代码构件在各物理节点上的部署。这两个步骤与建立系统物理构件相关,分别用构件图和实施图来描述,属于UML的物理体系结构模型机制。因此.可以将UML的建模机制归纳为静态结构建模机制、动态建模机制和物理体系结构建模三大类。表2-1详细的列举出UML的模型图对应的建模机制。㈣表2—1UML建模体系面对当今软件系统的规模越来越大,复杂程度不断提高,传统的软件开发模式越来越难以满足需求,新产品的开发周期已不再是从需求定义、软件设计、实现和交付的一次性过程,迭代式增量开发方式已得到了广泛采用。考虑到对需求修改的灵活性和快速响应能力,软件开发应该是能够反馈修改的“闭环开发”。UML可视化建模支持从系统需求、系统分析到系统设计的整个建模过程,提供UML图形的编辑工具,保证得到语法正确、语义完整的UML图形模型。并提供包括文档管理和图形打印等辅助支持。图2.4是UML的建模过程简图¨6】。图2-4开发过程简介这是一个迭代递增的开发过程。此方法不是在项目结束时一次性提交软件,而是分块逐次开发和提交。构造阶段由多次迭代组成,每一次迭代都包含编码、测试和集成,所得产品应满足项目需求的某一子集,或提交给用户,或内部提交。15 第3章数据处理海图数据是电子海图系统的基础,对海图数据的操作与处理,是整个系统其他功能实现的基础。IHO制定的S一57标准就是作为电子海图及其应用系统的国际规范和标准。虽然各个开发厂商对于电子海图的数据有着自己的格式标准,但是对S-57标准的兼容,体现了该电子海图系统是否完备和是否具有国际通用性。本章主要从元数据的角度,分析S一57数据的特点,同时结合S一57理论数据模型建立构件化ECDIS的数据模型。根据SDK与WebChart数据传输环境的特点,设计出相应的数据访问控制模型。3.1$57元数据3.1.1元数据理论自从1992年美国联邦地理数据委员会(FGDC)开展地理信息元数据(Metadata)标准的讨论以来,全球已在基于数字地球的Metadata这一领域内取得了迅速的发展。目前,FGDC、欧洲地理信息标准化委员会(CEN,rC287)、全球最大的地理空间信息产业组织OpenGIS协会以及国际标准化组织地理信息/地球信息业委员会(ISO/TC211)等单位均已成立了各自的Metadata工作组,并从影响地理信息的不同方面开始研究这一问题。我国九五期间在国家空间信息基础设施(NSII)的规划研究中开始了基于NSII的Metadata研究,并在国家科技部、发展计划委员会等部门的支持下,形成了Metadata标准的建议草案16}。3.1.1.1元数据的概念与理解对于Metadata的定义和理解,存在着很多不同的观点,例女l:lf6l:Metadata是数据库管理领域的概念,是关于数据组织的数据;Metadata是对数据的描述,以及对数据集中数据项的解释,它能提高数据的利用价值;Metadata是一种机制,用来说明数据集成或其他形式的信息存在的描述。16 另外,欧洲标准化委员会(CEN/TC287)认为:“Metadata是描述地理数据集内容、表示、空间参考系、质量以及管理的数据”m】。FGDC和ISO/TC211认为:“Metadata是关于数据内容、质量、条件以及其他特征的数据”m,19]。Metadata中的Meta是希腊语,意思是“改变”,Metadata定义为数掘本身及其变化的描述。科学的说法是:Metadata是关于数据集的数据,数据集的说明或描述。有关Metadata的定义可以概况为两大类i61:(1)Metadata是数据集的描述与说明。Metadata是对数据集的描述,或对数据集中数据项的解释,它能提高数据的利用价值;Metadata包括数据用户指南、数据字典、数据分类目录等数据描述信息,以及任何定义它们之间关系所需要的附加性信息;Metadata是数据库管理领域的概念,是关于数据组织的数掘。(2)Metadata是应用系统的辅助信息,能提高数据的利用价值。这方面的定义包括:Metadata是指数据与信息之间的某种关系,可以沟通数据和信息;Metadata是数据的数据,并包括使数据可以使用的辅助性信息。3.1.1.2元数据标准的体系结构关于Metadata的内容体系,目前国际各大组织存在着不同的定义。表3-1列举了国际上比较有影响的组织关于Metadata标准的内容。表3-1Metadata标准草案的内容对比CEN厂l’C287FGDCISo,rC211建议体系数据桌标识信息标识信息数据集综述信息数据质量信息数据集质量元素空间数据组织信息数据集继承信息空间参照系信息空间数据表示信息空问数据表示信息范嗣信息实体和属性信息空间参照系信息数据定义发行信息应用要素分类信息实体和属性信息分类信息Metadata参考信息发行信息管理信息Metadata参考信息Motadata参考信息 如图3-1所示,一般把Metadata分为两个层次进行研究。其中第一层是目录层,它所提供的Metadata复合元素和数据元素是数字地球中查询地理数据的目录信息,它相对地概况了第二层中的一些必选项信息,是Metadata体系内容中比较全面描述地理空间信息的必选项(M)、条件必选项(C)以及可选项(0)的内容。其中标准部分包括标识信息、数据质量信息、数据集继承信息、空间数据标识信息、空间信息参照系信息、实体和属性信息、发行信息以及Metadata参考信息8个方面的内容,引用部分包括引用信息、时间范围信息、联系信息以及地址信息,各个部分按照具体的复合元素和数据元素组织。L信息jL—信息一JLJ直息jL信息J图3—1Metadata内容标准的组织框架3.1.1.3元数据的应用元数据可以用来辅助地理空间数据,帮助数据生产者和用户解决这些问题。元数据的主要作用可以归纳为如下方面:●帮助数据生产单位有效地管理和维护空间数据,建立数据文档,并保证即使其主要工作人员离开时,也不会失去对数据情况的了解;●提供有关数据生产单位数据存贮、数据分类、数据内容、数据质量、数据交换网络及数据销售等方面的信息,便于用户查询检索地理空间数据;●提供通过网络对数据进行查询检索的方法或途径,以及与数据交换和传输18 有关的辅助信息;●帮助用户了解数据,以便就数据能否满足其需求做出正确的判断●提供有关信息,以便用户处理和转换有用的数据。3.1.28-57元数据的分类与表示s.57数据模型的实现是完成从模型到结构的转换。所谓结构就是s一57数据在计算机中的存储形式。S.57中的元数据对应的是元记录,特征物标对应的是特征记录,空间物标对应的是空间记录。s一57的元数据采用分级编码的方式,分为3个不同的级别12】:(1)在数据集描述记录中定义的无信息为数据集所包含的记录提供了缺省值,数据集的描述信息在文件中还是在交换集中定义取决于所使用的产品规范。(2)由元物标所定义的信息优先于数据集描述记录所定义的缺省值,元物标在IHO物标类目中定义并编码为特征物标。(3)个体物标的属性所定义的信息优先于元物标所定义的信息,因而也优先于从数据集描述记录中导出的信息。S.57定义的元记录包括:(1)数据集通用信息记录数据集通用信息记录包括数据集标识字段结构和数据集结构信息字段结构。具体包含的内容如表3.2所示表3-2数据集通用记录的内容数据集标识(DSID)数据集结构信息(DSSI)记录名称(RCNM)数据结构(DSTR)记录标识号(RCID)ATTF词汇表(AALL)交换目的(EXPP)NATE词汇表(NALL)预期用途(INTU)元记录数(NOMR)数据集名称(DSNM)制图记录数(NOCR)版次(EDTN)地理记录数(NOGR)修订次数(UPDN)集合记录数(NOLR)修订应用日期(UADT)孤立节点数(N01N)发表日期(ISDT)连接节点数(NICN) s一57版次(STED)边数(NOED)产品规范(PRSP)面数(NOFA)产品规范说明(PSDN)产品规范版次(PRED)应用简档标识(PROF)生产责任机构(AGEN)注释(CoMT)(2)数据集地理参照记录数据集地理参照记录包括数据集参数字段、数据集投影字段和数据集登记控制字段,具体包含的内容如表3.3所示:表3—3数据集地理参照记录的内容数据集参数(DSPM)数据集投影(DSPR)数据集登记控制(DSRC)记录名称(RCNM)投影(PROJ)登记点标识符(*RPID)记录标识号(RCID)投影参数1(PRPl)登记点纬度或北距(RYCO)水平基准面(HDAT)投影参数2(PRP2)登记点纬度或东距(RXCO)垂直基准面(VDAT)投影参数3(PRP3)登记点坐标单位(CURP)深度基准面(SDAT)投影参数4(PRP4)浮点化整因子(FPMF)数据编辑比例尺(CSCL)东偏移(FEAS)登记点x值(RXVL)深度测量单位(DUNI)北偏移(FNOR)登记点Y值(RYVL)高度测量单位(HUNI)浮点化整因子(FPMF)注释(COMT)坐标单位(COLIN)注释(COMF)坐标乘数因子(COMF)3.D(水深)化整因子(SOMF)注释(COMT)(3)数据集历史记录数据历史记录(DSHT)包括如下的内容:记录名称(RCNM)、记录标识号(RCID)、生产机构代码(PRCO)、最早资料日期(ESDT)、最新资料日期(LSDT)、数据采集标准(DCRT)、编辑日期(CODT)和注释(COMT)。(4)数据集精度记录数据集精度记录(DSAC)包括如下的内容:记录名称(RCNM)、记录标识号(RCD)、绝对水平精度(HACC)、绝对垂直精度(VACC)、绝对水深精度(SACC)、浮点化整因子(FPMF)和注释(COMT)。(5)类耳目录记录类目目录记录包括类目路径记录和类目交叉参照,具体包含的内容如表3-4 所示表3-4类目目录记录包含的内容目录路径(CATD)类目交叉参照(CATX)记录名称(RCNM)记录名称(*RCNM)记录标识号(RCID)文件名(FILE)名称1(NAMl)文件长名(LF儿)名称2(NAM2)卷标(VOLM)注释(COMT)实现方法(IMPL)最南纬度(SLAT)最西纬度(WLON)最北纬度(NLAT)最东纬度(ELON)CRC(CRCS)注释(COMT)3.2数据模型标准电子海图的数据模型是通过对S一57海图数据之间关系的分析,设计出的符合S.57标准的数据模型。该模型紧密结合构件技术的设计规划与要求以及软件系统开发的实践,是适合电子海图数据组织与传输的模型。S.57理论数据模型如图3—2所示【2】,模型中分为两类物标:特征物标和空间物标。特征物标分为元物标、制图物标、地理物标和集合物标。空间物标分为向量、栅格和矩阵类型。目前使用的标准数据都是向量类型的数据。向量类型又包括节点类型、边类型和面类型。2 图3—2S57理论数据模型根据S.57的模型和数据的特征,将海图数据按照继承关系划分为不同的层次,使得基础数据模型能够反映出海图数据的自然的分层体系机构。在s.57中,交换集指的是一组代表一个完整、单一的(产品专用性)数据传输的文件吲。数据集指的是S.57数据的一个逻辑组,数据集描述记录含有元数据m。物标是指一组可识别的信息(可识别的信息集)【2】。基础数据模型在此基础之上共分3个层次:交换集层、数据集层和物标层。交换集定义为s.57交换集的等价物,用于封装和组织单幅的海图单元;数据集定义为s.57数据集的等价物,用于组织单幅海图的数据;海图物标定义为S.57特征物标的等价物,代表海图物标实体。这三者形成了一个逐层包含的关系,构成如图3.3的层次结构。 图3—3数据模型的屡次结构本文采用UML的方法和COM技术,对数据模型中的层次划分和接口定义进行了分析。将模型分为8个类:GeoExchangeSet类、GeoExchangeSetQuery类、GeoExchangeSetDictionary类、GeoDataSet类、GeoMetrics类、GeoObjeet类、GeoObjectRelations类和GeoAttribute类。根据数据模型层次的划分,交换集层包括GeoExchangeSet类、GeoExchangeSetQuery类和GeoExchangeSetDictionary类;数据集层包括GeoDataSet类和GeoMetrics类;物标层包括GeoObject类、GeoObjectRelations类和GeoAttribute类。具体的关系如图3-4所示:图3-4数据模型类的层次结构23 3.3数据传输在数据模型的基础之上,要研究的就是数据的传输。特别对于网络环境下的WebChart,数据传输的快捷、高效是系统能否成功运行的一个关键。在数据的传输过程中,采用了包容器与枚举器的思想,使得数据传输能够顺利进行。3.3.1包容器与枚举器的设计在很早以前标准模板库(StandardTemplateLibrary,STL)开发者就把它们的集合(Collection)分为三部分:数据本身、数据的包容器和访问数据的迭代器。这种分离有利于建立相互独立的各个部分。包容器的任务是为用户提供影响集合中内容的能力。迭代器的任务是赋予用户访问包容器内容的能力。并且虽然迭代器的实现依赖于包容器中的数据的存储方式,但是对包容器和迭代器的使用者而言,迭代器的实现细节被隐藏起来了佣。为了让客户享受这些优点,包容器和迭代器必须承担某些责任,这些责任包括以下几个方面n:●包容器可能允许用户操纵数据。大多数包容器的大小是变化的,并且其数据由客户来填充。·包容器允许用户获得它的成员个数。·包容器允许随机访问。●如果不支持随机访问,包容器至少允许用户顺序地访问数据。同样的,迭代器也必须承担如下责任17】:●迭代器必须能够访问包容器的数据。●迭代器必须知道它在数据集合中的当前位置。●迭代器必须能够为客户指示包容器的结束位置。在COM中,包容器和迭代器的等价物是COM集合和枚举器。COM集合(COMcollection)也是一个COM对象,它保存了一组数据,并且允许客户通过一个COM接口使用它的内容[Sl。cOM枚举器(COMenumerator)对于COM集合就像STL迭代器对于STL 包容器一样。集合保存着数据并且允许客户使用它,枚举器允许客户顺序地访问数据。但是STL迭代器提供的顺序访问是一次访问一个元素,而COM枚举器允许客户决定它要访问多少元素【11。COM枚举器接口有以下性质:·枚举器必须能访问集合的数据,还必须维护一个用于找到下一个元素的逻辑指针。枚举器的所有操作以某种方式管理这个逻辑指针。●Next方法允许客户决定在一个来回中获取多少个元素。●Skip方法移动逻辑指针但是不获取数据。●Reset方法把逻辑指针移回集合的首部。●Clone方法返回一个枚举器对象的拷贝。在系统设计过程中,对于数据的传输,采用了COM的集合与枚举器。将海图的数据保存在COM的集合中,针对数据模型中的类,设计出各个类的枚举器,从集合中传输数据。在系统中设计了5个枚举器:●GeoDataSetlterator:数据集枚举器。用来传输数据集相关的信息。它是数据集与交换集之间的桥梁,保证了在一个交换集下的多个数据集能够与该交换集进行高效的数据传输。●EnumGeoMetrics:空间属性枚举器。用于传输空间属性信息。它连接的是空间属性类与交换集,使得空间属性信息能够与其对应的交换集联系在一起。·GeoObjeetlterator:物标枚举器。用来传输海图物标的信息。它连接的是物标类与交换集,使得海图物标能够与其所属的交换集联系在一起。·EnumGeoObjectRelations:相关物标枚举器。用来传输与原物标相关的物标,包括主物标、从属物标和同级物标。它是将有关系的海图物标联系在一起。·EnumGeoAttribute:属性枚举器。用来传输物标的属性信息。将属性信息与海图物标相对应。这也是一个多对一的关系,多个属性对应于一个海图物标。 3.3.2SDK数据访问控制数据模型定义了基础的海图数据的层次关系,包容器与枚举器定义了海图数据的传输方式。在此基础之上,可以定义出SDK数据访问控制模型,如图3.5所示。图8-5SDK数据访问控制模型交换集接口(IGeoExchangeSet)为整个海图数据各个功能接口所构成的树的根部,并且实现对基本信息的访问接口。通过IGeoDataSetlterator枚举器实现对所属多个数据集的包容;数据集接口(IGeoDataSet)提供对一个数据集的访问,通过IEnumGeoMetrics和IGeoObjeetlterator枚举器来包容该数据集的空间属性与物标:物标接口(IGeoObject)提供对一个物标的访问,通过海图物标关系枚举器(IEnumGeoObjectRelations)来实现对关联物标的枚举。通过属性枚举器(IEnumGeoAttribute)来枚举海图物标特征的一系列属性。交换集中的查询类,用以提供对给定区域范围以及一个给定的比例尺级别(范围)的数据集的枚举。同时也可以依据物标类目及其几何类型设置其返回的顺序(即优先级)。海图数据字典(GeoExchangeSetDictionary)主要管理物标类目和属性表,为信息 查询提供了一个代码和名称之间的转换,或者提供属性格式化的接口。3.3.3WebChart数据访问控制在网络环境下,客户端创建了组件对象之后.它通过接口指针调用组件对象的成员函数,但实际上,接口指针所指的是本进程中的代理对象(proxy),客户调用的是代理对象的成员函数,由代理对象通过远程过程调用(RemoteProcedureCall,R.PC)与对象进程中的存根代码(stub)通信,存根代码再调用COM对象成员函数。函数返回的顺序刚好相反,由COM对象,经过存根代码和代理对象,最后返回到客户程序。代理对蒙与存根对象之间采用列集机制来实现通信。列集(marshaling)是指客户进程可以透明地调用另一进程中对象成员函数的一种参数处理机制。代理对象用列集手段处理成员函数的参数,通过列集处理后得到一个数据包(数据流),然后通过一种跨进程的数据传输方法,比如共享内存方法,网络协议等,当数据包传输到对象进程后,存根代码用散集(unmarshaling,列集的反过程)的方法把数据包参数解译出来,再用这些参数去调用COM对象;当COM对象成员函数返回后,存根代码又把返回值和输出参数列集成新的数据包,并把数据包传到客户进程中,代理对象接收到数据包后,把数据包解译出来再返回给客户函数,从而完成一次调用。对于枚举器,使用RemoteNext方法获取数据。客户通过代理端的接口调用Next方法,再通过NextProxy来调用RemoteNext方法。使用RPC,调用存根对象的RemoteNext方法,最后调用COM对象的Next方法来获取数据。具体流程关系如图3-6所示: 圈3—6网络环境下的枚举器的数据访问WebChart的数据访问控制就是基于上述的网络环境中的COM对象访问机制来实现的。用户发出数据访问的请求,客户端组件根据请求寻找到对应的枚举器的代理,由该代理来实现数据的远程访问。该代理通过RPC与服务器上的stub进行通讯,stub调用服务器端的SDK数据访问构件来读取数据库中的海图数据。在通过相反的过程,将数据传输到客户端。 第4章海图显示海图显示是电子海图的实际表现形式,是海图与外界环境进行交互的直观表现。根据S。52的显示规范来设计符合标准的表示库,是电子海图显示的基础。对于构件式电子海图系统,就需要根据S.52规范与构件技术的特点,合理的设计与实现表示库构件。在网络环境下,采用合适的显示技术,与表示库构件实现快速、有效的数据交互,才能使得电子海图在网络环境下很好的显示。4.1表示库IHOS-52是ECDIS海图内容和显示的IHO规范,IHO的((ECDIS颜色与符号规范》(PC&SS)作为S.52的附录在满足IMO性能标准(PS)及S.52需要的前提下,确定了在ECDIS实现中表示SENC信息的方法和意义。而表示库是PC&SS的核心,提供了解码和符号化SENC元素的细节和程序,为软件开发商提供了根据S一52将一个相对抽象描述的S.57物标转化为有效的ECDIS显示所需的信息。4.1.1表示库内容目前,表示库包含七部分内容。f1)颜色编码方案表表示库提供了一个颜色方案,即根据颜色的用途进行分类并形成颜色表。颜色编码方案表包含了IHO用于白天和夜晚的颜色表。每一种颜色的用途都由一个5字母代码的标识来表示。为适合不同的光照条件的要求,表示库提供了六个颜色表,可根据实际情况的需要使用其中的任何一个。六个颜色表的分类如表4.1所述mI:表4-1颜色表颜色表名称颜色表中文名称背景属性DAY_BRIGHT晴朗白昼自背景DAY—WHITEBACK白昼.自背景白背景DAY.BLACKBACK白昼一黑背景黑背景DUSK黄昏黑背景 lNIGHT夜晚.使用滤光镜黑背景NIGHT_UNFILTERED夜晚.不使用滤光镜黑背景(2)符号、填充模板和线型库符号、填充模板和线型库(均使用6字母代码加2个数字位表示)统称为符号体系,是s.52海图显示的基本语言。表示库使用矢量描述语言(vectordescriptionlanguage)来描述每一个符号(填充模板或线型)。·符号。根据IMO性能标准,表示库提供一套简化符号,还根据纸海图(INTl)提供一套标准符号。这样ECDIS显示能在INTl和简化(S-52)符号之间切换。·填充模板。表示库提供各种各样的方法填充区域:可以用不透明的颜色填充,或用一定透明度的颜色填充,或用符号图案(填充图案)填充。●线型。表示库使用两种线型类型:简单和复合线型。简单线型是出不同的颜色和宽度的实线、点虚线和虚线组成,复合线型由重复的线状图案组成。t3)符号化指令ECDIS图像由符号化指令生成。符号化指令是依次从一套已经被设计来做表示库的符号化命令字中集合丽来。目前,符号化指令有五种类型:线物标指令、区域物标指令、点物标指令、文本标注指令、条件符号化程序指令。检索表中所用到的符号指令总共有8种前缀(2个字母)表示,如表4-2。表4-2符号化指令指令前缀类型说明SY点物标指令符号化点状物标,和区域中央符号Lc线物标指令复合线型,适用于锚地边界等LS线物标指令简单线型,适用于等深线等AC区域物标指令颜色填充区域,适用丁陆地、等深区域等AP区域物标指令模式填充区域,适用于飞机场等TE文本标注指令简单文本标注TX文本标注指令带前缀文本标注CS条件符号化,需要根据物标的属性和当时航海人条件符号化程序指令员设置的条件参数(如本船安全等深线)最终可以得到由前面7种指令或其组合。(4)条件符号化程序大多数物标能以直接的方式用线、区域或符号的符号化指令表现出来,但对 于一些物标类,其属性值和符号化指令之间的关系非常复杂或其显示依赖于航海人员设置的条件参数。为了处理这些复杂表现情形,需要条件符号化。条件符号化与标准符号化的区别在于,它要运行程序而不是直接的符号化指令。条件符号化程序根据输入的参数不同,生成用于显示的符号化指令。(5)检索表检索表是联系SENC物标和s一52符号库的纽带,表中包含如何表现一个物标类实例的指令,共5个,分点、线和面3类:纸海图点状符号;简化点状符号;线符号;区域边界符号;符号化区域边界符号。ECDIS允许航海人员在两个点状符号表和两个区域符号表之间选择。检索表条目包含6个字段及一个可选项,均使用一般文本来描述,各字段对应的定义见表4.3。表4-3检索表条目字段#名称说明1物标类编码6字母的缩写类标识2属性组合一组属性及其属性值的组合3符号指令组一组文本描述的指令组合4显示优先级值取‘0’到‘9’,这里‘9’表示晟高优先级。5OVERRADAR(雷达叠加)标志对物标进行分类,以表明物标是否在原始雷达图像的上面显示。有两个值可选:“o”表示在雷达图像上显示该物标“s”袭示该显示描述要被雷达图像覆盖6显示类别隶属关系基础、标准、其他⋯7可选显示组(6)航海人员的ECDIS海图1袭示库包含了一套符合S.57格式的海图符号图表,作为航海人员ECDIS海图1使用。(7)航海人员的航行物标类日一些ECDIS符号表示的物标在S.57中无定义,例如航迹点或位置线。因此,允许ECDIS生产商用s一57或海图物标的相同方法来处理航行符号,表示库具有自己的航行物标类目。其结果是,一个航迹点可以存储在SENC中并且能通过使用表示库的符号、线型和填充模板显示在ECDIS屏幕上。与S一57物标类的符号化指 令类似,在检索表中也可以检索到适合于航行物标的符号化指令。4.1.2表示库构件(1)参数编码所有表示库的表示项参数都采用统一的编码,该编码以检索表为中心,涉及到表示库的多方面内容,如颜色表、符号化指令等。在表示库构件中编码是通过标准的WindowsDISPPARAMS结构来实现,每个表示项参数只能有一个ID(DISPID)。DISPPARAMS结构是自动化技术的基础结构。自动化技术是COM构件技术的高层次应用,它的基础是COM技术。DISPPARAMS结构包含了方法或者属性调用的所有参数信息,其定义如下Ⅲ】:typedefstructFARSTRUCTtagDISPPARAMS{VARIANTARG4rgvarg;DISPID+rgdispidNamedArgs;UINTcArgs;UINTcNamedArgs;)DISPPARAMS;在DISPPARAIVlS结构中,rgvarg指针来保存参数数组;rgdispidNamedArgs指针来保存参数的分发D数组;cArgs变量来表示数组中的参数个数:cNamedArgs来表示命名参数个数。rgvarg参数的类型是VARIANTTAG,其结构的定义与VARIANT完全一致。VARIANT类型被称为变体数据类型或联合数据类型,顾名思义在这个结构内能够包含所有数据类型的变形,可以在支持不同的开发语言下定义的数据类型。它是实现构件技术和自动化技术的数据基础。构件技术与自动化技术数据传输过程中的参数和返回值在内部都是作为VARIANT对象来处理的。VARIANT类型包含了一个判别式字段vt、一些保留字节以及一个大的union(联合)类型。vt字段能够包含各种各样的常量,每一个常量指定一个不同的数据类型和相应的联合字段。每一个支持的数据类型都带有一个特定的常量,而且可以通过使 用修饰符来允许通过引用来传递值或者允许通过数组传递值。例如,vt值为vTR8,可以从dblVal中读出VARIANT的值,它包含了一个8字节的实数。(2)表示库的显示实现海图物标的显示过程为:从GeoExchangeSet构件中以循环模式检索物标,由于GeoExchangeSet构件中不包含物标的颜色与符号信息,必须通过物标属性来获得相关的信息。从检索表中利用物标的属性值来查找合适的符号化指令和显示优先级。当符号化指令是条件符号化程序时,需要通过条件符号化程序对物标生成符号化指令。至此,符号化指令已可用于物标显示,而不论是直接来自检索表或条件符号程序产生。这些符号化指令便转译成一系列特定的图形命令。每个图形命令有显示优先级,是从检索表中带过来的。所有物标经过程序循环处理后,显示列表中便添加了显示命令。这些命令由表示库图形(标绘)程序运行,从符号库中装入符号并从颜色表中得到颜色。航海人员可以在符号化过程和执行显示列表的过程中,加入相应的参数控制。例如:可以选择不同的背景颜色、选择过滤文字指令、选择简化符号或纸海图等同符号等。此外,还有一些依赖于特定时间的物标和一些依赖于比例尺级别显示的物标。对这些物标在符号化循环中,加相关条件进行辨别。具体的符号化过程如图4-1所示: 图4_1表示库的符号化过程4.2基于Activex控件的网络显示(11ActiveX概念与内容ActiveX技术是Microsoft在对象链接和嵌入(ObjectLinkingandEmbeddingtOLE)技术基础之上的更新和发展。为了适应网络的高速发展,Microsoft公司把OLE技术和OCX(OLECustomControls)技术融为一体并加以改进形成联合标准,改进之后赋予新名字ActiveX。ActiveX是一组使用COM使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序。 ActiveX既包含服务器端技术,也包含客户端技术。其主要内容是:·ActiveX控制(ActiveXContr01):用于向WEB页面、MicrosoftWord等支持ActiveX的容器(Container)中插入COM对象。●ActiveX文档(ActiveXDocument):用于在WEBBrowser或者其它支持ActiveX的容器中浏览复合文档(非HTML文档),例如MicrosoftWord文档,MicrosoftExcel文档或者用户自定义的文档等。●ActiveX脚本描述(ActiveXScripting)·用于从客户端或者服务器端操纵ActiveX控制和Java程序来进行数据的传递和操作的协调。●ActiveX服务器框架(ActiveXServerFramework);提供了针对WEB服务器应用程序设计各个方面的函数及其封装类,诸如服务器过滤器、HTML数据流控制等。(2)ActiveX与Internet●ActiveX控制和InteractActiveX控制是OLE控制的更新版本。控制是建立可编程部件的主要元素。AetiveX控制可以用于所有支持COM规范的容器中,或者作为Intemet控制嵌入到WEB页面中。用户访问该页面时将下载该控制并自动在本地注册。利用脚本描述语占(Script)可以在控制之问以及客户与服务器之间通过设置属性(Property)、调用方法(Mcthod)和激活事件(Event)进行通信。ActiveX控制与以前的OLE控制相比,具有更少的接口,并且可以没有窗口。所有的ActiveX控制都支持IUnknown接口。●Active)(文档和InteractActiveX文档提供了传统的嵌入对象的扩展方法。ActiveX文档对象可以包含多个页,显示在接个客户区中,并支持原有的菜单功能。与以往的嵌入对象不同的是,Active)(文档对象不再以一个阴影方框包围来显示,而是全框架(FullFrame),并总处于激活状态。ActiveX文档服务程序提供了文档的核心处理功能,包括文档的读写、文档的显示以及文档的编辑等。包容器程序负责创建并控制ActiveX文档对象,并把Web服务器上的数据通过适当的接口传递给ActiveX文档服务程序。 ActiveX文档可以作为对象嵌入到WEB网页中,在WEB上发布。(3)基于ActiveX的海图显示如同Windows的普通控制一样,ActiveX控件既是一个自动化对象,也是一个标准的COM对象,同时它也是一个界面元素。基于ActiveX的海图显示关键在于如何将电子海图构件在ActiveX的框架下进行数据的传输与显示。海图ActiveX控件的显示在ActiveX控件的包容器中进行,ActiveX控件的包容器程序结构如图4—2所示【gl:lLInkn⋯囝环境■PrⅢDisD●口.响Pl●GeF⋯oPImUlWi“PIⅢS;t5toh(暴露性)rtvNotifyStoh(出接应事件)图4-2ActiveX控件包容器结构示意图在Interact环境中,典型的应用模式为:客户端的浏览器接收Web服务器提供的数据,然后按标准的HTML语言对数据进行解释并在浏览器窗口中表示出来,HTML语言的表述能力限制了浏览器窗口与用户交互的能力。ActiveX控件在Intemet环境中的包容器程序实际上就是Intemet的浏览器程序,具体的来说就是MicrosoftIntemetExplore,简称IE。在IE中使用的海图ActiveX控件是个永久对象,该控件对应的代码的加载通过“OBJECT”标记的“CODEBASE”属性来指定。对应海图数据由IE指定,在“OBJECT”标记的“DATA”属性中指定包含海图数据文件的URL文件名。如果DATA属性中包含URL文件名,那么包容器就创建一个URL名字对象,并且调用ActiveX控制的IPersistMoniker接口的L0ad成员函数执行初始化。ActiveX控件调36~EE甓甚 用名字对象的IMoniker::BindToStorage函数以便获得属性数据并进行初始化。如果ActiveX控件不支持IPersistMoniker接口,则IE会请求其它的永久接口,然后获取属性数据,必要的时候打包到流对象中,再调用永久接口的Load成员函数。于是,ActiveX控件就可以通过流对象得到属性数据。下面的HTML代码说明了在Web页面中为海图ActiveX控件加载代码与指定海图数据的方法。吲OBJECT>由于ActiveX控件与Windows系统能够实现无缝的结合,客户端的浏览器通过ActiveX控件来调用本机的绘图资源对海图数据进行显示与符号化,能够很好地再现SDK中的海图显示效果。ActiveX控件导入的海图数据相当于存储在本机上的海图数据文件,因此对海图的基本操作,例如缩放、漫游等,能够高效率的实现。37 第5章系统设计与实现本章主要对构件式电子海图系统进行设计与实现。在已经建立的数据模型的基础上,对电子海图系统的基本功能与扩展功能进行划分,实现各个功能的构件化。并对每个构件进行管理和优化,最终形成一个完善的构件化系统。针对SDK系统主要进行的是基本功能的构件化,形成一个基础平台,能够在此基础平台之上实现二次开发。对于WebChart系统主要进行了整体上的设计,使得在网络环境下,该系统能够很好的满足要求。5.1SDK系统设计依据第三章建立的数据模型,结合图形显示技术,将SDK系统划分为6个部分:GeoBase构件、GeoAdministrator构件、GeoProjection构件、MapViewPort构件、GeoExchangeSet构件和GeoPresentation构件。总体的关系图如图5-1所示。匡自GeoBase图5—1SDK系统关系图GeoBase构件是所有其他构件的结构基础,它定义了SDK中基础的地理信息。在定义的过程中,通过对地理信息的分类和组织,实现地理信息的最优化表述。GeoAdministrator构件是SDK的管理和数据基础,提供系统的数据管理和基础配置。它依赖于GeoBase构件定义的地理信息,对其他构件提供基础的数据操39 作。GeoProjection构件和MapViewPort构件独立的算法,来支持投影转换和坐标变化的功能,该构件不依赖于其他构件而独立存在。GeoExchangeSet构件是数据处理的核心构件,依赖于GeoBase定义的地理信息和GeoAdministrator构件提供的海图数据,并且需要GeoProjection构件和MapViewPort构件的支持。根据第三章所定义的数据访问控制模型,GeoExchangeSet构件分为三个层次:交换集层、数据集层和物标层。交换集层包括GeoExchangeSet构件、GeoExchangeSetQuery构件和GeoExchangeSetDictionary构件;数据集层包括GeoDataSet构件和GeoMencs构件;物标层包括GeoObject构件、GeoObjectRelations构件和GeoAttribute构件。GeoPresentation构件是海图显示的核心构件,依赖于GeoExchangeSet构件组织后的海图数据,并辅以GeoProjection构件的投影转换和MapViewPort的坐标变化。GeoPresentation构件划分为4个构件:GeoPresentation构件,GeoSymbolization构件,GeoDraw构件和ColorMap构件。5.2WebOhart构件库设计S.57数据作为电子海图数据存储和传输的国际标准,已经逐渐被应用到电子海图数据领域。但是大多数电子海图系统的开发公司,都保存了自己的内部数据标准。造成了大量的重复性开发,使得不同开发商之间的系统无法进行互操作,阻碍丁跨领域、跨地域的电子海图系统的发展。构件技术提供了理论与技术基础,来解决不同数据源系统之间的交互操作。构件库中提供了多数据源接口,将各种异构的数据源的转换模块作为构件库的子构件,通过多数据源接口与构件库连接,完成数据的转换。保证构件库与应用系统的数据格式为标准的s.57数据,从数据的角度能够保证整个系统的一致性。电子海图系统是由后台的电子海图数据库、基础电子海图平台和针对不同用户的应用系统组成。基础电子海图平台在分布式的环境下,利用UML进行建模, 能够抽象出各层独立的模块。在模型基础上,建立的构件库能够适应分布式的各种需求。电子海图系统构件库模型如图5,2所示。I应甩系统』l应用层}爿功能层l对象j【』【‘一管数据层理俐仟厍f1黼库I海图基础数据库lI其他信息数据库l5.2.1数据层图5-2构件库的主体层次关系数据层负责处理所有与数据相关的操作。数据操作是构件库中其他所有操作的基础。UML的基础包中有数据类型包、核心包、辅助元素包和扩展机制包。其中的数据类型包又是其他包的基础。数据的独立操作,有助于提高数据处理的速度,降低其他操作对数据的依赖性,符合构件之间低偶合度的要求。数据层包括以下的具体子层:·基础数据元素层:包括基础数据元素的定义与基础运算。基础数据元素包含了S.57定义的所有数据元素。·空间数据读取与存储层:对空间数据的读取与存储操作进行管理。保证数据传输的快捷。该层直接与多数据源接口相连,为上层的操作提供基础。·空间数据检索层:提供各种数据的检索。包含各种快速搜索的算法,诸如空间数据的快速搜索算法,海量数据的快速搜索算法等。●数据更新层:与用户权限管理相联系。在确认用户有权限对数据库更新的40 情况下,快速地更新数据库。·空问数据拓扑分析层:包括海图拓扑关系的分类与管理,拓扑分析的相关算法。为海图的各项功能提供图形学和数据的分析基础。5.2.2功能层功能层是整个构件库的核心层,它为电子海图系统的显示提供了基础的运行环境。尽管各个应用系统有着不同的应用领域、不同的需求、不同的功能实现,但都需要对海上的信息元素进行显示、编辑、检索等操作。功能层的目的就是将各个应用系统都需要的功能进行抽取,形成独立于应用系统的构件层。功能层包括以下的子层:●海图显示与控制层:提供了基本的海图显示功能,如手动选择海图、自动选择海图、无级比例尺缩放、海图漫游、分层显示控制、显示参数控制等。●海图编辑与改正层:提供了海图编辑与改正的功能。可以手工地在当前海图上修改、删除、添加任何内容(包括符号、线、面、文字、水深点等)。可以导入符合S.57标准的ER(ElectricCorrection)文档,直接对海图进行改正。·应用算法库:提供了与显示及航海相关的各种基础算法。包括有图形的各种裁剪算法、坐标系的投影变换(海图的地理坐标系与显示坐标系的变换)算法、最优航线算法、大圆航线算法、CPA相关算法等。·通信功能接口:提供通信数据的处理功能。能处理GPS、AIS等船用通信设备输入的数据,并将数据定位于海图上,为用户提供实时的信息。5.2.3应用层应用层直接面向应用系统,提供其他航行相关信息与操作。应用层包括以下的子层:·航行管理层:提供了与航行信息有关的功能。如计划航线的设计与显示、航程信息统计、航海日志管理等。4 ●报警功能层:提供船舶航行时的各种报警功能。如偏航报警、CPA报警、浅水区报警、水下危险物报警、特殊区域报警等。●气象信息层:能够处理各种气象信息,如台风、雾、海浪等。提供给航行人员直观的气象信息,有助于航行决策。·潮汐信息层:处理潮汐的变化数据。·辅助功能层:提供航行的辅助信息功能。5.2.4对象管理层包含整个电子海图系统的控制与管理。该层的构件独立于应用系统,对构件库的其它层次进行管理,以达到整个构件库在分布式系统中具有较强的安全性与稳定性。对象管理层包括以下的子层:·用户管理层:在分布式计算环境中,要求系统有较高的安全性能。对于构件库的使用用户,根据其使用目的与功能需求,制定用户的操作权限,保证系统的安全运行。·安全目录层:设定海图区域的目录层次,对各个目录进行管理。●多数据源接口层:提供各种异构的数据源的接口,能够使用各个电子海图系统开发商所开发的数据。将这些数据转换成标准的s.57数据进行传输。●构件管理层:对整个构件库的构件进行管理,对构件的分布、运行情况进行控制。通过该层的控制信息,来优化整个构件库。构件库中各具体子层的层次关系如图5.3所示。42 5.3基础构件的实现5.3.1GeoBase构件图5—3构件库的具体层次关系GeoBase构件是一个基础地理信息库。它包含了关于地理与图形数据的一系列的结构、类和操作函数的定义。(1)地理基础类它是地理数据的基础库,定义了~系列的结构、类和函数来处理地理数据。其中包含地理数据的基本结构定义(地理点、地理区域等),地理常数的定义(地球椭圆参数、弧度与角度之间的转换参数等),数据基本操作的函数定义(地理点之间的运算和地理区域矩形运算)。(2)空间属性结构类定义包含物标的空间属性结构TMapMetrics:typedefstructTMapMetrics{43 LONGegt;ULONGcRef;union{TMapMetrics_PNTP;TMapMetrics—TPCPC;TMapMetrics_T3DP3D;);jTMapMetrics;其中包含:·空间属性的类型(egt)。空间属性共分为7种类型,在对应的结构EGEOMETRYTYPE中定义。typedefenumEGEOMETRYTYPE{egtNotSpatial=0,egtPoint=1,egtLine=2,cgtArea=3.egtLineSpline;4,cgtAreaSpline=5,e舀3DPoints=6)EGEOMETRYTYPE;其中0表示空,即没有空间属性;1表示空间属性为点;2表示空间属性为线;3表示空间属性为面;4表示空间属性为样条线;5表示空间属性为样条面;6空间属性为水深。●空间属性的参考数目(cRef)。●联合(union)。其中TMapMetrics_PNT描述的是点的几何结构;TMapMe缸cs_TPC描述的是线和面的几何结构,线结构采用Polyline来表示,面结构采用Polygon来表示;TMapMetrics_T3D描述的是水深点的几何结构。(3)$57对照表类它实现了物标和属性名称与其对应的代码之间的关系定义。其中代码的定义完全参照S.57的标准。(4)$57字段结构类其中定义了S57各字段对应的结构。 ●数据集:$57DSID(数据集标识),$57DSSI(数据集结构信息),$57DSPM(数据集参数),$57DSPR(数据集投影),$57DSRC(数据集登记控制)。·特征物标:$57FRID(特征记录标识),$57FOlD(特征物标标识)。●属性:$57ATTF(特征记录属性),$57NATF(特征记录国家属性),$57FFPT(特征记录至物标指针),$57FSPT(特征记录至空附记录指针)。f5)颜色类定义$52的颜色对照表。该颜色对照表中颜色对应的代码符合S.52显示标准中关于配色方案的定义。(6)表示库类定义了$52的物标查询结构以及对应的物标查找表。系统中有5类物标使用物标查找表:纸海图点,符号点,符号线,符号区域和简单区域。物标查询结构包括:·物标类编码(classno)。物标类对应的代码在$573.h中已经定义。●属性组合(attr)。属性对应的代码在$573.h中已经定义,一些扩展的属性组合,可以在该变量中设置。·符合指令(instr)。具体的指令结构如表5-1所示:表5-1指令结构描述变量类型说明typeBYTE符号分类1--8syPLISY+PLL-SY一定义为点符号结构PLICS‘PLLcS一定义为条件符号化结构lCPLILC+PLLLc一定义为复杂线结构lsPULS+PLI_LS--定义为简单线结构aCPLIAC+PLI_AC--定义为颜色填充结构apPLIAP+PLI_AP--定37.模式填充结构txPLITX+PLt-Tx一定义为一般文本结构tePLITE+PLI-TE一定义为带前缀的扩展文本结构·显示优先级(prio)。该优先级与S一52关于优先级的定义是一致的,显示优先级的值取0到9,9表示最高优先级。表5.2给出了优先级分配的一个概况示意: 表5-2优先级分配表物标类优先级分配无数据填充区域模式优先级0s.57第一组填充区域优先级1重叠区域(例如:CANALS)优先级2,3受限区域优先级5通航区域优先级6陆上物标优先级4.5水上物标优先级3,4,5,6岸线物标优先级5,6.7航道线优先级5,6,7线和区域的符号优先级4.5,6危险(桥,安全等深线)优先级8航海人员VRM—EBL优先级9本船优先级9·雷达叠加标志。对物标进行分类,以表明物标是否在原始雷达图象的上面显示。有两个值可选:O表示在雷达图象上显示该物标:s表示该显示描述要被雷达图象覆盖。●显示类别隶属关系(type)。分为基础、标准、其他三种方式。·可选显示组。typedefstruct{intclassno;charattr[28];charinstr[180];intprio;charradar;inttype:intgroup;)S52Pres;5.3.2GeoAdministrator构件GeoAdministrator构件是一个系统管理库,主要完成系统的安装、初始化、数据管理和用户的权限管理。具体的接口与函数如表5.3所示。(1)系统的安装和初始化保存系统安装的配置信息,在运行程序时,系统能够自动地找到数据所在的 目录,并对数据进行初始化操作,将数据导入到系统之中。(2)数据管理包括数据的注册、导入和更新。数据导入包含有数据库接口、数据文件接口和扩展接口。数据库接口可以直接导入$57标准数据库;其他数据通过扩展接口转换为$57标准数据:数据文件接口,可直接导入$57数据文件。(3)权限管理权限管理是针对不同的用户,进行许可证(1icense)的发放。通过license,用户可以得到自己所需的数据集。这种方式能够使得数据开发商对数据的产权保护。表5-3GeoAdministrator构件定义说明ISyslnit系统初始化接口,完成系统的数据初始化。IUserAdmin用户管理接口,不同的用户根据用户权限对系统进行管理。接口IDatabaselmport数据库导入接口,针对数据源为数据库的情况。IDatafilelmport数据文件导入接口,针对数据源为s.57数据文件的情况。IDataExtImport数据导入扩展接口,针对数据源为其他形式数据的情况。InitAdmin将构件与数据源连接。Install系统的安装。Update系统的升级。函数Remove断开与数据源的连接。AddLicense添加许可证。GetLicense得到许可证。5.3.3GeoProjection构件与坐标投影相关的所有操作包含在该构件中。包括地理坐标点到屏幕坐标点的转换,屏幕坐标点到地理坐标点的转换,地理矩形区域到屏幕矩形区域的转换,屏幕矩形区域到地理矩形区域的转换。具体的接口与函数如表5.4所示。表5—4GeoProjection构件定义说明接口IGeoProjection投影接口.完成与投影相关的所有操作。GeK3eoCoord得到地理坐标。GetPointGl50得到点的地理坐标。函数Ge02MapRects将地理矩形转换为屏幕矩形。Map2GeoRects将屏幕矩形转换为地理矩形。47 5.3.4MapViewPort构件MapViewPort构件包括如下功能:笛卡儿坐标系视点的平移;坐标系的旋转(坐标系参考为笛卡儿坐标系统,角度偏转以逆时钟为正,即左转为J下,右转为负):比例尺的缩放;坐标点角度与弧度值的转换。具体的接口与函数如表5-5所示。表5-5GeoMapViewPort构件定义说明接口IMapViewPort视点接口,完成与视点变换相关的所有操作。Win2.MapPoints将点从Windows坐标系转换到海图坐标系。Map2WinPoints将点从海图坐标系转换到Windows坐标系。函数Win2MapRects将Windows坐标系中的矩形区域转换到海图坐标系下。Map2WinRects将海图坐标系中的矩形区域转换到Windows坐标系下。5.3.5GeoExchangeset构件GeoExchangeSet构件是海图数据处理的构件。它是在数据模型的基础上设计出来的。结合构件技术的原理,在构件的各个组件之间的数据传递.采用COM的包容器(Container)和枚举器(Enumerator),使得数据在传递过程中能够完成大数据量的传输以及进程外和远程数据传输。COM中有两种重用模型:包容和聚合。如图5-4,对象A实现了ISomeInterface接口,对象B既要实现ISomeInterface接口,也要实现IOtherInterface接口。在实现对象B的接口ISomeInterface时调用对象A的相应成员函数。这样对象B不再重复实现对象A已实现的功能,对于对象B的客户,它根本不知道对象A的存在。这样的情况,称为对象B包含对象A,或者对象A被对象B包含。如图5.5,要实现一个对象B,它支持两个接口:ISomeInterface和IOtherInterface,同时发现对象B所提供的ISomeInterface功能在另一个对象A中已经实现,而且不需要修改就可以满足对象B的要求。对象B本身并不实现接口ISomeInterface,它只实现IOtherInterface接口,但它也提供接口ISomeInterface的功能,当对象B的客户请求接口ISomeInterface时直接与对象A进行交互,但客户并没有感觉道在与对象A进行交互,它仍觉得在与对象B进行交互,这种情况,称之为聚合模型【91。48 调用图5-4COM对象包容示意图图5-5COM对象聚合示意图根据COM的包容与聚合模型的原理,可以将电子海图基础数据模型的8个类进行包容与聚合,形成对应的子构件。GeoExchangeSet构件是父构件,其他的构件都应该包容和聚合在它之中。GeoDataSet构件是第二层次构件,聚合了GeoMetrics构件和Ge00bject构件。GeoObject构件是第三层次构件,聚合了GeoObjectRelations构件和GeoAttribute构件。图5-6表示的是GeoExchangeSet构件的接口实现图,详细的列举了8个构件的相互关系以及各个构件实现的接口之间的关系。 IUnlamwn.1Unknown?GeoExchangeSetGeoExchangeSetDicQueryIUnknownGeoExchangeSet?叭~?觚~”JIUnlmown』ICreoObjoetlGeoo嘲ec水e-at,onslGeoMetricsIUnknown?GeoAttributeI图5-6GeoExchangeset构件的接13实现图(1)交换集层交换集处于数据模型实现的顶层,它包含一组海图数据,这一组数据可以是由一组数据文件组成,也可以是由一组相关的数据库组成。其主要的工作是组织和管理海图单元,包括交换集的基本操作、交换集的查询接口、数据字典接口、数据集接口等功能。ajGeoExchangeSet构件GeoExchangeSet构件实现的是交换集的基本操作,包括初始化交换集、获得交换集的覆盖区域,通过名称获得数据集等。具体的接口与函数如表5-6所示:表5-6GeoExchangeset构件I定义说明1接口IGcoExchangeSet交换集接口,完成数据处理相关的所有操作。 Initialize初始化GeoExchangeSet构件接口。GetDataSetByName得到指定名称的数据集接口。GetDataSetByGUID得到指定GUID的数据集接口。GetObjectByGUID得到指定GUID的物标接口。函数CreateQuery创建物标查询的迭代器。GetCoverage在一定的比例尺下,得到指定地理区域的海图。LoadPriorityIndex导入优先级的索引。UnLoadPfiofitylndex删除优先级的索引。CreateDataSetlterator创建数据集的迭代器。b)GeoExchangeSetQuery构件GeoExchangeSetQuery构件主要完成交换集的查询。对于不同交换集下的海图,通过该类来实现海图的查询与数据载入。具体的接口与函数如表5—7所示:表5—7GeoExchangesetouery构件定义说明接口IGeoExchangeSetQuery交换集查询接口。Query通过地理区域来查询对应的数据集。Open根据比例尺,遍历所有的数据库,生成可以显示的海图列表Close删除海图列表。Reget将海图列表清空。函数CreateQuery创建物标查询的迭代器。GetCoverage在一定的比例尺下,得到指定地理区域的海图。LoadPfiofityIndex导入优先级的索引。UnLoadPriofityIndex删除优先级的索引。CreateDataSetIterator创建数据集的迭代器。c)GeoExchangeSetDictionary构件GeoExchangeSetDictionary构件用作数据字典。以$57代码或名称为关键字,完成对$57属性表中对应的$57属性值的查询。具体的接口与函数如表5.8所示表5-8G∞ExchangesetD;ctionary构件定义说明接口IGeoExchangeSetDietionary交换集字典接口。函数GetClassesNum得到物标类的数目。GetClassCodes得到物标类的代码。ClassAcronym2Code返回物标类代码的缩写。GetClassFlags返回物标类的标志。GetClassAcronymLength得到物标类缩写的&度。GetClassNanle{导到物标类的名称。GetClassAttributesNum得到物标属性类的数目。 GetClassAttributes得到物标属性类的代码。CreateSuperClass创建一个超类,用来包含相芙的物标类。DeleteSuperClass删除指定的超类。AddSubClass向超类中添加一个物标类。RemoveSubClass从超类中删除指定的物标类。SubClasslsMember检查物标类是否包含在超类中。GetSubClassesNum返同超类中包含的物标类的数目。GetSubClasses得到包含在超类中的所有物标类的代码。GetAttributesNum得到字典中属性类的数目。GetAttributesCodes得到属性类的代码。AttributeAcronym2Code返回属性类代码的缩写。GetAttributeFlags返回属性类的标志。GetAttributeAcronymLength得到属性类缩写的长度。AttributeCode2Acronym返同属性类的缩写。GetAttributeNameLength得到属性类名称的跃度。GetAttributeName得到属性类名称。GetAttributeType返回属性类的类型。GetAttributeValueNameLength返回有可列举值的属性类名称的K度。GetAttributeValueNartle返回有可列举值的属性类名称。(2)数据集层数据集是特征物标和空间物标的存储容器。提供对物标的遍历访问、相互关系维护等管理功能。包括数据集数据的导入、空间数据相关操作、与物标的相关接f]等。a1GeoDataSet构件GeoDataSet构件完成的是数据集的基本操作,包括数据集覆盖区域和边界操作、空间特征数据的操作和对物标的枚举操作等。具体的接口与函数如表5—9所示:表5-9GeoOataSet构件定义说明IGcoDataSet数据集接口,负责数据集的相关操作。接口IGeoDataSetlterator数据集迭代接口,负责数据集的迭代操作。函数CreateObjecflterator创建物标的迭代器。GetAttribute返回数据集中的属性接口IGeoAttribute。EnumAttributes得到属性枚举接口IEnumGeoAttribute。EnumGeoMetricsVC通过IGeoMetricslterator接口枚举得到连接节点相关的空间属性EnumGeoMetricsVI通过IGeoMetricslterator接口枚举得到孤立节点相关的空_间属性 『EnumGeoMetricsSG2D通过IGeoMetricslterator接口枚举得到边的相关空间属性EnumGCOMetricsS(33D通过IGeoMetricslterator接口枚举得到水深点的相关空间属性b)GeoMetrics构件GeoMetrics构件完成的是空间信息的操作。具体的接口与函数如表5—10所示表5—10GeoMetrics构件定义说明IGeOMe砸cs数据集接口,负责数据集的相关操作。接口IGCOMetncslterator数据集迭代接口,负责数据集的迭代操作。EnumGCOMetriCSVC通过枚举方式将连接节点相关的空间属性导出。EnLIlllGCOMetriCSVI通过枚举方式将孤立节点相关的空间属性导出。函数EnumGeoMetricsS(32D通过枚举方式将边的相关空间属性导出。EnumGeoMetricsS(33D通过枚举方式将水深点的相关空闻属性导出。(3)物标层物标是海图数据的最小组织单元,也是海图显示时具体的操作对象,以特征物标为主要信息源。a)GeoObject构件GeoObject构件包含了物标的所有信息,以及物标属性间的一些基本操作。具体的接口与函数如表5-11所示:表5‘11Ge00bjoct构件I定义说明IGeoObject数据集接口.负责数据集的相关操作。接口IGeoOhjetlterator数据集迭代接口,负责数据集的迭代操作。EnurnAttributes得到属性枚举接口IEnumGeoAttribute。EnumRelations得到相关物标枚举接口IE,enurnGeoAttributeRelations。函数EnumSlaves得到子物标的枚举器。EnutrtGeoMctrics得到物标空间信息接口IEnumGeoMetricsb1GeoObjectRelations构件GeoObjectRelations构件完成的是相关物标的枚举操作,包括物标的主从关系和同级关系。具体的接口与函数如表5.12所示:表5-12GeoObjectReIatiON8构件l定义说明l接口IEnurnGeoObjectR.elations相关物标接口,进行相关物标的枚举操作。I函数Next读取下一个相关物标。 fSkip跳过指定的相芙物标Reset将枚举器重置。Clone创建并返回当前状态下的枚举器的拷贝。c)GeoAttribute构件GeoAttribute构件保存了物标的S一57属性值,通过该类能够获得对于物标的属性值。具体的接口与函数图如表5.13所示:表5-13GeoAttribute构件定义说明IGeoAttribute物标属性接口,负责物标属性的相关操作。接口IEnumGeoAttribute属性枚举接口,进行物标属性的枚举操作。Type返回属性的类型。ClassCode得到属性类的代码。函数GetValue得到属性值。GetVjlueSize得到属性值的大小。5.3.6GeoPresentation构件GeoPresentation构件是实现海图显示功能的构件。显示功能符合S一52关于显示的标准,能够将海图完整显示与符号化。构件中实现的功能有:定义$52的颜色表,条件符号化,符号库的存储与操作,分层显示,区域填充,图形裁剪与拼接等。根据COM的聚合模型,将GeoPresentation构件划分为4个构件:GeoPresentation构件,GeoSymbolization构件,GeoDraw构件和ColorMap构件。其中,GeoPresentation构件是父构件,聚合了其他三个构件。图5.7表示的是GeoPresentation构件的接口实现图,列举了4个构件的相互关系以及各个构件实现的接口之间的关系。 IGeoDraw图5—7GeoPresentatiOn构件的接口实现图(1)OcoPrcscntation构件GcoPrcscntation构件是海图显示的基础构件,提供了创建表示库其他构件的方法。具体的接口与函数图如表5.14所示:表5—14GeoPresentation构件定义说明接口IGeoPresentation表示库接口,负责表示库的相关操作。CrcateGeODraw创建GeoDraw对象,用米实现显示列表。函数CreateSymbolization创建GeoSymbolization对象,来进行符号化操作。EnumSymbolizations通过给定标识符,枚举所有存在的符号。(2)GeoSymbolization构件GeoSymbolization构件是海图显示的核心构件,它提供了诸多资源和各种方法来符号化地理物标,并且在相对应的表示库模型中绘制出物标。根据S.52的要求对符号库进行设计,对于符号库的存储结构和操作算法进行标准化的实现。在显示的算法方面也是根据S一52的标准进行设计。具体的接口与函数如表5.15所示: 表5-15GeoSymbolizat;011构件定义说明接口IGeoSymbolization符号化接口,负责符号化的操作。Dmw标绘一个物标。DrawDataSet将指定数据集进行标绘。函数DmwS'cmbol标绘一个符合。GetVisibleObjcot列举在“可视”区域内所有物标。G-etVtsibleObjectExt列举数据集中所有被显示的物标。(31GeoDraw构件GeoDraw构件提供了功能性的操作来将制图物标保存到显示列表中,并根据各自的优先级绘制在电子海图系统中。使用该构件的优点有:●制图物标能够根据更多的要求来绘制(一个地理物标可以由不同优先级下的多个制图物标来产生)。·由多个交换集产生的制图物标,能够以合适的优先级,结合在同一个显示列表中。●在显示之前,显示列表中的制图物标的表示可以得到优化。●不需要通过查询来返回地理物标的索引值。具体的接口与函数如表5.16所示:表5-16GeoDraw构件定义说明接口IGeODrawGeoDraw接口,负责根据制图物标的优先级绘制物标。AddclippingRegion添加裁剪区域。Clear清除物标。函数Display根据优先级将物标绘制在海图上。ModifyFlags修改控制标志的值。Play绘制所有物标。(4)ColorMap构件ColorMap构件完成的是对颜色表的一系列操作,具体的接口与函数如表5—17所示: 表5-17CoIorMap构件定义说明接口IColorMapColorMap接口,负责对颜色表的操作。GetColorMap得到颜色表。SetColorMap设置颜色表。GetNumberOfColors得到指定符号资源的颜色数目。函数GetNumberOfPalattes得到指定符号资源的调色板数目。GetColors得到颜色的RGB的值。SetColor保存符号的新的RGB的值。5.4SDK系统的实现与性能分析5.4.1SDK系统的实现SDK系统的实现建立在基础构件的基础之上。通过基础构件提供的接口来进行海图数据的传输、符号化等相关操作。SDK系统的界面如图5.8所示。完成的功能有:●海图数据的选择。在海图目录中的列出当前可选择的海图。通过S.57数据导入功能还可以将S.57数据文件导入到海图目录中。●海图显示与相关操作。包括海图的漫游、放大、缩小、旋转等操作。·海图分类显示。包括基本显示、标准显示、全部显示和自定义显示。·背景色控制。包括晴朗白昼、白昼.白背景、白昼.黑背景、黄昏、夜晚.使用滤光镜、夜晚一不使用滤光镜六种情况。·信息查询。在左侧的窗口显示所选择的海图物标信息。·经纬度与比例尺的显示。状态栏显示当前鼠标点的经纬度与比例尺。 5.4.2性能分析图5-8SDK系统界面将功能相同的SDK系统与传统电子海图系统通过计算机进行系统测试,得到的测试结果如表5.18所示。测试环境如下:●计算机硬件:Celeronl.7GCPU,256MDDR内存,NVIDIAGeForce264M显卡,美格17英寸显示器。●操作系统:Windows2000Professional。●开发环境:VisualC++6.0(简称VC,下同)表5-188DK与传统电子海图系统测试结果SDK系统传统电子海图系统内存消耗(KB)89768128显示时间(秒)1.1631.155载入数据集时间(秒)0.0730.062编泽时间(秒)18152系统集成源代码量(KB)77.2914类数目(个)1037 测试结果表明:(1)两个系统在显示效果上差别很微小。在载入数据集时间与显示时fBj上(3)相差无几,而且都满足S。52的要求(刷新航路监视期间所跟踪的船舶进程,包括由于海图信息的范围改变而引起的比例尺的改变,所需时间小于5秒⋯):SDK在系统集成的源代码量上要远远小于传统电子海图系统。代码量的减少能够减轻开发人员的工作负担,使得系统更易于集成与管理。SDK系统在类数目上也要小于传统电子海图系统。类是系统模块的实现形式。类数目的减少使得系统模块间的关系简化,更易于模块的管理。从开发效率的角度,SDK系统优于传统电子海图系统。SDK使用了较少的类与代码量就能够实现一个应用系统。在系统编译时间上,SDK系统所需的时间不足传统电子海图系统的八分之一,这大大节省了开发人员的时间。从通用性的角度来看,本文所实现的SDK系统与传统的电子海图系统都是采用VC来进行开发的。由于COM已经作为Windows系统的标准,对于其他的开发环境(如VisualBasic、Delphi、BorlandC++)都可以通过COM技术调用基础构件来进行应用系统的开发。而传统的电子海图系统只能在相同的开发环境下进行应用系统的开发,对开发人员有很大的限制。 第6章总结与展望在计算机软件、网络、图形图像等相关技术不断发展的基础之上,传统电子海图系统在诸多方面存在着问题:1)系统的管理。系统的源代码数量庞大,非常不易于管理;各功能模块关系复杂,不利于系统的升级。2)系统整合与调试。由于功能模块是基于源代码级别的,各个功能模块存在着千丝万缕的联系,给整合过程带来了很大的工作量。在调试过程中,出现的问题需要跟踪到源代码中,大大加重了开发人员的工作负担。3)系统的维护。系统出错时,需要跟踪到系统的源代码中找问题,由于系统的关系复杂,使得发现问题的难度很大。4)扩展性。由于开发技术的受限,无法与外部系统(GIS、MIS等)进行互操作。软件构件技术的出现,能够很好的克服传统电子海图的诸多缺点。本文『F是在构件技术的基础上,对电子海图系统的基础开发平台SDK从数据模型、数据传输和海图显示等方面进行了深入的研究,并在S一57与S一52国际标准基础之上对SDK进行构件化的设计。对WebChart本文也进行了深入的研究。在SDK的基础构件之上,结合分靠式COM技术,设计出基于网络环境的WebChart构件库。在系统的实现上,完成了构件化电子海图系统的6大基础构件:GeoBase构件、GeoAdministrator构件、GeoProje圮tion构件、MapViewPort构件、GeoExchangeSet构件和GeoPresentation构件。在其基础上,初步完成了SDK系统的丌发。通过对相同功能的SDK系统与传统电子海图系统的比较,可以证实在系统集成源代码量、摸块管理、开发效率、通用性方面,构件化的开发能够克服传统丌发存在的诸多问题。在数据模型中,根据S.57元数据的特点,建立三层模型结构,并分为8个类来实现交换集、数据集与物标的相关操作。数据传输的过程是通过包容器与枚举器来实现。包容器是数据存储的容器, 所有的海图数据存放在包容器之中,以待读取和保存。枚举器是数据传输的方式,通过枚举器中内置的优化传输的方法,保证数据传输的准确与高效。在网络环境下,通过RPC来实现远程数据的传输。海图的显示采用标准的表示库来实现海图的配色、填充与符号化。在WebChart中的海图显示,采用的是ActiveX控件方式来进行客户端的显示。由于作者的水平有限,在相对紧张的时间中,虽然作者进行了大量细致的工作,但是对于整个的电子海图系统的设计与实现,从设计方法的理解与运用还是难免存在漏洞。系统还有许多急待进一步完善与补充的工作:1)SDK平台中没有考虑数据更新与改正功能2)ActiveX控件的数据传输速度与效率的改进。3)WebChart构件库的管理与优化。构件化电子海图系统的开发尚处于探索与尝试阶段,论文的不妥之处,恳请各位专家和同行予以指正。 攻读学位期间发表的论文[1】魏源,赵德鹏,王德强,基于标准建模语言的分布式电子海图系统构件库研究,大连海事大学学报,2003年11月,第4期,P21一P24 致谢终于完成了这篇论文,回头再回忆研究生阶段的学习与生活,真是思绪力I千。三年的求学过程之中受到了我的导师赵德鹏教授的谆谆教诲,使我终生受益。赵老师以其渊博的学识、严谨的治学态度以及作为学术带头人的远见卓识,将使我在以后的工作与学习受益匪浅。在本论文的选题及完成上赵老师也给予了作者悉心的指导与无私的帮助。衷心感谢王德强教授在论文的选题以及论文的整个撰写过程中所给予的指导和帮助。感谢航科所杨晓波、李源惠和赵丽宁等老师在本论文撰写和审核中给予的帮助和支持。感谢王惠娣老师在生活上给予作者的关心与帮助。感谢实验室的师兄、师姐、师弟们的关心和支持。感谢王晓俊在学习和生活上给予的关心与支持。最后,感谢所有曾给予我帮助的人们! 参考文献朱世立,李宏利等译,IHO电子海图及其应用系统国际规范和标准(S.52篇),第1版,1997年,中国船舶工业总公司船舶系统工程部周程熹,赵德鹏等译,IHO数字海道测量数据传输标准(S.57篇),1999年,大连海事大学出版社杨芙清,梅宏,李克勤,软件复用与软件构件技术,电子科技,1999年,第2期,P68~P75徐爱萍,徐武平,组件技术与ComGIS,测绘信息与工程,2001年第2期,P32廿34花文健,李建华,UML系统分析方法,空军工程大学学报(自然科学版),2002年,第3期,P51~P52承继成,李琦,易善桢,国家空间信息基础设施与数字地球,1999年,清华大学出版社BRENTRECTOR,CHRISSELLS著,潘爱民,新语译.深入解析ATL,2001年,中国电力出版社潘爱民,COM原理与应用,2002年,清华大学出版社路辉,基于组件对象模型技术的电子海图应用系统的设计,哈尔滨工程大学,硕士论文,2002年,P72~P76张建奋,基于构件的GIS软件开发研究,浙江大学,硕士论文,2002年,P25C.Szyperski.ComponentSoftware—BeyondOOProgramming,Addison—Wesley,1997KeithShort,ComponentBasedDevelopmentandObjectModeling,SterlingSoftware,1997SupermovaSoftwareInc,Component—basedDevelopmentandIntegrationofLegacySystemsRealityToday,July2000WillsandD’Souza,gorousComponent—BasedDevelopment,BuildingSystemsⅢ吲㈣吲嘲即嘲网呻m [15][16】[17][18]【19][20】[21j[22】【23][24】[25】[26】[27][28]WithComponent,1997GradyBooch等,邵维忠等译,UML用户指南,2001年,机械工业出版社lvarJacobson,GradyBooth,JamesRumbau曲,统一软件开发过程,2002年,机械工业出版社CEN/TC287Metadata,TheGeographicInformationDraftEuropeanPrestandard,http:Hforum.afnor,fr/afnor/WORK/AFNOR,GPNZl3C伊BULICISO/TC211MetadataWorkingDocument:GeographicInformation,http://www.fgde.gov/metadata/metaworkbook.html。2000FGDC,ContentStandardforDigitalGeospatialMetadataWorkbook(Version2.O、,2000谭晓智,符合国际标准的电子海图基础平台的设计与实现,大连海事大学硕士论文,2003DavidJ.Kruglinski著,潘爱民,王维印译,Visualc++技术内幕(第四版),2001年,清华大学出版社孙少鹏,李源惠,赵德鹏,组件技术在电子海图系统中的应用,大连海事大学学报,2002年第1期,P38~P41胡勤友,标准化电子海图数据库若干问题的研究,上海海运学院学报,1999年,第3期,P78一P84王安国,吴炳占,ECDIS的现状及其发展趋势,航海技术,1999年第3期,P29-P31中华人民共和国国家军用标准GJB2680.96军用数字海图要素属性编码规则,国防科工委军标出版发行部,1997年中华人民共和国国家标准GBl5702.1995电子海图技术规范,1996年,中国标准出版社杨斌,田永青,朱仲英,基于UML的面向对象的软件系统分析、设计与开发技术,微型电脑应用,2002年第8期,P5~P8李思广,林子禹,胡峰,潘小劲,基于UML的软件过程建模方法研究,计算机工程与应用,2003年第6期,P76~P78 姚敏,张柏,张树清,基于构件的地理信息系统应用软件开发模型研究,测绘工程,2001年第1期,P41一P45曹建福,周理琴,基于构件的软件开发模型及其实现,小型微型计算机系统,2002年第6期,P739~P742陆军,张育平,基于构件的软件体系结构实现技术,计算机工程与应用,2002年第4期,P115-P117文艺,袁道华,李晓娟,杨丽丽,陈蓉,面向对象的构件化软件开发,计算机应用研究,2002年第8期,P40~P42罗英伟,汪小林,许卓群,分布式WebCIS构件化研究,计算机辅助设计与图形学学报,2002年第8期,P790~P795边馥苓,朱国宾,网络CIS及其实现方式,测绘工程,1998年第4期,PI-P6蒋景瞳,刘若梅,贾云鹏,国际元数据标准的发展和研究现状,http://www.sdinfonet.cn/ngcc/sdinfo/ProdtectedDoc/mtlmtm,2001严蔚敏,吴伟民编著,数据结构(c语言版),1997年,第1版,清华大学出版社DonaldHeam,M.PaulineBaker著,蔡士杰等译,计算机图形学,1998年,第1版,电子工业出版社蔡自兴,徐光佑著,人工智能及其应用,1996年5月第二版,清华大学出版社【39]DoxBox著,潘爱民译,COM本质拉,2001年,第一版,中国电力出版社[‘0】熊伟,钟毅芳,CClVl技术中包容与聚合的实现,计算机应用,2003年第1期,P63~P65[41]秦震,张秉权,基于ActiveX控件技术的文件读取与应用,兵工自动化,2003年第l期,P49~P51[42]IntemationalStand盯dISO8211,Informationprocessing-Spccincationforadatadescriptivefileforinformationinterchange.Firstedition--1985—12-15,UEC681304现Ⅻ川跚划蚓吲蚓明蚓[【[;【[

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭