分布式异构空间数据共享研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第22卷第10期 计算机应用与软件 Vol.22, No.10
2005年10月 Computer Applications and Software Oct. 2005
分布式异构空间数据共享研究
钟 珞 潘媛媛 徐 勇 曹 皓
(武汉理工大学计算机科学与技术学院 湖北 武汉 430070)
摘 要 在构建防震减灾WebGIS 体系的过程中,引入GML 来描述空间数据,设计了空间数据库系统,以实现多源异构数据的
共享。

系统基于客户层、服务器层和数据库服务器三层体系结构来建造。

客户层实现图形用户界面并完成数据的表示。

服务器包括Web 服务器和GIS 应用服务器,前者主要用以客户端通信,后者则要实现对数据库服务器的访问,多源空间数据的获取、转换和输出标准的GML 文件等。

数据库服务器用来存放本地数据和链接分布式异构数据库。

系统采用Java Servlet 来完成Web 服务器和GIS 应用服务器的功能开发,通过Java applet 实现客户端,并利用SVG 来实现GML 数据的可视化。

关键词
空间数据 数据共享 GML SVG
STUDY OF DISTRIBUTED HETEROGENEOUS SPATIAL DATA SHARING
Zhong Luo Pan Yuanyuan Xu Yong Cao Hao
(School of Computer Science and Technology, Wuhan University of Technology, Wuhan Hubei 430070, China)
Abstract
In the process of constructing WebGIS based earthquake disaster reduction, the Geography Markup language (GML) is used to represent spatial data, and
the spatial database system is designed to realize the sharing of heterogeneous data. The system is composed of three-tier architecture, client, server and database server. The client tier realizes graphics user interface and represents spatial data. The server includes Web server and GIS application server. The former is used to communicate with client-side, and the latter is used to access database server. The conversion and output of GML document are also in charge of by GIS application server. The local data and the distributed heterogeneous database lie in database server. The Web server and GIS application server are developed using Java Servlet. And the client-side is developed using Java Applet. Moreover, scalable vector graphics (SVG) is used to visualize the GML data. Keywords
Spatial data Data sharing GML SVG
1 引 言
地理信息系统作为专门用于采集、存储、管理、分析和表
达的地理空间数据的信息系统,正向着网络化的方向发展,使得人们对空间数据共享的需求越来越多。

由于对空间现象理解的不同,对空间对象的定义、表达、存储方式亦各有不同,给数据共享带来了极大的不便。

近几年来,与城市防震减灾工作相关的许多部门,如城建、电力、消防等,都相继建立了自己的GIS 系统,而这些系统因采用不同的GIS 软件,其数据格式不尽相同,为了能充分利用已有的数据资源,更好地进行防震减灾工作,开发基于互联网的、具有空间信息共享能力的网络地理信息系统,已成为地震工作者亟待解决的重要问题。

目前,实现分布式异构空间数据共享的方式大致分为四种:数据格式转换模式、数据直接访问模式、标准空间数据交换模式和空间数据共享平台[1]。

为能有效解决空间数据共享问题,OpenGIS 联盟(Open GIS Consortium )将XML (Extensible Markup Language ,可扩展标记语言)应用于地理信息集成,提出了用来描述地理空间数据的描述、转换、存储的解决方案,即地理标记语言GML (Geography Markup Language )。

作为应用于网络环境下的地理空间数据的通用接口,GML 遵循数据互操作模式,可以维护商业地理信息软件专有格式的优点及其所保护的商业利益,,利于数据的交换与传输。

为在现有网络上以矢量方式进行传输、交换、集成WebGIS 的海量地理空间数据,提供了一种十分有效的解决途径。

我们在与咸宁市地震局合作开发防震减灾WebGIS 体系时,引入GML 来描述空间数据,构建出基于GML 的空间数据库系统,以实现与防震减灾工作相关的各部门之间的数据共享。

2 空间数据库系统的结构
系统采用客户层、服务器层、数据库服务器三层体系结构[2]。

其中客户层主要实现图形用户界面并完成数据的表示。

