基于COM封装的GIS应用系统研究

2011-06-06 07:18
河北软件职业技术学院学报 2011年4期
关键词:组件功能分析

许 静

(中国电子科技集团公司 第五十四研究所,石家庄 050081)

随着社会信息化程度的迅速发展,加速了地理信息系统(Geograhpic Information System,简称GIS)应用的进程,使其在城市规划管理、交通运输、测绘、环保、农业、制图等领域发挥了重要作用,取得了良好的经济效益和社会效益。当今的GIS已经深入渗透到人们日常生活的各个层面,成为现代信息化进程中不可或缺的应用系统之一。

由于传统的GIS软件开发具有开发负担重、集成困难、专业水平要求高等缺点,迫切需要一种新型的GIS软件技术体系,以满足日益增长的GIS应用需求,并跟上软件技术发展的潮流。COM技术不仅解决了开发者在运用GIS时门槛过高的问题,而且还具有语言无关性、进程透明性、可重用性等优点,使得应用在这种开发方式下可做到对局部进行更新,保持其它功能不变,从而达到对整个系统进行升级的效果。

1 GIS应用特点

地理信息系统的发展,促进了其在交通运输、环保、农业、军事等领域的研究和开发。GIS应用系统是在计算机硬件支持下,运用系统工程和信息科学的理论和方法,综合地、动态地获取、存储、管理和分析地理环境信息,并服务于决策支持和各种空间信息系统。

通用的地理信息系统应用主要包括以下六个方面:

(1)多媒体地理数据准备和预处理;

(2)多媒体地理数据库管理;

(3)分析应用支持工具;

(4)地理信息查询与空间分析;

(5)决策支持;

(6)地图制图输出。

在这些通用功能支持下,经过进一步延伸并结合各领域的专业技术,就形成了形式多样的GIS应用系统。

2 组件技术运用分析

组件式软件技术已经成为当今软件技术的潮流之一。基于组件开发(Component-Based Development,简称CBD)是软件开发的一次革命。与诸如面向对象和客户/服务器(Client/Server)等新趋势不同,基于组件开发不只是一种分布计算的新形式,而是一种广泛的体系结构,支持包括设计、开发和部署在内的整个生命周期。

开发人员可以根据自己的需要从对象库中选取系统所需要的功能加以实现,把这些组件快速地组装到一起,不仅大大简化了开发过程,而且极大地缩短了系统的开发周期,并且随时可以根据实际需要进行灵活方便的系统定制与升级。

基于COM/DCOM标准,Microsoft推出了 ActiveX技术,ActiveX控件是当今可视化程序设计中应用最为广泛的标准组件。然而只使用ActiveX控件不能完成复杂数据结构的传递,GIS与应用系统中的各种数据传递则是通过活动模版库(ActiveX Template Library,简称ATL)来实现。活动模版库是一套C++模版库,为COM/ActiveX的开发与应用提供了一个良好的集成开发环境。通过将ActiveX和ATL相结合的技术手段,不仅可完成复杂的功能调用,而且还促进了外部使用者与显示信息的沟通交流,极大地方便了开发者的开发,使开发者能够把注意力集中在与应用本身相关的问题上。

3 系统的总体功能与结构设计

GIS应用系统多是利用它的开发函数库二次开发出用户的专用系统,本文所讨论的正是在传统GIS功能的基础上,附加业务信息及图形动态标绘的专用GIS系统。此类系统的开发虽有组件式GIS的支持,但存在与业务贴近程度低、学习成本高、开发周期长等弊病。因此,下面就从这类系统的特点及需求入手,分析和设计出一套切实可行的技术方案。

3.1 系统需求分析

为适应现代信息时代的节奏,完整、全面、准确、及时地反映用户所需信息,在系统建设的过程中需要充分考虑如下几个问题:

(1)实时性:指能及时将获得的各种情况(例如:各种传感器的实时情况)显示给使用者;

(2)正确性:能够正确地获得并展示各种相关信息(例如:设备、人员位置);

(3)全面性:能展现各种关键信息的动态(例如:设备、传感器、人员的动向),并能够通过图形化的方式完整表达;

(4)一致性:对各种应用采用统一的表达方式;

(5)灵活性:能在尽量多的开发平台上使用,且具有较好的扩充性。

为完成上述要求需要从系统功能和性能两个方面进行分析。

首先,从功能方面要求:

(1)提供合成数字地图,能够对各种地图数据进行管理维护,特别是对应用影响较大的地理环境信息以及其他综合信息进行管理维护;

