10.3. WebGIS

10.3.1. WebGIS概念

Web技术和GIS技术相结合,最为激动人心的产物就是WebGIS(万维网地理信息系统)。WebGIS,简言之,就是利用Web技术来扩展和完善地理信息系统的一项新技术。由于HTTP协议采用基于C/S的请求/应答机制,具有较强的用户交互能力,可以传输并在浏览器上显示多媒体数据,而GIS中的信息主要是需要以图形、图像方式表现的空间数据,用户通过交互操作,对空间数据进行查询分析。这些特点,就使得人们完全可以利用Web来寻找他们所需要的空间数据,并且进行各种操作。具体地讲,WebGIS的应用可以分为以下几个层面:

1. 空间数据发布

由于能够以图形方式显示空间数据,较之于单纯的FTP方式,WebGIS使用户更容易找到需要的数据;

2. 空间查询检索

利用浏览器提供的交互能力,进行图形及属性数据库的查询检索;如图所示,在客户端浏览器上进行空间信息检索界面。

3. 空间模型服务

在服务器端提供各种空间模型的实现方法,接收用户通过浏览器输入的模型参数后,将计算结果返回。换言之,利用Web不仅可以发布空间数据,也可以发布空间模型服务,形成浏览器/服务器结构(Browser/Server,B/S)。

4. Web资源的组织

在Web上,存在着大量的信息,这些信息多数具有空间分布特征,如分销商数据往往有其所在位置属性,利用地图对这些信息进行组织和管理,并为用户提供基于空间的检索服务,无疑也可以通过WebGIS实现。

10.3.2. WebGIS分类与特点

1. WebGIS分类

与其它采用B/S结构的信息系统不同的是,WebGIS系统具有空间数据量大和空间处理复杂的特点,因此产生了计算模式的概念。WebGIS的计算模式主要是指GIS功能在客户端和服务器端的分配,WebGIS计算模式的选择决定了整个WebGIS系统的实现。WebGIS的计算模式主要包括以下三种:胖客户模式、瘦客户模式和中客户模式。

对于WebGIS的分类,根据主要的图形属性数据所处的逻辑位置不同,可划分为服务器端和客户端两种解决方案,也有将其分为动态式和主动式WebGIS,有些WebGIS平台采用介于其中的平衡方案。根据WebGIS的体系结构和计算模式,并综合以上分类方法,可以将WebGIS分为以下三类:

(1)瘦客户端WebGIS(侧重服务器的策略)

以服务器为中心,主要目的是根据客户端的需要向其提供GIS数据和分析结果。在这种策略下,数据与数据处理软件都运行于服务器上,客户端没有任何数据处理能力,仅仅组织、发送请求和显示服务器的响应结果。其优点在于如果使用一个高性能服务器,可以让一些用户访问到许多比较难于通过网络进行传输或在客户端本地处理的复杂数据;可以让一些即使没有使用过复杂软件的用户也可以使用一些复杂的GIS分析程序;可以有效地控制用户对数据的访问,以保证数据得到正确的使用。其缺点在于任何一个请求都必须返回到服务器端进行处理,并在处理完请求后通过Intemet返回响应给客户端;服务器与浏览器之间的Internet的网络带宽和流量是影响系统性能的主要因素,特别是在服务器响应需要传输大量数据的情况下;系统没有有效利用客户端计算机的处理能力,仅仅利用它提交请求和显示响应结果。一般来说,这一策略适于面向大量对GIS分析功能要求较少的用户;对于一些实时性要求较高的WebGIS系统,使用这种策略比较好,可以避免传输大量实时产生的数据,更有利于对数据的控制和反映系统的真实现状。

(2)胖客户端WebGIS(侧重客户端的策略)

在这种策略中,客户端应用程序分担了一部分原来有服务器负责的处理任务。往往是一部分GIS功能下载到或驻存于客户端,对数据的某些处理在客户端本地完成。其优点是利用了客户端计算机的处理能力;用户可以对数据分析过程进行更多的控制;一旦服务器返回了响应,用户即可以不在通过网络与服务器进行信息交换,就可以对返回的数据进行处理。其缺点主要表现在来自服务器的响应可能包含大量的数据或对数据进行处理的小程序,从而可能导致较长的响应等待;如果客户端处理能力不足,则处理数据量较大或比较复杂的数据比较困难,复杂的GIS分析可能运行缓慢;为了正确使用数据和分析功能,用户必须进行必要的培训。