服务器包括Web 服务器和GIS 应用服务器,前者主要用以客户端通信,后者则要实现对数据库服务器的访问,多源空间数据的获取、转换和输出标准的GML 文件,以及将GML 文件转换为SVG 文件用以客户端显示。

数据库服务器用来存放本地数据和链接分布式异构数据库,包括关系数据库(Oracle 、SQL Sever 2000)、文件系统(ShapeFile 、DXF )等。

系统结构如图1所示。

首先由+客户端向服务器发送请求,Web 服务器在接收到请求后将其中含有GIS 信息查询的部分解析出来交由GIS 应用服务器处理。

GIS 应用服务器在接受查询条件后会根据需要将
第10期
钟珞等:分布式异构空间数据共享研究 53
其分解成若干子查询条件,然后根据GIS 应用服务器中存在的元数据表获得需要查询的源数据库信息。

这个元数据表采用GML 格式,其中记录了源数据库的相关信息,如数据源的位置、格式、内容等。

在获取了相应的源数据库信息后,通过数据库访问引擎与源数据库建立连接并发送子查询条件。

与数据库建立连接的方式有很多(ODBC 、JDBC 、SQLJ 等),由于整个系统采用Java 作为开发语言,这里采用JDBC 建立与分布式异构数据库的连接。

JDBC 可以构造动态的SQL 语句,实现较为灵活。

当GIS 应用服务器获取来自分布式异构数据库的空间数据后,会通过GML Translate 模块将不同的数据格式转换为标准的GML 文档。

由于GML 主要的目的是用来描述数据,它将数据和格式分离,因此要通过转换组件将GML 转换为SVG (2D )或X3D (3D )矢量空间数据,返回到客户端浏览显示。

图1 基于GML 的空间数据库系统结构框图
3 系统的实现
Java 语言借鉴了C 、Smalltalk 、Object 、C++等语言的优点,具有简洁,动态适应性强,运行稳定、安全等特点。

本系统采用Java Servlet 来完成对Web 服务器和GIS 应用服务器的开发,通过Java applet 来实现客户端。

3.1 客户端与服务器的通信
当客户端在第一次启动时,输入网址就能通过URL 与服务
器建立连接,下载Applet 或SVG 插件。

客户端可以通过http 协议向Web 服务器发出请求,当一个Servlet 接收到来自客户端的请求后,实际上它接收了ServletRequest 和ServletResponse 两个对象,前者获取用户请求信息,后者将信息返回给客户端。

3.2 数据格式的转换
GML Translate 模块主要是用来实现不同的空间数据格式到标准的GML 文档的转换。

在系统的设计中,事先选取一些主流的非GML 数据格式进行转换,如ShapeFile 、DXF 、Oracle Spatial 等。

在GML Translate 模块中,定义一个转换原类(Original Class ),原类中封装了转换的一些基本方法,如实例化后用以输出GML 文档的OutGmlDoc(),限于篇幅部分代码如下:
class Originalclass { …
public string get_ID() /*获取地理要素ID 值*/ {…}
public string get_Name() /*获取元素的名称*/ {…}
public string get_Srs()/*获取元素空间参考系统*/ {…}
public void OutGmlDoc(filename) {
println("<?xml version="1.0" encoding="UTF-8"?>");
println("<gml:FeatureCollection
xmlns:gml="/gml ">"); println("<gml:boundedBy> <gml:Box> <gml:coordinates>" + city.get_BoundbyMin() + "</gml:coordinates>"); println("<gml:coordinates>" + city.get_BoundbyMax() +
"</gml:coordinates> </gml:Box> </gml:boundedBy>"); println("<gml:featureMember>");
println(gmlGeometry.input_Gmlelement()); println("</gml:featureMember>"); …
println("</gml:FeatureCollection "); close(); } … }
针对每一种类型空间数据的转换可通过在对原类进行继承
的基础上,描述该类型空间数据的属性,而生成一个与该类型数据对应的处理子类,当GIS 应用服务器获取某一种空间数据需要转换时就调用相应的处理子类,再通过统一的接口输出成GML 文件,从而实现异构空间数据到GML 的转换(见图2)。