(2)现场景观显示,包括在选定的地幅范围内显示背景地图,进行通视、坡度等空间分析及空间查询,使使用者能充分考虑设备对环境的适应性,以及物资保障和技术保障等一系列问题;

(3)能够精确地定位地理环境信息、目标、设施、人员的位置,显示运动目标及其轨迹;能控制各种信息分层、分类的显示,并全面展示基于数字地图或图像的态势;

(4)在标号系统支持的人工交互方式下,标绘各种形式的态势图,为使用者进行决策提供支持;

(5)提供使用者所必需的各类综合信息。

其次,在性能方面则要求:

(1)运行速度快,这对后续的快速决策有着重要的意义;

(2)系统效率高、标注明确,这是系统实际应用的必然要求;

(3)要有良好的体系结构,使之具有较好的扩充性。

3.2 系统功能组成

根据上述分析,应用系统是建立在GIS和业务符号系统支持之上的。对GIS和符号系统的统一封装将更有利于系统的实现。

GIS是系统的基础支撑,其功能广泛,为了更好的实现应用系统图形表达中的功能,这里将GIS的制图、地图数据输入/输出、数据更新与管理部分的功能作为GIS独立的支持环境,而将与应用系统密切相关的地图显示与控制、空间查询与分析等部分进行了集成和封装。

业务符号系统是在GIS的基础上完成业务数据的表达,与背景地图一起形成动态态势图。符号系统中的符号制作与管理应在系统使用前完成。

由此,应用封装的主要功能组成如图1所示。

地图显示与控制是在GIS的支持下实现的,根据用户的要求显示矢量、像素以及影像地图,并可以对显示的地图进行缩放、漫游、旋转、多种类地图叠加、图层控制等显示控制操作。

地理信息查询与分析可以进行属性、空间条件查询,并能对查询结果进行统计;通过各种几何形状选取地物,进行距离、面积、方位角、挖方/填方和高程的量算以及通视分析、坡度分析、坡向分析、剖面分析等。此外,还可以基于线拓扑关系完成最优路径分析、最大服务范围分析、临近目标查找分析以及栅格图的绘制等。

态势图应用与管理通过自动或人机交互的方式制作各种态势图,对制作完成的态势图以及其中的标号进行管理,可以分层、叠加显示,并对其中的内容进行修改、删除;此外该模块还支持态势图的打印输出。

符号标绘则能够通过人工或自动两种方式编辑点标号、线面标号、标签和注记,编辑的方式包括:增加、删除、修改。在背景地图上进行符号编辑后的图形内容可以直接保存成态势图。

消息响应控制是与上层进行通信的接口,将本系统进行的各种动作通知给使用者。

3.3 系统架构设计

图1 GIS应用系统功能组成

系统架构设计的依据是系统需求分析的结果。根据不同使用对象的一致性、灵活性要求,经过充分的研究,这里采用了层次式软件体系结构。

层次式软件体系结构是把大型软件系统按照功能的扩展性,分成若干层,其结构框架如图2所示。

图2 软件的层次式结构

最内层为“内核”,完成最为基本的公用操作,向外各层逐渐进行功能扩展,满足用户不同系统规模的需求。

GIS应用系统的分层式体系结构如图3所示。

数据层完成地图数据和业务数据的存储、管理和更新。其管理的地图数据不仅包括地图空间位置信息,还包括地理要素属性信息及其关联关系信息,此外,还存储有数字地面模型等用于地形分析的数据。业务数据是与应用业务相关的数据。

服务层分为两个部分:基础服务层和业务服务层。基础服务层负责数据维护、访问以及通信服务,其中的数据访问控制主要是负责支持业务服务访问数据库。业务服务层是GIS应用系统的核心层,是所有的业务逻辑封装,实现分析、处理和表达等业务功能。其主体内容有:地图显示与控制、地理信息查询与地形分析、符号标绘与处理、态势图管理与应用四个部分。

图3 GIS应用系统的分层式体系结构

表示层:是系统的UI部分,负责使用者与整个系统的交互,通过界面来实现对用户所需功能的使用。在这一层中,通过消息、事件、API接口等方式与服务层进行信息通信与交互。

上述分层式体系结构具有如下优点:

(1)开发人员可以只关注整个结构中的某一层;

(2)可以很容易地用新的实现来替换原有层次的实现;

(3)可以降低层与层之间的依赖;

(4)有利于标准化;

(5)有利于各层逻辑的复用。

由此可见,采用分层式体系结构能够达到分散关注、松散耦合、逻辑复用、标准定义的目的,从而增强了系统的灵活性,提高了开发效率。