(3)中客户端WebGIS(综合性平衡策略)

纯粹的侧重服务器或侧纯粹的重客户端的策略都存在明显的局限:如果需要频繁的数据传输,侧重服务器的策略情况下,系统的性能对Internet的网络带宽和网络流量非常敏感;侧重客户端的策略对客户端的计算机处理能力非常敏感,也就是说,如果某些任务超出其处理能力,则可能非常慢。综合这两种策略,形成一种混合型的解决办法,来更好地发挥服务器和客户端的优势与潜力。涉及到繁重的数据库操作或复杂分析的任务让性能高的一方来承担,一般来说是服务器;涉及到用户控制的任务让客户端承担。这样,双方共享彼此的计算处理能力,从而使数据和小程序可以进行合理分配,以使整个系统的性能达到最高。这种混合方式对于某些付费服务和预约服务型的应用比较有用,在这种应用中用户可以通过“预定”的方式,定期向服务器要求提供数据或进行某些分析服务。

2. WebGIS特点

与传统的地理信息系统相比,WebGIS有其特殊之处,主要表现在:

(1)更广泛的客户访问范围。客户可以同时访问多个位于不同地方的服务器上的据,而Internet/Intranet所特有的优势大大扩展了GIS的数据的处理能力,增强了空间数据的时效性。

(2)客户端的平台独立性。无论客户机是何种操作系统,只要支持通用的Web浏览器,用户就可以访问GIS数据及服务器所提供的服务。

(3)更简单的操作。要推广GIS,使GIS系统为广大的普通用户所接受,而不仅仅局限于少数受过专业培训的用户,就要降低对系统的操作难度。通过Web浏览器提供友好的用户界面无疑是一种很好的选择。

(4)更高效的计算负载平衡。传统的GIS大都使用文件服务器结构的处理方式,其处理能力完全依赖客户端,效率较低。而当今的一些高级的WebGIS能充分利用网络资源,将复杂的处理交由服务器处理,而简单的操作则由客户端直接完成。这种计算能灵活地在服务器端和客户端之间合理地分配处理任务,从而提高网络资源的利用效率,从而提高了系统的性能。

(5)分布式的系统。GIS数据和分析工具是独立的组件和模块,WebGIS利用Internet的这种分布式系统把GIS数据和分析工具部署在网络不同的计算机上,用户可以从网络的任何地方访问这些数据和应用程序,即不需要在本地计算机上安装GIS数据和应用程序,只要把请求发送到服务器,服务器就会把数据和分析工具模块传送给用户,达到Just-In-Time的性能。Internet的一个特点就是它可以访问分布式数据库和执行分布式处理,即信息和应用可以部署在跨越整个Internet的不同计算机上。

(6)动态性。由于WebGIS是分布式系统,数据与应用程序部署在不同的计算机上,随时可能被管理员更新,对于Internet上的每一个用户来说,都能得到最新的数据和应用程序的最新版本,只要数据源发生变化,和数据源的动态连接将保持数据的现势性。

(7)交互性。WebGIS可使用户在Internet上操作GIS地图和数据,用Web浏览器(IE.Netscape等等)执行部分基本的GIS功能:如缩放、漫游、查询和标注,甚至可以执行空间查询:如“离你最近的旅馆或饭店在哪儿”,或者更先进的空间分析:比如缓冲分析和网络分析等。在Web上使用WebGIS就和在本地计算机上使用桌面GIS软件一样。

(8)经济性。一般专业的GIS软件非常昂贵,而对于普通用户来说,经常只使用一些最基本的功能,想购买专业软件显得不太可能,也不经济。WebGIS在客户端只需要浏览器,不需要客户的额外投入。由于客户端的简单而减少的维护费用也不容忽视。

10.3.3. WebGIS技术框架

目前可用于构造分布式WebGIS的技术方法主要包括:J2EE(Java 2 Platform Enterprise Edition)、DCOM(Distributed Component Object Model)、CORBA(Common Object Request Broker Architecture)(杜震洪,2007)。

1.基于J2EE的分布式WebGIS

(1)J2EE概述

J2EE是使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE(Java 2 Platform Standard Edition)和适用于企业级应用的J2EE。

Sun推出J2EE的目的是为了克服传统Client/Server模式的弊端,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。J2EE不仅巩固了标准版中的许多优点,如便利的数据存取特性、可靠的网络数据安全等,同时还全面支持对Java Servlets API,JSP(Java Server Page),EJB(Enterprise Java Beans)以及XML技术。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