当数据库服务器中链接有新的空间数据类型时,只需要用户描述清初心类型数据的属性,而后通过对原类继承就可生成处理该新类型数据的处理子类。

这样不仅减少了系统的开发工作量,而且也使得系统具有较强的适用性和冗余性。

文中主要以ShapeFile 、Oracle Spatial 为例进行转换说明。

图2 GML Translate 的类图
ShapeFile 数据是以文件形式存储的GIS 数据,GIS 应用服务器可通过URL 与之建立连接以获取数据。

由于数据记录中带有点、线、面以及多点、多线、多面的几何体类型,而这些类型在OGC 的空间几何模型中有相应的元素与之对应,故可建立两者之间的映射关系。

将获得的每一条记录的字段赋给GML Feature 的属性,将几何体赋给GML Geometry 属性,从而实例化产生一个GML Feature 对象,最终转化为GML 文档。

Oracle Spatial 作为对象关系数据库(ORDB )继承了关系数据库和面向对象数据库两者的优点,成为空间数据库应用的主流数据库。

Oracle9i Spatial 将属性数据和空间数据放在一张空间数据表中。

表的一行记录表示一个几何实体的几何和属性数据,其中几何数据存放在以SDO GEOMETRY 为类型的列中,同时建立空间数据索引,从而实现空间数据和属性数据一体化存储和管理。

数据访问引擎通过JDBC 与Oracle 数据库建立连接后,就能发送SQL 语句对数据库进行各种操作。

为了从SDO GEOMETRY 获取几何数据,需要在GIS 应用服务器端建立SDO GEOMETRY 的类对象,并在GML Translate 模块中通过调用Oracle 公司Java 类库(Oracle Spatial Java Class Library )中的Jgeomety 类提供的Load (STRUCT )方法来获取SDO GEOMETRY 对象,并可以通过Jgeometry 类提供的各种方法来获取SDO GEOMETRY 对象的属性,而后实例化产生GML Geometry 对象,如用getPoint ()方法得到点的几何坐标,最后通过从原类继承的OutGmlDoc ()生成GML 文档。

3.3 基于SVG 的可视化
SVG 是一种使用XML 来描述2维图像的语言,它允许3
54 计算机应用与软件 2005年
种形式的图像对象存在:矢量图形、栅格图像和文本。

各种图
像对象能够组合、变换,并且修改其样式,也能够定义成预处
理对象。

SVG的功能包括嵌套变换、路径剪裁、透明度处理、
滤镜效果以及其他扩展,同时,SVG图像支持动画和交互,也
支持完整的XML的DOM接口。

SVG支持XML编码,可以利用XSLT(Extensible Stylesheet
Language Transformation,XSL转换)来完成一个GML格式的
文档转换成SVG文档。

在SVG Translate模块的XSLT样式表
中定义转换规则,由XSLT处理器根据定义的转换规则将源数
据(GML)转换为SVG格式用于客户端显示。

转换过程如图3
所示:
图3 SVG转换过程
目前主要的XSLT处理器有Saxon、Apache的Xalan和在
Internet Explorer中直接运行的MSXML4.0,可利用这些处理器
将GML文档转换为SVG文档。

下面以城市防震减灾WebGIS
系统中的城市行政区图层为例编写GML文档的XSLT样式表
文件city.xsl。

在该图层中所有的空间对象都是多边形类型。


