《探析基于构件技术的电子海图系统的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
大连海事大学硕士学位论文基于构件技术的电子海图系统的研究姓名:魏源申请学位级别:硕士专业:交通信息工程及控制指导教师:赵德鹏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控件加载代码与指定海图数据的方法。
此文档下载收益归作者所有