(2)基于EJB技术的WebGIS结构

EJB是一个服务端组件结构,具有层析性,这也正适应了WebGIS应用程序的开发需要。在通常情况下,基于EJB技术的WebGIS系统模型包括三层结构如图10-3所示。

①表示层

表示层主要用来满足用户对整个系统的各种访问需求,并完成以下任务:接收用户输入的请求,对请求进行分析检查并做相应处理;显示由服务器传来的响应结果。该层通常由客户进程组成,这些进程由浏览器动态的创建和撤销。

②业务逻辑层

业务逻辑层由Web服务器和应用服务器组成。应用服务器是一个基于J2EE的应用,以后台进程的形式存在,主要完成从WebGIS应用服务器的处理逻辑,包括影像数据流、矢量数据流和空间查询与分析服务等。业务逻辑层响应客户端的数据、影像以及查询分析等请求,并将生成的结果经Web服务器传送给客户端。

③数据层

数据层主要为业务逻辑层提供数据服务,如存储业务逻辑层的处理结果、返回业务逻辑层检索的数据结果。同时也为业务逻辑层屏蔽了数据源的变化,实现当数据库类型发生变化时只需改变连接数据源的语句。

image1

2. 基于DCOM/COM+的分布式WebGIS

(1)DCOM与COM+概述

分布式组件对象模型DCOM,是组件对象模型(Component Object Model,COM)发展的新阶段。它扩展了组件对象模型技术,使其能够支持在局域网、广域网,甚至互联网上不同计算机的对象之间的通讯。使用DCOM,应用程序就可以在位置上达到分布性,从而满足客户和应用的需求。

DCOM的发展有力的推动了COM在网络环境中的发展。当然,从COM转到DCOM,并不仅仅意味着通信线路的加长,同时组件对象与客户程序协作运行的环境也发生了变化,从单机系统环境转到网络环境。毕竟网络通信比单机系统环境下的跨进程通信要脆弱得多,为了保证协作过程的可靠性以及程序对异常时间的应变能力,客户程序和组件程序需要考虑更多的细节,而不是仅仅提供与应用相关的基本功能。

COM+为COM更高层次上的应用。COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容。COM+倡导一种新的设计概念,把COM组件提升到应用层,把底层细节留给操作系统,使COM十与操作系统的结合更加紧密。COM+相对于COM在应用方式上更好地继承了MTS(Microsoft Transaction Server)的处理机制,包括MTS的对象环境、安全模型、配置管理等。COM+把COM、DCOM和MTS三者有机地结合起来,同时也新增了一些服务,如负载平衡、内存数据库、事件模型、队列服务等,形成一个概念新、功能强的组件体系结构,使得COM+成为真正适用于企业应用的组件技术。COM+标志着Microsoft的组件技术达到了一个新的高度,它不再局限于一台机器上的桌面系统,而是把目标指向了更为广阔的企业内部网,甚至Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。

(2)基于DCOM/COM+的WebGIS结构

根据Microsoft公司提供的分布式应用程序模型,基于DCOM的WebGIS可将复杂的GIS任务分为三个层次的逻辑:表示逻辑、业务逻辑和数据逻辑,如图10-4所示。

表示层是应用的客户端部分,它负责与用户交互及调用业务逻辑层的COM十组件来响应客户的请求。该层可以通过HTML、DHTML、ActiveX控件以及Win32应用程序来实现。中间的业务逻辑层负责处理表示层的应用请求,在需要的时候通过访问后端的数据服务层来完成数据的查询、检索和修改。后端的数据服务层负责为GIS应用提供空间数据、空间数据分析管理及数据的读写、检索和存储。

image3

3.基于CORBA的分布式WebGIS

(l)CORBA概述

CORBA提供了一个允许在分布式和异构型环境中应用程序之间进行互操作的框架。它是对象管理组织(Object Management Group,OMG)制定的有关对象技术的工业规范,是对OMG发布的对象管理体系(Object Management Architecture,OMA)参考模型的核心—对象请求代理(Object Request Broker,ORB)的功能描述与约定。OMA参考模型定义了CORBA的4个主要部分:对象服务(Object Services)、公共设施(Common Facilities)、应用对象(Application Objects)和ORB。