档的根元素是FeatureCollection,它包含多个子元素
featureMember,每个featureMember包含一个CityDistrict,
CityDistrict即特征元素,它包含一个空间对象的属性数据和空
间数据,对应于数据库的该图层表中的一行记录,且CityDistrict
包含的空间数据属于Polygon类型,部分代码如下所示:
<? xml version = "1.0" encoding = "UTF - 8" ? >
<xsl: stylesheet version = "1.0" xmlns:xsl =
"/1999/xsl/Transform"
xmlns:gml = "/gml">
<xsl:output method = "xml" version = "1.0" encoding = "UTF - 8" indent
= "yes" / >
<xsl:template match = " / ">
<svg style = "height: 200px; width: 200px;" >
<g>
<xsl: for-each select = "FeatureCollection/
gml:featureMember/CityDistrict/gml:polygonPropery/gml:Polygon" >
<xsl:variable name = "linearRingCood">
<xsl: value-of select = "gml:outerBoundaryIs/
gml:LinearRing/gml:coordinates" / >
< / xsl: variable>
< polyline points="$ linearRingCood"
transform = "matrix(2, 0, 0, -2, 300, 200)" style = "fill: # ccddff;
stroke; black;" stroke-width = "0.2">
< / polyline >
< / xsl: for-each >
< / g>
< / svg >
< / xsl: template >
< / xsl: stylesheet >
尽管目前主流的浏览器还不直接支持SVG,但很多公司都
推出了自己的SVG插件,本系统采用Adobe的SVG Viewer3.01
来作为SVG的显示插件。

在客户层可通过SVG插件所提供的
功能直接对地图进行放大、缩小、漫游等操作。

对于一些SVG
插件不能提供的功能,如地图图层的选取,地图属性数据的查
询等,通过JavaScript脚本语言基于SVG插件所提供的DOM
接口进行二次开发来实现。

城市防震减灾WebGIS系统的主界
面如图4所示。

图4 城市防震减灾WebGIS系统的主界面
4结束语
随着社会信息化程度的不断提高,信息共享已经成为一种
必然的要求,地理信息也不例外。

信息技术以及GIS自身的发
展,使得人们对空间信息数据的共享需求也越来越多。

GML的
提出为解决空间数据共享提供了一个契机,对地理空间数据的
广泛应用具有十分重要的作用。

采用SVG插件的方式实现GML
数据的可视化,使得地理空间数据的显示更加简单、方便。

参 考 文 献
[1]朱前飞、高芒、廖俊国,“一种基于GML的空间数据共享方案的研
究”,《工程勘察》,2004, (1):57~59.
[2]张霞、李德仁、朱欣焰,“基于GML构建WebGIS的研究”,《测绘
通报》,2003, (10):4~7.
[3]于大东、钟志农、李军,“基于Oracle Spatial与GML的WebGIS研究”,
《计算机工程与科学》, 2004, 26(4):66~69.
[4]徐勇、钟珞、潘媛媛等,“基于WebGIS的防震减灾系统研究与设计”,
《防灾减灾工程学报》(已录用).
[5]Peng Zhong-ren , Zhang Chuan-rong,The roles of geography markup
language (GML),scalable vector graphics (SVG), and Web feature
service(WFS) specifications in the development of Internet geographic
information systems (GIS),Geographical Systems, 2004, (6):95~116.
(上接第44页)
参 考 文 献
[1]G V Chockler, et al, Group communication specifications: a
comprehensive study, ACM Computing Surveys, 2001, 33(4): 1 ~ 43.
[2]王兴伟等, “组通信: 概念、需求、服务与实例” , 《计算机应用与软件》,
2001, (8): 5 ~ 8.
[3]R Geurraoui, A Schiper, Fault-tolerance by replication in distributed
system, International Conference on Reliable Software Technologies,
Springer Verlag, 1996.
[4]R Geurraoui, A Schiper, Software-based replication for fault tolerance,
IEEE Computer, 1997, 30(4): 68 ~ 74.
[5]M Pasin, M Riveill, and T S Weber, High-available Enterprise JavaBeans
using group communication system support, In Proceedings of the
European Research Seminar on Advances in Distributed Systems
(ERSADS2001), Bologna, Italy, 2001.
[6]王勇、焦丽梅, “一种基于组通信的数据库复制的实现” , 《计算机科学》,
2004, 31(11): 105 ~ 108.
[7]卢正鼎、李瑞轩、肖卫军, “多数据库事务处理模型中局部代理的设计
与实现” , 《计算机研究与发展》, 1998, 35(12): 1130 ~ 1134.。

相关文档
最新文档