基于Java 拓扑模型和RCP 的GIS 平台研究.docx
《基于Java 拓扑模型和RCP 的GIS 平台研究.docx》由会员分享,可在线阅读,更多相关《基于Java 拓扑模型和RCP 的GIS 平台研究.docx(15页珍藏版)》请在冰豆网上搜索。
基于Java拓扑模型和RCP的GIS平台研究
基于Java拓扑模型和RCP的GIS平台研究
高昂1,2,陈荣国1,卫文学2,孙剑1,2,郎玲玲1,3
GAOAng1,2,CHENRong-guo1,WEIWen-xue2,SUNJian1,2,LANGLing-ling1,3
1.中国科学院地理科学与资源研究所资源与环境信息系统国家重点实验室,北京100101
2.山东科技大学信息科学与工程学院,山东青岛266510
3.北京师范大学地理学与遥感科学学院,北京100875
1.LERIS,InstituteofGeographicSciencesandNaturalResourcesResearch,CAS,Beijing100101,China
2.CISE,ShandongUniversityofScienceandTechnology,Qingdao,Shandong266510,China
3.SchoolofGeography,BeijingNormalUniversity,Beijing100875,China
E-mail:
gaoang@
GAOAng,CHENRong-guo,WEIWen-xue,etal.ResearchonJavaGISplatformwithEclipseRCPandJTS
framework.ComputerEngineeringandApplications,2007,43(5):
106-109.
Abstract:
TosolvetheproblemssuchaspoorexpansibilityandlongperioddevelopmentinbuildingGISapplication,abest
practiceofhowtocombineanddeployJTSandEclipseframeworktobuildhighperformanceGeographicInformationSystemhas
beenprovided.ThecombinationofusingJTSandRCPframeworkscouldconstructanextensibleandstandardmulti-platformGIS
desktopapplicationaswellasimprovingthedevelopmentefficiencygreatly.
Keywords:
JTS;GIS;Eclipse;RCP;richclientplatform
摘要:
基于传统地理信息系统开发周期长、拓展不灵活、应用平台单一等问题,给出使用Java拓扑模型与Eclipse富客户端平台
整合开发的实例,同时研究利用Java拓扑模型提供的空间分析算法和空间对象的处理功能,简化系统的复杂程度并且规范化开发
流程,并且通过Eclipse富客户端平台组织和管理各部分组件,快速构建易于拓展的产品,以及如何充分发挥两者优势进行系统开
发,构建结构清晰、具备强大扩展性和稳定性的跨平台地理信息系统。
关键词:
Java拓扑模型;地理信息系统;Eclipse;富客户端平台
文章编号:
1002-8331(2007)05-0106-04文献标识码:
A中图分类号:
TP311.52
基金项目:
国家高技术研究发展计划(863)(theNationalHigh-TechResearchandDevelopmentPlanofChinaunderGrantNo.2004AA132020)。
作者简介:
高昂(1982-),男,硕士研究生,IEEE-CS、CCF学生会员,主要研究方向:
空间数据库、地理信息系统、网格GIS;陈荣国(1963-),男,博
士,研究员,主要研究方向:
地理信息系统、空间数据库;卫文学(1967-),男,博士,副教授,主要研究方向:
计算机网络、软件工程。
106
ComputerEngineeringandApplications计算机工程与应用2007,43(5)
应用之间的互操作,屏蔽信息访问的底层细节,并向程序调用
提供标准接口。
程序通过接口与中间件进行通信,保持客户应
用的相对独立性。
当信息发生变化时,只要在中间件层作相应
的更新即可,应用程序不做任何修改就可以继续应用于新的
系统。
由于Java拓扑模型封装了地理几何基础算法以及空间数
据处理通用操作,同时提供的程序接口层次清晰、结构一致、易
于程序调用及后期维护升级。
作为遵循LGPL开源协议的成熟
模型,可以将JTS作为Java地理信息系统底层支持环境,应用
于产品级软件的开发。
2.2基于Java拓扑模型的拓展
Java拓扑模型提供了基于内存的空间索引,使用JTS模型
可以保证算法的健壮性以及性能优异的计算表现。
同时Java
拓扑模型用作构建其他GIS应用的中间件,在许多开源项目中
得到了充分的利用,代表性较强的是基于JTS模型框架设计的
GeoTools和GeoServer中间件。
建立在Java拓扑模型基础上的Geotools是采用纯Java代
码实现的GIS中间件,代码包中提供大量应用于地理信息处理
的JavaAPI类库,包含了几何属性、要素类、协同参照等内容
的数据模型,数据处理和过虑功能的查询模型,以及符号化、格
网、地理标记语言和XML文件读取的支持功能,架构设计层次
清晰、易于扩展。
使用Geotools提供的各种地理数据处理功能
进行产品开发,可以为软件基础设计提供优秀规范的解决方
案、简化软件的设计与实现过程,并且可以在其基础上充分拓
展已有功能,打造稳定健壮的软件产品。
另一个以Java拓扑模型来提供空间算法底层基础的中间
件是GeoServer,其提供OpenGIS关于Web服务器标准的J2EE
实现。
作为发布地理数据的J2EE服务器,GeoServer包含了对
JavaServlets以及JavaServerPages(JSP)的支持,可以运行在
Tomcat、Resin、JBoss或WebLogic等Servlet或J2EE容器中,
响应客户端发出的地理数据请求,并且可以对访问请求进行并
发控制。
GeoServer工作时,客户端向Web容器发出数据服务
请求,Web容器解析请求后将地理数据的传送要求转发给
GeoServer中间件,GeoServer响应客户端请求,同时把请求转化
成空间数据库能够接受的数据查询格式,向数据库检索相应的
空间数据和属性数据,并把数据传回客户端显示。
整个请求响
应过程由GeoServer中间件和Web容器配合完成,相互协调工
作,完成对地理数据请求的信息反馈。
2.3EclipseRCP富客户端插件体系
Eclipse是Java开源领域中优秀的集成开发框架。
富客户
端平台EclipseRCP(RichClientPlatform)是Eclipse基于OSGi
插件体系的最新拓展,同时也是构建Eclipse软件产品最为
高效可靠的方式。
众多功能强大的插件支持,使得Elipse拥有其他结构相对
固定的IDE开发环境很难具有的灵活性和拓展性。
Eclipse采
用基于Java窗口组件技术的SWT和JFace定制用户界面,较
之传统的AWT和Swing窗口组件更加便捷。
同时基于Java开
发的Eclipse具有跨平台特性,Eclipse可以将Java代码编译运
行在不同的操作系统平台上,并且操作模式不会因为平台转换
而有所不同。
Eclipse平台的各部分组成结构如图1所示:
由图1可以看出,Eclipse平台核心包含运行时库和Eclipse
工作平台,其他的各项功能都作为插件加载到Eclipse体
系当中,遵循统一的OSGi(OpenServicesGatewayInitiative)规
范对Eclipse提供的开放平台进行拓展。
OSGi框架是一个通
用、安全、可管理的Java框架,在轻量级服务架构应用方面被
广泛地支持。
OSGi标准的采用提高了Eclipse向多个硬件和操
作系统的移植能力,并且提供了对管理的执行环境的兼容性。
Eclipse拥有基于插件的可扩展体系结构。
这个平台允许
任何人构建与环境和其它工具无缝集成的工具。
除了轻量级的
运行时内核之外,Eclipse中的所有功能插件都是建立在OSGi
规范基础之上的。
OSGi规范中将插件称为Bundle,Bundle作为
整个插件的生命周期管理对象,负责插件的启动和停止动作,
具体描述工作通过标准的mainfest.mf文件来完成,其内容主要
包括Bundle的名称、版本、对外引用的包、提供的服务、依赖的
插件、动态引用类库等。
其他插件可通过Bundle对象获取插件
的定义信息,在Eclipse平台处理插件信息时,认为插件是一个
Bundle外加上定义插件扩展点的plugin.xml配置文件所组成。
EclipseRCP富客户端框架重构了Eclipse核心包,将IDE
集成开发环境尽可能地从EclipsePlatform包中分离出来,这
样Eclipse就可以作为一个纯粹的不带有IDE特征的应用软件
运行平台,开发者可以将Eclipse提供的GEF、EMF、SWT等应
用于不同领域的资源包加入到符合OSGi规范的插件中,然后
将其导出为Java富客户端软件产品。
3系统组件管理配置与空间信息基本功能实现
3.1Eclipse富客户端平台的插件拓展配置
从非功能性角度来讲,插件结构需要保持不同版本间插件
的一致性,并且要求插件的开发便捷及易管理性强。
插件结构
可以保证系统有一个统一平稳的体系,所有的交互、扩展都通
过插件进行。
同时各个插件部分具有相对独立性,整个系统基
于一种拼装式的松耦合结构组成,每个插件个体对于外部而言
都是一个黑盒,只是通过接口调用来使用黑盒所提供的各种功
能。
在Eclipse富客户端平台中配置插件,需要在功能部件清单
feature.xml部分定义系统的各部分组成模块,具体定义如下:
xmlversion="1.0"encoding="UTF-8"?
>
id="ac.lreis.ustudio"
label="ac.lreis.ustudio-feature"
version="1.1.0"
provider-name="LreisuStudio"
plugin="ac.lreis.ustudio">
id="ac.lreis.ustudio_platform"
高昂,陈荣国,卫文学,等:
基于Java拓扑模型和RCP的GIS平台研究107
2007,43(5)ComputerEngineeringandApplications计算机工程与应用
version="0.0.0"/>
id="ac.lreis.ustudio_application"
version="0.0.0"/>
id="ac.lreis.ustudio_language"
version="0.0.0"
optional="true"/>
id="ac.lreis.ustudio"
download-size="0"
vinstall-size="0"
version="1.1.0"
unpack="false"/>
在功能部件清单文件中,需要指定使用统一的Unicode编
码方式。
系统基础运行插件的名称遵循Java包命名规范定义
为ac.lreis.ustudio,同时定义插件依赖项包含基础平台插件ac.
lreis.ustudio_platform、功能拓展插件ac.lreis.ustudio_application
以及多国语言支持插件ac.lreis.ustudio_language三个部分,其
中通过optional选项设定多国语言支持插件为可选组件。
针对各个插件部分,在插件配置文件plugin.xml中定义相
对应的拓展信息和拓展点标记。
标准的plugin.xml插件内容定
义包含插件名、ID号、版本号等信息,以及插件的依赖关系、插
件的运行支持库和插件各部分扩展点标记。
由于遵循OSGi插
件体系,插件基本信息和依赖关系在专门的配置文件
MENIFEST.MF中定义,所以只需将插件的扩展点标记定义在
配置文件plugin.xml中,具体代码如下:
ui"schema="schema/featureType.exsd"/>
schema/fileFormat.exsd"/>
point="org.Eclipse.help.contexts">
file="contexts.xml"
plugin="ac.lreis.ustudio.catalog.ui">
point="org.Eclipse.ui.views">
name="%Catalog"
allowMultiple="true"
category="catalog"
class="ac.lreis.ustudio.catalog.internal.ui.CatalogView"
id="ac.lreis.ustudio.catalog.ui.CatalogView">
name="catalogPerspectiveContributions"
point="org.Eclipse.ui.perspectiveExtensions">
standalone="true"
relative="bottom"
relationship="stack"
id="ac.lreis.ustudio.catalog.ui.CatalogView"/>
在上述性配置文件中,所有的拓展都是定义在闭合的extension
标签之间。
插件的扩展点标记使用XMLSchema子集描
述完成某种抽象功能的插件,定义中需要包含简单的属性以及
实现具体接口的类名称。
配置文件描述了软件产品中视图
View和透视图Perspective的加载位置,以及各部分插件加载
时的属性配置,并且加入exsd文件中定义的Eclipse内置拓展
点标记,引用模式featureType和fileFormat来减少重复性的配
置编写工作。
3.2Java拓扑模型接口实现地理信息基本功能
作为地理信息系统中的基本功能部件,地图绘制、浏览和
放缩等标准功能利用Java拓扑模型以及建立在其上的
GeoTools模型提供的程序调用接口实现。
具体的图形处理操作
借用开源模型Java高级绘图组件JAI(JavaAdvancedImage)
完成,JAI提供的程序接口可以方便地实现图像卷积、旋转、扭
曲、更换颜色空间、自定义样本分量等功能,应用中集成JAI绘
图组件模型,简化了GIS系统实现过程中图形处理方面的编码
工作。
同时,现有的Java开源模型在功能上已经加入了支持地
理标记语言(GML)的GMLReader类,用来读取符合GML规范
的数据,实现系统对符合GML规范的空间数据支持。
标准空间数据处理功能的实现部分中,需要调用Java拓
扑模型中对栅格及矢量数据的处理接口,如果需要集成矢量数
据与栅格数据之间的格式转换功能,需要借用Java拓扑模型
完成两种数据格式之间的转换,接口定义的代码示例如下:
interfaceGridCoverageExchange{
voiddispose();
Format[]getFormats()
GridCoverageReadergetReader(Objectsource)
GridCoverageWritergetWriter(Objectdestination,Formatformat)
}
interfaceFormat{
StringgetDescription()
StringgetDocURL()
ParameterValueGroupgetReadParameters()
StringgetVendor()
ParameterValueGroupgetWriteParameters()
}
interfaceGridCoverageReader{
StringgetCurrentSubname()
FormatgetFormat()
GridCoverageread(GeneralParameterValue[]parameters)
}
interfaceGridCoverageWriter{
ObjectgetDestination()
FormatgetFormat()
voidwrite(GridCoveragecoverage,GeneralParameterValue[]pa-
108
ComputerEngineeringandApplications计算机工程与应用2007,43(5)
rameters)
}
在上述功能类的定义中提供了Grid和Coverage数据格式
的读写操作接口,可以实现对接口GridCoverageReader以及
GridCoverageWriter的继承与调用。
同时在Reader和Writer接
口中分别定义读和写函数对数据进行处理的操作,分别调用程
序其他接口类中定义的读写函数完成各自相应的功能。
3.3构建富客户端插件体系结构
富客户端产品的插件导出为JAR包时,要求MANIFEST.
MF文件与其相应的JAR包关联在一起,插件各部分遵循OSGi
规范的定义。
位于META-INF目录下的MANIFEST.MF文件
对JAR包中各个依赖项进行配置,每个插件包(Bundle)都需要
通过该文件描述其自身信息。
符合OSGi定义规范的MANIFEST.
MF文件示例代码如下:
Manifest-Version:
1.0
Bundle-ManifestVersion:
2
Bundle-Name:
%plugin.name
Bundle-SymbolicName:
ac.lreis.ustudio.catalog.ui;singleton:
=true
Bundle-Activator:
ac.lreis.ustudio.catalog.ui.CatalogUIPlugin
Bundle-Vendor:
ustudio.lreis.ac
Bundle-Localization:
plugin
Export-Package:
ac.lreis.ustudio.catalog,ac.lreis.ustudio.catalog.ui
Require-Bundle:
org.Eclipse.core.runtime,org.Eclipse.ui,
org.Eclipse.jface,ac.lreis.ustudio.ui,ac.lreis.ustudio.libs
Eclipse-AutoStart:
true
如上述代码所示,OSGi框架中定义了一组标准的Header
头信息,每个Header都有其特定的含义。
符合OSGi标准的配
置文件MANIFEST.MF中包含一组Header与Value的映射关
系,示例代码中Bundle-SymbolicName对应的包名为ac.lreis.
ustudio_base;Bundle-Activator项指定启动和停止Bundle的类
名;Bundle-Vendor定义插件所属的包名。
Export-Package表示
可以被其它Bundle导入并使用的包名,Require-Bundle中定义
插件运行时所依赖和引用的其他包名称。
4软件系统产品化实现
4.1基于RCP平台的国际化方法
发布成熟的软件产品,良好的多国语言支持是必备要求。
基于Eclipse提供的开放平台,国际化RCP富客户端产品非常
方便,使用Eclipse的本地语言支持NLS(NationalLanguage
Support)可以确保产品界面国际化并且可以处理本地语言的数
据格式文件而不出现乱码。
针对产品中的每个插件包,建立带有“nl1”名称的插件片
段Fragments,在插件片段包中可以编写中文以及其他多国语
言支持文件。
在Eclipse中,不必修改程序中的源代码来支持本
地语言,只需将代码中的常量字符串外部化到遵循统一规格的
Properties属性文件中,再针对每种语言,遵循Unicode编码规
则撰写不同版本的Properties属性文件,然后部署到JAR文
件中即可。
包含中文字符串常量文件Messages_cn.properties的
结构如下:
#CreatedbyLreisuStudioTeam
Catalog=\u7C7B\u522B
Provider=LreisuStudio.
Search=\u641C\u7D22