对象服务是为公共设施和各种应用对象提供的基本服务,如命名服务、事务服务、交易服务、生命周期服务和安全服务等。与对象服务不同,公共设施是面向最终用户的,而对象服务只面向构件本身。应用对象是未经OMG标准化的、由各个应用开发者自行开发的实体,应用对象使用CORBA提供的各种对象服务。对象请求代理ORB是作为对象互相通讯的软总线,负责部件间以及客户端和对象间的通讯。

(2)基于CORBA的WebGIS结构

CORBA的出现为WebGIS技术的结构优化提供了有力的支持,相继产生了一些具有分布特征的GIS组件己经成为GIS服务器的主要组成部分,对于提高WebGIS的互操作性和开放性具有直接的促进作用。

使用CORBA/Java技术,可以按照三层结构来构造WebGIS应用,分别为客户层、业务层和资源层。图10-5所示为通过Java-ORB接口存取CORBA对象的方法而设计的一种三层结构示意图。

image5

①客户层

该层提供与用户交互的界面。与传统的B/S模式中的客户端相比,这里的客户端所拥有的组件能够提供灵活性强、交互性好的图形界面。这些组件被嵌入在可移动的容器中(如HTML等)。客户端运行的是一个使用自身对象协议(Internet Inter-ORB Protocol,IIOP)的分布式对象。与HTTP协议不同的是,IIOP协议是动态的,通过它可以建立客户端Java应用和服务器端对象之间的持久连接,从而达到传递请求和响应结果的目的。

②业务层

业务层是一组能够向HTTP和CORBA客户端提供服务的服务器。在基于CORBA/Java的对象Web模型中,应用逻辑被封装成CORBA对象,担当业务层的应用服务器角色,这些对象通过IIOP协议与客户端的Java进行交互,提供逻辑处理功能。IIOP提供了本地和远程操作的透明性,因此开发人员不必关心对象的具体位置。

③资源层

资源层为CORBA对象提供可以访问的资源,包括DBMS、空间数据库、遗留系统等。由于在中间层以CORBA对象取代了CGI应用程序,因而扩大了访问资源的范围,几乎可以访问任何符合CORBA规范的系统及所拥有的资源。在基于CORB/Java技术的对象Web模型中,可以利用Java对象请求中介与CORBA对象通信。

10.3.4. WebGIS实现技术

WebGIS是网络GIS的一个重要组成部分,网络GIS的一些概念,如客户机/服务器模式、分布式数据管理等,也可以应用于WebGIS,但是在WebGIS实现时,还要着重考虑两个问题,即控制网络传输数据量以及必须通过浏览器与用户进行交互。由于HTML不支持矢量数据而且缺乏适合GIS的数据功能描述,所以在目前WebGIS技术中,扩展浏览器的解释功能和交互能力,以及加强服务端的动态页面和数据生产能力是WebGIS的重要实现目标。WebGIS的实现包括客户端实现和服务器端实现两个方面。

服务器端的实现技术包括:CGI、ServerAPI等,当前瘦客户模式的WebGIS应用主要就是采用这些技术。客户端的实现技术主要有:JavaAPplet、ActiveX和Plug-in,当前这些技术主要用于实现胖客户模式的WebGIS应用。目前,实现WebGIS的技术方法具体分为以下五种。

1.CGI方法

CGI(Common Gateway Interface,通用网关接口)是一个用于Web服务器和客户端浏览器之间的特定标准,它允许网页用户通过网页的命令来启动一个存在于网页服务器主机的程序(称为CGI程序),并且接收到这个程序的输出结果。当用户发送一个请求到Web服务器,Web服务器通过CGI把该请求转发给后端运行的GIS服务程序,由GIS服务程序生成结果交给Web服务器,Web服务器再把结果传递到用户端显示,如图10-6所示。CGI是最早实现动态网页的技术,它使用户可以通过浏览器进行交互操作,并得到相应的操作结果。

利用CGI可以生成图像,然后传递到客户端浏览器(目前大多数主页的访问者计数器就是采用CGI程序实现的)。这种方法的缺点是,对于每一个客户机的请求,都要重新启动一个新的服务进程,当有多用户同时发出请求时,服务的负担重。同时由于网络传递的图形为栅格图,因而导致地图缩放、漫游、选择等操作不能在本地进行,需要传递到服务器进行处理,在服务器端生成新的栅格图再传递到客户端显示,不能直接在客户端进行复杂的空间分析。从理论上讲,任何一个GIS软件都可以通过CGI连接到Web上去,远程用户通过浏览器发出请求,服务器将请求传递给后端的GIS软件,GIS软件按照要求产生一幅数字图像,传回远程用户。

