资源描述
基于Java技术的WebGIS框架研究
齐剑玲,阚虎
(中国地质大学 北京 100083)
摘要: 本文力图把当前软件开发技术和Java技术领域中逐渐成熟的设计模式和方法,引入到WebGIS基础开发框架的设计中,以提高框架的可设计性和简化应用开发;表现层中引入MVC模式,数据访问层使用对象-关系映射技术,逻辑层提供有关空间操作的Java APIs(Java Application Programming Interface).以此作为框架的基本组成单元.基于Java平台对这个框架的原型进行了实现。以期能为WebGIS框架设计提供一个有意义的参考实现。
关键词: Java、万维网地理信息系统、框架、设计模式、模型-视图-控制、对象-关系映射
Java-based WebGIS Framework Research
QI Jian Ling , WANG Shu Min , KAN Hu
(China University of Geosciences, Beijing 100083.China)
Abstract: In this paper, for enhancing the design capacity and simplifying the application development, we try to design preliminary a development framework for WebGIS by import the new successful fruits in software development techniques and Java tech domain. Importing the MVC design patterns into presentation layer, using Object/Relation Mapping in the data-accessing layer, and providing elementary Java APIs relevant spatial operations, are the basic composing units of the framework. Finally, we design and implement the framework prototype, which is totally based on java. We hope to have referenced value, in some extent, to the WebGIS framework design.
Keywords: Java, WebGIS, design pattern, framework, MVC, O/R Mapping
随着软件行业的发展逐步趋于理性和成熟,近些年来软件工程领域重新获得人们的重视,其两个主要方面——软件项目管理和软件开发技术,都获得了长足的发展。在软件开发技术方面,新的设计技术和方法不断涌现,并在向许多应用领域推广。同时人们也越来越认识到,为一类应用系统设计一个良好的框架,是增强应用系统的可设计性、可重用性和可维护性,降低总体成本的重要基础和前提。
l GIS作为一种空间信息处理技术也逐步融入IT的主流,在社会和经济信息化进程中发挥着愈来愈重要的作用。WebGIS作为GIS在Internet上的拓展,是当前GIS行业重要的发展方向。
l Java作为一种设计良好的语言,据说是目前代码重用率最高的一个平台。在Web应用上,Java是当前服务器端主流开发平台,具有多种成功的开发技术,Servlet是其中的代表。Java所用的类库是完全面向对象的实现,设计优雅、源码开放,使得Java成为很多模式和方法的首选实现平台,也是框架设计的理想选择。
l虽然作为Web应用的一种,WebGIS系统的构建也遵循着一些基本的规律,如:通常使用典型的三层体系结构,但也有自身的一些显著的需求特点,如:空间数据的模型复杂性,大数据量及其交互表达等问题。目前不少商业公司、机构和组织都提出了自己的WebGIS框架和组件产品,如:ESRI公司的ArcIMS、明尼苏达州大学的UMN MapServer、MapInfo公司的MapXtreme、Intergraph公司的GeoMedia WebMap、AutoDesk公司的MapGuide等,这些产品在实际运用中也都取得了不错的效果。其中的框架产品以ArcIMS和UMN MapServer为代表,但从设计的角度来看,都存在一定的局限和不足。表现层没有直接引入相关设计模式,使得设计开发困难重重或者受限过多;数据访问层的设计还无法完全脱离关系模型,不仅使得数据模型的表达无法使用对象的概念来扩展,也使得在整个系统设计中难以完全实施面向对象技术。l
1 交互系统设计模式的阐述与讨论
在面向对象的编程中,软件编程人员更加注重代码的重用性和可维护性。面向对象是使用离散的对象来构建软件系统;设计模式利用了对象的继承、组合和代理(delegation),在较OOP高的层次上考虑问题。尤其是使用代理来对任何不稳定或不确定的方面,如:状态、对象的创建、应用平台等等,进行封装,从而保证了源代码的重用和设计的稳定。实际上可以理解成为是OOP中虚函数、多态概念的延伸。即OOP中的虚函数和多态实现的是方法、对象行为上的多态,而设计模式的则对创建、结构和高层次的行为进行了多态。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
1.1 表现层设计模式
交互式系统设计的主要挑战是保持功能内核独立于用户接口。内核基于系统功能需求,通常保持稳定。而用户接口常常要经受变化和改建。例如,系统可能必须支持不同的用户接口标准。这就需要能支持用户接口改建而对特定应用程序或底层软件的数据模型不产生重要影响的体系结构。
关于交互式系统的设计,较有代表性的模式有两种:
表示-抽象-控制(Presentation-Abstraction-Control, PAC)
模型-视图-控制器(Model-View-Controller, MVC)
(1) PAC模式
PAC模式以合作agent的层次形式定义了交互式软件系统的一种结构,每个agent负责应用程序功能的某一特定方面,并且由表示、抽象和控制三个组件构成。这种细分将agent的人机交互部分与其功能内核和它与其他agent的通信分隔开来。
交互式系统经常被视为一个协作的agent的集合。人机交互中描述的agent接受用户的输入并显示数据。其他的agent维护系统的数据模型并提供对这些数据进行操作的功能。附加的agent负责诸如错误处理或同其他系统软件系统的通信的任务。除了系统功能的横向分解外,我们常常还做纵向分解。例如,产品规划系统( Producing Planning System, PPS),不同于产品规划和以前的指定产品计划的执行。可以为这个任务定义一个独立的agent。
以PAC agent树状层次结构构建交互式应用程序。应有一个顶层agent,几个中间层agent,较多的底层agent。每个agent都负责应用功能的某一特定方面,且由表示、抽象和控制等三部分组成。整个层次图反映了agent之间的传递依赖性。每个agent都依赖所有的较上层的agent直至顶层的agent。
PAC的应用没有MVC广泛,但这并不意味着它不值得讨论。作为构建交互式应用程序的一个可供选择的方法,PAC尤其适用于由几个自给系统组成的系统。PAC也用于MVC没有解决的问题,如怎样有效组织功能内核的不同部分与用户接口之间的通信。Joelle.Coutaz最先描述了PAC。PAC的第一个应用是在人工智能领域。
(2) MVC模式
MVC模式把一个交互式应用程序分成三个相互协调的部分:如图1。
Model(模型)模型用于封装系统的状态
View(视图)是模型的表示,提供用户交互界面。当模型状态发生变化时,视图应该得到通知,以便更新视图。
Controller(控制器)接受来自视图的请求,修改模型的状态。
模型
视图
控制器
用户操作
更改状态
更改通知
状态查询
更新视图
事件
对象-关系映射服务
持久化对象
连接池服务
关系型数据库
方法调用
图1 MVC模式图 图2 对象-关系映射实现结构
–MVC是一个比较高层的模式,它由多个更基本的设计模式组合而成,Model-View的关系实际上是Observer模式,模型的状态和视图的显示相互响应,而View-Controller则是由Strategy模式所描述的,View用一个特定的Controller的实例来实现一个特定的响应策略,更换不同的Controller,可以改变View对用户输入的响应。而其它的一些设计模式也很容易组合到这个体系中。比如,通过Composite模式,可以将多个View嵌套组合起来;通过Factory Method模式来指定View的Controller。MVC可以看作是一些模式进行组合之后的结果(实际上,MVC的出现要早于设计模式的提出,这里只是对它在设计模式的基础上进行再分析)。如果没有一些基础,理解MVC或许会有一些困难。
1.2 Java平台的数据访问技术
数据访问技术在很长一段时间里,基本处于停滞状态。面向对象和Java给该领域注入了活力。
在Java平台上目前主要有以下三种技术:
ü JDBC (Java Database Connectivity)
ü EJB-CMP/CMR (Enterprise Java Bean)
ü O/R Mapping (Object/Relation)
l JDBC是一种类似ODBC的数据访问技术,应用系统的设计需遵循传统的关系模式。
l EJB-CMP/CMR 是一种“内存数据库”方式的实现,是一种基于对象的技术,已有面向对象设计的雏形;但Entity Bean的低效率,依赖于容器的实现方式,使得在实际应用中效果并不好。(•CMP:容器管理的持久性(Container-Managed Persistence),CMR:容器管理的关系(Container-Managed Relationships))。
l O/R Mapping(对象/关系映射)
近些年来,随着面向对象技术逐渐深入人心,人们开始考虑用面向对象的思想进行数据库的设计以取代多年以来的E-R模型的方式。面向对象设计基于如耦合、聚合、封装等理论,而关系模型基于数学原理。不同的理论基础导致了不同的优缺点。对象模型侧重于使用包含数据和行为的对象来构建应用程序;关系模型则主要针对于数据的存储。当为访问数据寻找一种合适的方法时,这种不匹配就成为了主要矛盾:使用对象模型,常常通过对象之间的关系来进行访问;而根据关系数学理论,则通过表的连接、行列的复制来实施数据的存取。这种基本的不同使两种机制的结合并不理想。换言之,需要一种映射方法来解决这个矛盾,从而获得成功的设计。图2为一个典型O/R Mapping 技术的实现结构:
2 WGF(Web GIS Framework)原型的设计
WGF原型我们是按照Web应用典型的三层结构来构建,并完全基于Java技术实现的。表现层中引入MVC模式,数据访问层使用对象-关系映射技术,逻辑层提供有关空间操作的Java APIs.以此作为框架的基本组成单元。下面分别说明WGF原型的设计和实现。
2.1 表现层设计
选择原则从两个方面来考虑,一是通常一个WebGIS应用系统,数据量比较大,效率的问题很重要。二是从实现角度出发。
在WGF中,我们对MVC模式做了基本的实现。因为是基于Java平台的实现,考虑了两种需求:Java Application/Applet和JSP/Servlet。在WGF中,第一种情况所对应的Java包是:MVCMini。下面给出这个包的主要类图,如图3所示:
图3 MVCMini的主要类图
其中在MVC模式中“模型改变时更新所有的视图”这一职责,是通过Java的Observable和Observer类来实现的,它们实现了Observer设计模式。每个视图使用MVCModel的addView方法向模型注册它自己。当模型改变时,模型对象使用notifyView向所有已注册的视图发送消息。类MVCController的目的是简化创建菜单项和工具条按钮的控制器的工作。MVCExecutor则是根据Command设计模式的实现。对于B/S开发的支持,WGF使用了开源组织的成功项目Apache Struts。
在表现层明直接提供对MVC模式的开发支持,改善了表现层设计能力不足的问题,从而更好实现交互界面的开发,同时向开发人员直接提供Java类的方式也在一定程度上避免了设计过于受限的问题。
2.2 逻辑层的实现
作为一个完整的框架,有必要在逻辑层提供一些基础空间操作的Java APIs。在设计思想上,这些Java APIs被设计为强调空间操作和分析的功能,应用开发不应只局限于提供地图相关服务,而是以提供空间分析功能的开发为主要方向。这些Java APIs主要封装在包spatools里。在这个框架里,我们做了一个简单的实现。在包spatools里,主要的类派生于从三个根:SimpleLayer、SimpleShader和SimpleTool,其中以SimpleTool为根的类继承树如4图所示:
图 4 SimpleTool类图
2.3 数据访问层设计
对空间数据模型理解的不同,对数据方式的选择有很大的影响。采用高度结构化数据模型的关系数据库难以表达像测绘、地理空间这样的非结构数据,而这些却正是WebGIS中最主要的数据。面向对象的数据库虽然能很好地满足这类数据的存储和管理要求,然而尚未有成熟的产品;关系数据库具有完整的数学理论、成熟的产品和较高的效率。采用对象关系数据库,既能利用成熟的关系数据库的管理功能和可操作性,又能强有力地支持对象和类的概念及数据类型的扩充,自然成为目前WebGIS底层数据库的首选方案。
Java Data Objects(JDO)是Java平台的一项重要创新。JDO框架如图5所示。JDO中独到的核心思想是在尽可能不增加程序员额外工作的情况下提供一个面向Java的数据库存储机制。除了透明存储之外,按JDO方式写的代码具有二进制兼容性,可以跨平台、跨数据库。JDO可以用于对象/关系数据库映射,这种方式中会自动生成JDBC调用来自动地将Java对象和关系数据库中的数据对应起来。另外,JDO对象也可以直接保存到文件中,达到与对象数据库一样的功能和性能。
在WGF里,我们使用了Sun的JDO参考实现。
Java 虚拟机
JDO持久化管理器
JDO
实例
查询
事务
应用程序
Java对象
Java对象
Java对象
JDO持久化管理器器
JDO
实例
JDO
实例
查询
事务
数据存储1
数据存储2
图5 JDO架构
在数据访问层采用对象-关系映射技术的结果是,使得空间数据可以使用对象的概念来扩展表达,避免结构化表达的局限性;同时,数据库的设计可以使用面向对象的方法。
2.4 WGF架构概览
将这三层构建成一个总体是按照典型的三层结构来进行的,如图6所示。
其中,表现层中主要是提供MVC模式的实现支持,分别由包MVCMini提供Java application/applet开发支持,使用Apache Struts提供B/S方式的开发支持。在逻辑层中提供Java APIs,主要的Java包是spatools,以提供空间操作的功能,在数据访问层使用O/R Mapping技术,为空间数据库的面向对象设计提供了支持,在具体实现上使用了Sun公司关于JDO的参考实现产品。
逻辑层
Java APIs for Spatial Operation
数据访问层
Java Data Object RI
Relational Database
表现层
View
Controller
er
Model
图6 WGF架构概览
2.5 WGF运行示例
在WGF上实现了一个小的Java Applet示例 - 美国各州种族分布。
使用的数据为ESRI shape文件格式(包含几何位置信息和属性信息),下面为该shape文件的信息(使用工具为ESRI ArcView):如图7、图8。
图7 使用的ESRI Shape文件的几何位置信息
图8 使用的ESRI Shape文件的属性信息
在这个开发示例中,结合使用了spatools、Sun JDO RI和MVCMini。在这个示例中,可以进行简单的平移和放大的操作。各个州的种族分布有两个视图:分别由饼状图和块状图表示。示例程序运行的主界面如图9所示:
图9 开发示例-美国人种分布
图中所示的是Texas州的种族分布的状况。饼状图显示种族组成状况;块状图中使用色阶的方式显示某个种族的人口密度,上图给出的是白人的在各州的人口密度状况。
在这个示例中,我们使用WGF实现了交互界面的多视图,以及基本的GIS功能。虽然处于原型阶段的WGF框架的功能相当有限,但它表达了我们的努力的方向——表现层设计引入MVC模式支持多视图的开发,空间数据对象化扩展支持。
3 结束语
虽然WGF目前只是一个原型的实现,在可用性上难以和商业化的产品相比,但在框架设计中使用Java技术和引入软件开发技术的设计模式和方法,使得WGF具有以下的潜在优势:
① 表现层具备对MVC模式的开发支持,可以更好实现交互界面的开发。
② 逻辑层提供的Java APIs强调空间操作和分析的功能,使WebGIS的应用开发不只是局限于提供地图服务,可以进行的空间分析功能的开发。
③ 数据访问层使用对象-关系映射的方式,使得空间数据可以使用对象的概念来扩展表达,避免结构化表达的局限性;同时,数据库的设计也可以使用面向对象技术。
④ 框架引入和实现MVC设计模式及对象-关系映射,使得应用程序的开发可以实施完全的面向对象技术。
⑤ 整个框架完全基于Java平台,Java语言本身的优点,平台功能的强大性和基于Java技术的开源项目的蓬勃发展,都使得这个基于Java技术的框架具有很大的扩展性。
⑹ 遥感作为GIS系统数据获取的主要来源,数据处理结果的对象化是其发展方向;在框架中提供数据模型的对象化的支持,也使得遥感数据作为GIS系统的大规模数据的实时更新数据源成为可能。
软件的大规模生产是这个行业的不可逆转的趋势,人们将越来越重视系统的分析和设计。WebGIS是一个很有技术挑战的应用领域,与电子商务的需求有着很大的差别,既要考虑在Internet这样一个复杂环境中的应用问题,又需要考虑到空间数据的存取和管理。新的设计模式和方法还在不断涌现,WebGIS的需求也在不断的提高中,开发人员对现有框架是永远感到无法满意的。不断地了解新的应用需求,理解软件开发新的成功模式和方法,才能不断的改进我们的框架。
参考文献
【1】 阎君.分布式GIS应用服务模型及应用研究.中国科学院遥感研究所博士学位论文,1998
【2】 "WMS and GML based Interoperable Web Mapping System". In proceedings of the 9th ACM International Symposium on Advances in Geographic Information Systems. ACMGIS 2001 (Nov. 2001), ISBN 1-58113-443-6.
【3】 邬伦,张晶,唐大仕,刘瑜. 基于WebGIS的体系结构研究. 地理学与国土研究. 2001年11月,第17卷第4期.
【4】 Paul J.Perrone,et al.著,《Building JavaTM Enterprise Systems with J2EE》,清华大学出版社,2001.6
【5】 宋关福等.WebGIS—基于Internet的地理信息系统.中国图像图形学报,1998,3,25 1~254
【6】 缪海岚,邬群勇,王钦敏. WebGIS理想模型. 福州大学学报(自然科学版), 2001,04期
【7】 康冬舟,周枫. 基于CORBA技术的WebGIS应用模型. 东北测绘, 2001, 03期
【8】 张怀莉,王卫安. 几种Web GIS技术解决方案综述. 东北测绘,2000,03期
齐剑玲:博士研究生,硕士导师。
研究方向:电子技术应用,计算机应用技术,模糊控制,神经网络等。
工作单位:中国地质大学(北京),信息工程学院,电气工程及其自动化教研室。
电 话:010-82321170(H) 13651036554(手机),邮编:100083
E-mail:Qijianling@Mail.C
工控机在工业锅炉温度检测控制系统中的应用
The Application of IPC on Temperature Detecting Control System for Industrial Bolier
中国地质大学(北京)齐剑玲[1]
海淀走读大学 曾玉红[2]
China University of Geosciences(Beijing) Qi,Jianling
Beijing City College Zeng,Yuhong
1. 车间管理子ERP系统的设计与研究
Design and Research of Workshop Managerment ERP Subsystem
基于Java技术的WebGIS框架研究
齐剑玲,阚虎
(中国地质大学,北京 100083)
Java-based WebGIS Framework Research
QI Jian Ling , KAN Hu
(China University of Geosciences, Beijing 100083.China)
齐剑玲:博士研究生,硕士导师。
研究方向:电子技术应用,计算机应用技术,模糊控制,神经网络等。
工作单位:中国地质大学(北京),信息工程学院,电气工程及其自动化教研室。
电 话:010-82321170(H) 13651036554(手机),邮编:100083
E-mail:Qijianling@Mail.C
Qi,Jianling:PhD,Master Instructor
Research Direction:The Application of Electronic Technology,Computer Science & Technology,
Fuzzy Control Technology,Neural Network etc.
Unit:China University of Geosciences(Beijing),Information Engineering College
9
展开阅读全文