李 浩,何永强
(河南工程学院计算机科学与工程系,河南郑州451191)
随着网络技术的飞速发展,利用Internet技术在Web上发布空间数据,供用户浏览和使用,是GIS发展的必然趋势.WebGIS是GIS技术与Web技术集成的产物,侧重于地理信息与空间处理的共享.它与传统的GIS相比具有访问范围广、平台独立、大规模降低系统成本和维护、升级方便等特点.传统的GIS应用系统开发模式将用户界面和业务逻辑、数据源以及通讯协议绑定在一起,一般需在后台运行1个或多个GIS应用程序.这种模式只解决了在Web上发布空间信息的问题,并没有针对Web应用环境进行重新设计和优化,因此在功能和效能上不能满足人们的需求.分布式WebGIS就是利用最先进的分布式计算技术来处理分布在网络上的异构多源的地理信息,集成网络上不同平台上的空间服务,构建一个物理上分布,逻辑上统一的地理信息系统.作者针对WebGIS在分布式环境中的不足,将SVG和SOAP引入WebGIS的设计中.SVG以矢量化的形式发布和显示地图数据[1],摆脱了GIS系统制作发布地图时地图数据格式必须为空间数据格式的限制.SOAP使用基于XML的通信协议,实现了不同协议和组件之间的互操作性,降低了程序设计的复杂性[2].本研究结合这2种技术,提出了一种新的WebGIS体系结构,讨论了该体系结构的实现.并给出了一个具体的基于该体系结构的应用实例.
WebGIS与其它采用B/S结构的信息系统类似,一般采用由数据库、GIS应用服务器、Web服务器和客户端组成的多层体系结构,客户端一般为Web浏览器,而服务器端则包含Web服务器、GIS应用服务器及数据库[3].
OGC(Open geospatial consortium)提出了在Internet上访问异构空间数据源的分层模型,空间数据的显示(或可视化)要经过下面的4个层次.(1)数据资源层.从空间数据源中选择要显示的地理实体的数据.(2)数据提供层.把选择出来的地理实体数据组合生成一个显示元素的序列.(3)数据转换层.将显示元素系列生成最终要显示的地图结果.(4)数据显示层.准备好的地图在显示设备进行最终显示.在这4层中,每相邻2层是服务与被服务的关系.分层模型并没有限制相邻2层的执行必须要在1台机器上,当其中某相邻2层被Internet分开时,就得到了3种WebGIS系统体系结构:瘦客户(Thin client)模式、胖客户(Thick client)模式和混合(Medium client)模式.这3种WebGIS体系结构的分层结构使系统具有较大的灵活性和可维护性.但同样存在以下不足之处.(1)空间信息通常与特定的GIS产品绑定.空间信息具有各种各样的结构,GIS平台内部的数据传输通过专有的通信协议来进行,用户只能使用特定的GIS平台来访问某个空间信息,无法实现WebGIS跨网络,跨平台的数据交换和信息共享.(2)在客户端由于大量智能终端(如PDA)的使用,对空间数据的发布形式提出了新的要求.相对于浏览器,PDA的数据处理能力较弱.在客户端大量使用插件、构件也不现实.(3)服务器与客户端之间的数据传输量大,相当一部分数据是以GIF或JPEG图像的形式存在的.增加了网络传输的负担.
SVG(Scalable vector graphics)是W3C颁布的矢量图形Web标准,它是基于XML的一个全新的标准,SVG不同于传统的二维图形和动画制作,它使用简单的一维(文本)语句完成矢量图形,能够包含复杂元素,如渐变、动画及简单的文本命令等.
在WebGIS中引入SVG作为空间数据的传输格式和发布形式的优势在于[4,5]:①SVG 是基于XML的,使用XML作为空间数据的传输格式,有助于解决异构环境下的数据传输和数据共享问题.②SVG是可编程的.可以针对SVG的DOM或SAX接口进行编程,动态地生成包含SVG图形的Web页面.③SVG是可扩充的.由于SVG是基于XML的,因此,可根据地理空间数据的特点对SVG进行必要的扩展,以便通过SVG能够有效地描述地理空间数据.④SVG支持数据的分层管理和显示,这符合人们使用GIS的习惯.
SOAP(Simple object access protocol)是一个基于XML的通信协议,在该协议下,软件组件和应用程序能够通过标准的HTTP协议通信.使现有的软件不论基于何种编程模型都可以通过互联网进行通信[6].现有的 WebGIS系统要广泛地应用于网络,还存在着以下一些问题.(1)防火墙穿越和用户认证.(2)协议之间的转换.当前流行的组件技术主要是DCOM,CORBA和JavaBean,它们运行在不同的平台之上,使用不同的协议来进行通信.这些组件之间的相互通信需要进行协议转换,方法很复杂并容易出错.把SOAP绑定到HTTP,很好地解决了以上问题.在HTTP中携带SOAP消息,将构建在HTTP之上的SOAP语义自然地对应到了HTTP语义上.SOAP自然地遵循HTTP的请求应答消息模型,这使得SOAP的请求和应答参数可以包含在HTTP请求和应答中.
基于SVG及SOAP的WebGIS多层体系结构如图1所示.系统设计采用4层分布式体系结构,即客户端、Web服务器、应用服务器和数据库.客户端包括PC,PDA,手机等多种用户终端.服务器端包括3部分,前端采用传统的Web服务器,用于处理用户的请求与响应.中间是应用服务器,所有处理逻辑全集中在该服务器中,后端是数据库.在该体系结构中,使用SVG作为空间数据的传输格式和发布形式,使用SOAP作为服务器端的通信协议.
基于SVG和SOAP的WebGIS体系结构具有以下特点.(1)具有良好的可扩展性.SVG及SOAP的基础是XML,易于理解、使用简便,而且可以根据需要进行扩展.(2)提高了人机交互能力.客户端与服务器端传输的是基于XML的SVG文本文件,减少了网络上的数据流量.SVG可以在浏览器上显示高质量的矢量图形,借助于JavaScript脚本语言,可实现用户与地图元素的交互.(3)具有良好的平台无关性.SVG和SOAP技术都是完全开放的技术,SVG文件是符合XML规范的文本文件,从SOAP的定义可以看出,SOAP就是XML+HTTP.由SVG和SOAP组合可以构成与平台无关的Web-GIS的数据显示及传输模式.这就使得基于这种技术的WebGIS更容易将分布式异构地理空间数据进行集成处理,使系统的开放性大大加强[7,8].
图1 基于SVG和SOAP的WebGIS体系结构Fig.1 WebGIS architecture based on the SVG and SOAP
根据实际需要,本研究对OGC提出的访问异构空间数据源的分层模型进行了改进,新增加了1个数据准备层,将Web服务器与应用服务器分离开来.体系结构的具体实现包括客户端的实现、服务器端的实现以及SOAP协议的实现.(1)客户端的实现.根据分层模型,客户端包括空间数据转换层和空间数据显示层.数据转换层的功能是将SVG形式的地图数据转换为可以在浏览器上显示的矢量格式.这一功能的实现是通过Adobe公司开发的浏览器端插件SVG Viewer实现的,通过该插件,就可以在浏览器上显示SVG格式的矢量图形.数据显示层是根据用户的要求,在浏览器上以分层的形式显示矢量地图.SVG Viewer可以完成对矢量图形的浏览、放大及缩小等简单操作.具体实施时,就是在SVG文档的宿主页面中,通过JavaSript脚本语言来操作SVG文档的DOM树,以实现诸如图形漫游、属性信息查询、图层显示控制等功能[9].(2)服务器端的实现.服务器端分为数据源层、数据提供层和数据准备层.它们分别由Web服务器、应用服务器及数据库服务器来实现.数据提供层通过JDBC或ODBC访问处于分布式环境中的数据资源层.数据准备层作为数据客户端向数据提供层通过SOAP请求数据.
数据源层主要指数据库服务器,数据库中存贮空间数据及属性数据.数据源层的功能相对较简单,根据用户的查询请求,返回符合要求的空间和数据.数据提供层由数据查询组件、数据管理组件、SOAP引擎等构成,完成GIS的核心功能.数据查询组件根据用户发出的请求,通过ODBC或JDBC连接数据库,完成对空间数据及属性数据的提取.数据管理组件对这些数据进行分类解析,处理数据并将数据转换为基于XML的SVG格式.SOAP引擎处理来自数据准备层的SOAP请求,调用相应的组件完成用户的请求,并将最后生成的SVG格式的数据发送到数据准备层.该层中的组件可以采用JavaBeans实现.数据准备层要实现2个方面的功能.一方面接收客户端的请求,将用户的请求封装成SOAP请求发到数据提供层;另一方面解析来自数据提供层的响应,提取其中的SVG数据,嵌入到HTML页面中,发送到客户端进行显示.由于采用了分布式组件技术,各层之间以一种松散的方式进行耦合,只要接口不变,各层具体实现方式的改变并不会对系统的运行造成如何影响.各层可以部署在1台机器上,也可以部署到不同的机器上.
基于上述体系结构,作者设计了1个简单的应用实例,创建了1个陕西省社会、经济地图,实现了SVG地图的图层显示及与用户的交互(图2).具体使用的技术为数据库服务器使用MySQL,Web服务器使用Tomcat4.1,应用服务器由JavaBean组件构成,客户端通过SVG Viewe,由JavaScript脚本处理用户对地图的操作.服务器端代码用Java实现.
图2 陕西省社会、经济地图Fig.2 Social and economic map of Shanxi Province
陕西省社会、经济地图可以显示陕西省各个地区的社会、经济基本数据,用户可以选择显示铁路、公路、城市边界、城市位置等图层,各个图层可以相互叠加,也可以根据用户的需要只显示某个图层.地图采用矢量图形形式表现空间数据,以字符形式表现文本注记,以图形属性形式表现属性数据,可以无级缩放,且不会产生任何失真.地图除能实现放大、缩小和漫游外,还可以通过脚本与SVG图元对象进行交互,实现了栅格地图中无法实现的图形要素选择、属性信息查询等交互功能.
计算机软件技术的发展,为WebGIS的实现提供了更多更好的实现方式,SVG和SOAP所构成的地理信息的发布和数据传输模式无疑为实现Weg-GIS体系构架提供了一种新的方法.本研究提出的体系结构使用SOAP协议实现了浏览器端与Web服务端的数据请求,服务器端以SVG的格式将响应数据发送到浏览器端,利用浏览器客户端技术实现了图层显示、图形标注、用户交互及初步的空间分析,丰富了WebGIS的功能,有利于不同组件之间的数据交换,提高了系统的扩展性.但由于SVG和SOAP都是近年出现的新技术,相关的标准也在不断的完善当中.在某些方面也存在一些欠缺之处,如SVG插件对地图操作功能支持有限,还必须在客户端编写脚本实现更复杂的操作.SOAP传输数据的安全性也是亟待解决的问题.
[1] 肖奇伟,周石琳,李 勇.一种基于GIS组件的矢量符号设计和标绘的通用方法[J].计算机工程与科学,2005,27(11):74 -77.
[2] 尹 芳,诸云强,张金区,等.科学考察空间数据WebGIS信息发布及可视化研究[J].计算机工程与设计,2011,32(7):2336 -2339.
[3] 周文生,毛 锋,胡 鹏.Web环境下地理空间数据的开放式表达体系研究[J].武汉大学学报:信息科学版,2004,28(1):43-47.
[4] 卢文龙,王英杰,阎东生.用SVG技术实现基于GML的 WebGIS研究[J].中国图象图形学报,2007,3(3):546-571.
[5] 周文生.基于SVG的WebGIS研究[J].中国图象图形学报,2002,7(7):693 -698.
[6] 宋 扬,潘 懋,胡金星,等.一种基于SOAP的Web-GIS系统[J].计算机应用研究,2003(11):137-139.
[7] 张 垒,沈玉利,蒋明亮,等.SVG动态地理信息统计专题图系统方法研究[J].计算机技术与发展,2011,21(5):190-194.
[8] 林 峰,郭朝珍.基于SVG的WebGIS交互协同机制的设计与实现[J].东南大学学报:自然科学版,2010,40(11):272-276.
[9] 李博霏,李 欣,李艳明.基于浏览器的地理信息服务客户端技术研究[J].计算机工程与设计,2011,32(9):3031-3035.