4 软件设计与实现

经过细致的需求分析和系统体系结构设计,下一步就可以展开软件的设计与实现。为了达到重用性和互用性的要求,这里采用了微软的ActiveX和ATL相结合的方式,ActiveX负责主体功能的实现和事件响应控制,ATL则完成大量数据结构的传递。最终使该组件可在VC++、C#等多种面向对象的开发语言中使用。

4.1 接口与对象模型设计实现

GIS应用系统的功能通过COM封装后,对外通过接口的方式提供其功能。接口设计遵循组件接口设计原则,GIS应用组件向外界开放六类接口:

通用命令接口:通过命令编码的方式对外开放了常用的集成功能,如地图背景设置、标绘面板显示等;

地图显示与操作:通过API方式实现了包括选图调阅、地图显示控制和地图图层控制等;

地理信息查询与分析:包括基本几何计算、坐标转换、地形分析等功能的接口调用;

态势图显示控制:完成建立态势图层、保存态势图等功能;

目标显示控制:点、线面、代字和标签等多种类型的符号显示和增、删、改等功能以及动目标的管理;

鼠标事件消息:包括鼠标左右键的各种状态变化的消息。

上层应用通过API调用完成所需功能并获取所需信息,通过鼠标事件消息控制操作状态。其模式如图4所示。

图4 GIS应用的使用模式

GIS应用组件的主要内部对象如图5所示。

4.2 接口与对象模型设计实现

在本组件的开发过程中,由于频繁的绘制调整符号,造成CPU大量的时间及内存耗费在绘图区频繁刷新上,为提高效率就必须压缩绘制与刷新的频度与范围。

图5 GIS应用的对象设计

经过分析发现绘图区所需绘制的内容包括地图背景绘制、静目标绘制和动目标绘制几个部分。由于动目标有着位置频繁变化的特点,若采用实时刷新显示,则造成系统负荷过重。因此在对动目标绘制时,采用了定时刷新的技术,但还是不能解决绘图区大范围绘制造成的CPU资源紧张。在绘图空间内,地图和静目标变化均比较慢,可为其单独创建内存绘图空间,将地图和静目标保存在临时内存绘图空间,在地图和静目标不变时,直接将其作为动目标的背景进行显示,即采用了空间换时间的策略,创建内存并拷贝内存空间的代码如下:

经过上述方式进行优化后,本组件占用CPU的时间比率下降了60%,取得了较好的使用效果。

5 结束语

基于GIS的图形应用的COM封装,运用层次化体系结构和组件概念完成了一个通用图形表达组件。实践证明,该组件降低了GIS应用系统开发的门槛,不仅加快了开发进度,且能够支持VC++、C#等多种开发语言及平台使用,同时在软件的灵活升级等方面也起到了积极作用。作为运用COM和GIS结合的一个全新的GIS软件技术体系的具体实践,将很快应用于各行各业,成为GIS软件发展的主要方向之一。

[1]宋关福,钟耳顺.组件式地理信息系统研究与开发[J].中国图形图像学报,1998(3):313-316.

[2]李航,祁强,刘鑫.Dot NET框架下Com与ComGIS的发展对 GIS软件组织方式的影响[J].软件导刊,2008,7(1):56-57.

[3]刘润动.UML对象设计与编程[M].北京:北京希望电子出版社,2001.

[4]王家耀.军事地理信息系统(MGIS)在现代化战争中的作用及其发展[J].信息工程大学学报,2000(4).

[5]刘光.地理信息系统二次开发教程——组件篇[M].北京:清华大学出版社,2003.

[6]陈述彭.地理信息系统导论[M].北京:科学出版社,2000.

[7]邬伦,刘瑜,张晶,马修军,韦中亚,田原.地理信息系统——原理、方法和应用[M].北京:科学出版社,2001.

[8]孙家广等.计算机图形学(第三版)[M].北京:清华大学出版社,1998.

[9]潘爱民.COM原理与应用[M].北京:清华大学出版社,2006.

[10]杨宏鹏,王阿川,王妍玮.GIS二次开发方法与实现[J].信息技术,2008(8):65-67.

猜你喜欢
组件功能分析
也谈诗的“功能”
无人机智能巡检在光伏电站组件诊断中的应用
隐蔽失效适航要求符合性验证分析
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
电力系统不平衡分析
关于非首都功能疏解的几点思考
电力系统及其自动化发展趋势分析
风起新一代光伏组件膜层:SSG纳米自清洁膜层
中西医结合治疗甲状腺功能亢进症31例