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软件执行特定操作即可,不需要每次重新启动。
2.Server API方法
Server API类似于CGI,不同之处在于CGI程序是单独可以运行的程序,而Server API往往依附于特定的Web服务器,如Microsoft ISAPI依附于IIS(Internet Information Server),只能在Windows平台上运行,其可移植性较差。但是Server API启动后会一直处于运行状态,其速度较CGI快。如图10-7所示。
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模式。
5.ActiveX方法
另一项可以实现WebGIS的技术是ActiveX,它是在微软公司OLE技术基础上发展起来的因特网新技术,其基础是DCOM(Distributed Component Object Model),它不是计算机语言,而是一个技术标准。基于这种标准开发出来的构件称为ActiveX控件,可以象Java Applet一样嵌入到HTML文件中,在因特网上运行。与Java Applet相比,其缺点是只能运行于MS-Windows平台上,并且由于可以进行磁盘操作,其安全性较差,但是优点是执行速度快,此外由于ActiveX控件可以用多种语言实现,这样就可以复用原有GIS软件的源代码,提高了软件开发效率。如图10-9所示。
上面描述了几种WebGIS的实现方案,其模式优缺点及模式评价如表10-4所示,在实际的系统建设中,可以根据待发布数据的数据量、数据类型、Web服务器软件、客户端的要求等确定采用不同的方案,选择相应的软件。