实际上,由于设计的原因,大多数GIS软件不能直接作为CGI程序连接到Web上,但是,有以下的两种技术比较成功。

(1)用CGI启动后端的批处理制图软件,这种软件的特点是用户可以直接在计算机终端一行一行地输入指令来制图。其特点是用户的每一个要求都要启动相应的GIS软件,如果软件较大,启动时间就会很长。

(2)CGI启动后端视窗(Windows)GIS软件,CGI和后端GIS软件的信息交换是通过“进程间通讯协议(IPC-Inter Process Communication)”来完成,常用的IPC有RPC(Remote Procedure Call)和DDE(Dynamic Data Exchange)。其优点在于,由于GIS软件是消息驱动的,CGI只要通过发送消息,驱动GIS软件执行特定操作即可,不需要每次重新启动。

image7

2.Server API方法

Server API类似于CGI,不同之处在于CGI程序是单独可以运行的程序,而Server API往往依附于特定的Web服务器,如Microsoft ISAPI依附于IIS(Internet Information Server),只能在Windows平台上运行,其可移植性较差。但是Server API启动后会一直处于运行状态,其速度较CGI快。如图10-7所示。

image9

3.插件方法

利用CGI或者Server API,虽然增强了客户端的交互性,但是用户得到的信息依然是静态的。用户不能操作单个地理实体以及快速缩放地图,因为在客户端,整个地图是一个实体,任何GIS操作,如放大、缩小、漫游等操作都需要服务器完成并将结果返回。当网络流量较高时,系统反应变慢。解决该问题的一个办法是利用插件技术,浏览器插件是指能够同浏览器交换信息的软件,第三方软件开发商可以开发插件以使浏览器支持其特定格式的数据文件。利用浏览器插件,可以将一部分服务器的功能转移到客户端,此外对于WebGIS而言,插件处理和传输的是矢量格式空间数据,其数据量较小,这样就加快了用户操作的反应速度,减少了网络流量和服务器负载。插件的不足之处在于,象传统应用软件一样,它需要先安装,然后才能使用,给使用造成了不方便。

4.Java Applet(Java小应用程序)方法

WebGIS插件可以和浏览器一起有效地处理空间数据,但是其明显的不足之处在于计算集中于客户端,称为“胖客户端”,而对于CGI方法以及Server API方法,数据处理在服务器端进行,形成“瘦客户端”。利用Java语言可以弥补许多传统方法的不足,Java语言是一种面向对象的语言,它的最大的优点,就是SUN公司提出的一个口号“写一次,任何地方都可以运行(Write once, run anywhere.)”,即指其跨平台特性,此外Java语言本身支持例外处理、网络、多线程等特性,其可靠性和安全性使其成为因特网上重要的编程语言。

Java语言经过编译后,生成与平台无关的字节代码(Bytecode),可以被不同平台的Java虚拟机(JVM-Java Virtual Machine)解释执行。Java程序有两种,一种可以独立运行,另一种称为Java Applet,只能嵌入HTML文件中,被浏览器解释执行。用Java Applet实现WebGIS,优于插件方法的方面是:(1)运行时,Applet从服务器下载,不需要进行软件安装;(2)由于Java语言本身支持网络功能,可以实现Applet与服务器程序的直接连接,从而使数据处理操作既可以在服务器上实现,又可以在客户端实现,以实现两端负载的平衡。图10-8是利用Java Applet实现的WebGIS模式。

image11

5.ActiveX方法

另一项可以实现WebGIS的技术是ActiveX,它是在微软公司OLE技术基础上发展起来的因特网新技术,其基础是DCOM(Distributed Component Object Model),它不是计算机语言,而是一个技术标准。基于这种标准开发出来的构件称为ActiveX控件,可以象Java Applet一样嵌入到HTML文件中,在因特网上运行。与Java Applet相比,其缺点是只能运行于MS-Windows平台上,并且由于可以进行磁盘操作,其安全性较差,但是优点是执行速度快,此外由于ActiveX控件可以用多种语言实现,这样就可以复用原有GIS软件的源代码,提高了软件开发效率。如图10-9所示。

image13
../_images/image00815.gif

表10-4 WebGIS各实现技术优缺点

上面描述了几种WebGIS的实现方案,其模式优缺点及模式评价如表10-4所示,在实际的系统建设中,可以根据待发布数据的数据量、数据类型、Web服务器软件、客户端的要求等确定采用不同的方案,选择相应的软件。