目前已经有多种不同的技术方法被应用于研制实现WebGIS,包括通用网关接口(CGI)方法、服务器应用程序接口(Server API)方法、插件(Plug-ins)法、Java Applet方法以及ActiveX方法等。Internet/Intranet网络应用开发技术已从第一代的CGl技术发展到第二代的Plug-in技术及目前流行的以Java为代表的Internet网络开发语言[5]。
下面对这些技术进行简单的描述和比较。
1.CGI方法
CGI是一个用于Web服务器和客户端浏览器之间的特定标准,它允许网页用户通过网页的命令来启动一个存在于网页服务器主机的程序(称为CGI程序),并且接收到这个程序的输出结果。CGI是最早实现动态网页的技术,它使用户可以通过浏览器进行交互操作,并得到相应的操作结果,如图2-2所示。利用CGI可以生成图像,然后传递到客户端浏览器(目前大多数主页的访问者计数器就是采用CGI程序实现的)。这样,从理论上讲,任何一个GIS软件都可以通过CGI连接到Web上去,远程用户通过浏览器发出请求,服务器将请求传递给后端的GIS软件,GIS软件按照要求产生一幅数字图像,传回远程用户[20,147]。
图2-2 基于CGI模式的WebGlS体系结构[20,147]
这种方法的优点在于,运行速度较快,因为它不需要每次启动后端的GIS软件,同时可以利用商业化GIS软件产生高质量的地图。事实上GIS软件的所有功能都可以被利用起来。然而这种方法仍有许多不足之处,首先,很难同时运行多个CGI程序,因为受软硬件的限制,可同时运行的GIS软件的份数通常是有限的,同时亦很难跟踪看出哪个用户用哪份程序。CGI结构中,Client端仅起了一个哑终端的作用,其功能限于向Server发送用户请求和显示所接受的Server的处理结果,Server承担了一切计算功能。这种模式并没有实现真正的分布式协同计算,它仅适用于封闭环境的小型局域网,对于开放型的Internet网络很容易引起服务器的过载。其次,这种方法需要制图软件一直处于运行状态,这不仅要求GIS软件所在的服务器一直联机而且也消耗不少计算机资源。当互联网的流量较低时,这种系统会保持良好的运行状态。但多个用户同时访问服务器时,多个CGI备份的同时运行会导致服务器负载过重而降低效率,使运行速度大大降低。显然,用户产生的每一个事件都要通过互联网,由服务器来处理,当互联网流量较高时,CGI并不是一种理想的技术路线。目前市场上推出的WebGIS系统软件,有一部分就是利用这一原理实现的,如美国ESRI公司的ArcView Server和MapInfo公司的MapInfo Proserver。这种实现方式的风险在于要在目前的Internet/Intranet上发布和传输GIS数据信息的技术难点,一方面是现有的网络浏览器不能读取矢量图形数据。矢量数据在网上传输就得先在服务器端转换成栅格图形数据,如BMP、JPEG等,这样一转换就使数据量增大许多倍,使本已拥挤的网络不堪重负;另一方面,传统的GIS原有的数据类型与Internet/Intranet现有的数据类型相距甚远,要在浏览器上实现原有的许多操作变得很困难。用这种技术方法构造WebGlS具有简单易行的特点,适用于对原有GIS系统的网络化改造[20,147]。
2.Server API方法
Server API类似于CGI,不同之处在于CGI程序是单独可以运行的程序,而Server API往往依附于特定的Web服务器,如Microsoft IISAPI依附于IIS(Internet Information Server),只能在Windows平台上运行,其可移植性较差。但是Server API启动后会一直处于运行状态,其速度较CGI快,如图2-3所示。
图2-3 WebGlS中Server API方法的工作原理
3.Plug-in方法
利用CGI或者Server API,虽然增强了客户端的交互性,但是用户得到的信息依然是静态的。用户不能操作单个地理实体以及快速缩放地图,因为在客户端,整个地图是一个实体,任何GIS操作,如放大、缩小、漫游等操作都需要服务器完成并将结果返回。当网络流量较高时,系统反应变慢。解决该问题的一个办法是利用插件技术,浏览器插件是指能够同浏览器交换信息的软件,第三方软件开发商可以开发插件以使浏览器支持其特定格式的数据文件。利用浏览器插件,可以将一部分服务器的功能转移到客户端,此外对于WebGIS而言,插件处理和传输的是矢量格式空间数据,其数据量较小,这样就加快了用户操作的反应速度,减少了网络流量和服务器负载,如图2-4所示。插件的不足之处在于平台独立性不强,对不同的浏览器具有不同的依赖性。同时,它需要先安装,然后才能使用,也给使用带来了不便[5]。
目前流行的Internet/Intranet网络浏览器均具有应用程序接口(API),目的就是方便网络开发商和用户扩展与网络的相关应用。实际上,这种方法构造WebGIS系统的思路和原理与CGI技术方法有许多相似的地方,所不同的是Plug-in技术方法是在客户端的浏览器上增加一个能识别矢量图形数据的插件。通过这样的插件,使得服务器端的矢量图形数据无须转换就能直接为用户浏览、查询和分析等,大大减少了网络的数据传输量,较好地解决了网络上图形数据信息的传输“瓶颈”[5]。
(www.xing528.com)
图2-4 WebGIS中Plug-in方法的工作原理
美国Autodesk公司的MapGuide就是基于这一原理的WebGIS系统平台。这一系统利用位于客户端的MapGuide Plug-in插件和服务器端的MapGuide Server,通过其特有的“地图窗口件”(MWF)的智能地图文件,这种文件包含一般的地图属性、安全信息、地图图层属性、原始地图数据和用户接口规程等信息来实现基于矢量的图形数据信息的各种操作和管理,包括图形数据的动态发布与图层管理等。这种技术方法的特点是以通用的浏览器为载体或平台,易于操作使用。同时它是嵌入式的插件,它自身所提供的强大的图形及数据库操作功能与浏览器的功能相结合,较好地解决了各种图形与属性数据的全方位浏览、检索、查询和统计分析等操作功能。此外,美国Intergraph公司的Geomedia Map也是采用Plug-in插件技术方法实现的WebGIS系统软件[5]。
4.Java Applet方法
WebGIS插件可以和浏览器一起有效地处理空间数据,但是其明显的不足之处在于计算集中于客户端,称为“胖客户端”;而对于CGI方法以及Server API方法,数据处理在服务器端进行,形成“瘦客户端”。利用Java语言可以弥补许多传统方法的不足,Java语言是一种面向对象的语言,它的最大的优点是其跨平台特性。此外Java语言本身支持异常处理、网络、多线程等特性,其可靠性和安全性使其成为因特网上重要的编程语言。Java语言经过编译后,生成与平台无关的字节代码(Bytecode),可以被不同平台的Java虚拟机(JVM-Java Virtual Machine)解释执行[5]。Java程序有两种,一种可以独立运行,另一种称为JavaApplet,只能嵌入HTML文件中,被浏览器解释执行,如图2-5所示。用Java Applet实现WebGIS,优于插件方法的是:①运行时,Applet从服务器下载,不需要进行软件安装;②由于Java语言本身支持网络功能,可以实现Applet与服务器程序的直接连接,从而使数据处理操作既可以在服务器上实现,又可以在客户端实现,以实现两端负载的平衡。由于Java所具有的这些功能特点,使其成为实现WebGIS分布式应用体系结构的理想开发语言。
图2-5 WebGIS中JavaApplet方法的工作原理
从具体的实现方式上讲,目前利用Java编程语言开发WebGIS系统的方法可分为两种。一种是仅利用Java开发客户端的GIS功能[148],而服务器端仍以传统的开发方式进行开发或干脆对原有的系统进行适当的改造。这种方法的特点是系统开发简单易行,能充分利用原有基础,可以大大缩短系统的开发周期,同时又能保证开发的WebGIS系统具有较强的制图和地理空间分析能力。另一种方法,不管是客户端还是服务器端都是利用Java编程语言从系统的最底层开始开发。这是一种全新的开发方式。但由于这种开发方式一切都得从头做起,系统开发的工作量很大、周期长,具有相当的难度。以上这些技术方法,在基本原理和思路上是有同有异、各有千秋。主要差异是在着重点和技术路线上。这里把它们细分出来,一方面为了突出它们的特点和技术路线,另一方面也是为了叙述上的方便。所以,在具体开发WebGIS系统中,可以同时借用不同的方法,如Autodesk公司的MapGuide的Plug-In插件就与Java Applet标准之间有着较紧密的集成关系。使用JavaApplet和嵌入在HTML文档之中的JavaApplet,开发者能够在最终用户与HTML源文件的交互中,或与Autodesk的MapGuide的内部功能交互中实现双向通信,为开发者开发客户端功能提供了多种选择[5]。
5.ActiveX方法
另一项可以实现WebGIS的技术是ActiveX,它是在微软公司OLE技术基础上发展起来的因特网新技术。其基础是DCOM(Distributed Component Object Model),它不是计算机语言,而是一个技术标准。基于这种标准开发出来的构件称为ActiveX控件,可以像Java Applet一样嵌入到HTML文件中,在因特网上运行。与Java Applet相比,其缺点是只能运行于Windows平台上,并且由于可以进行磁盘操作,其安全性较差,但其优点是执行速度快。此外由于AetiveX控件可以用多种语言实现,这样就可以复用原有GIS软件的源代码,提高了软件开发效率。微软公司的网络构件对象模型COM技术和ActiveX控件技术方法具备构造各种GIS系统功能模块的能力。利用这些技术方法和与之相应的OLE(对象连接与嵌入)、SDE(空间数据引擎)技术方法相结合,可以开发出功能强大的WebGIS系统。如美国ESRI公司于1997年推出的MapObjects就是一个利用ActiveX等技术方法建立的GIS系统软件。MapObjects包括1个ActiveX控件和35个以上的可编程的Active Automation组件,拥有很强的GIS功能和制图功能。用户可调用这些构件来建立自己的WebGIS应用系统。同时支持诸如VB、VC、Delphi和Power Builder等多种开发环境。用这种技术方法构建的WebGIS系统,具有很好的灵活性,扩展能力强,可充分利用客户机/服务器体系结构的优势。目前,在WWW领域,可扩展标记语言(Extensible Markup Language,XML)得到了越来越多的重视。它可以成为一种“元语言”,用于定义特定领域的标记语言。同样在空间信息的Internet发布中,也可以采用XML来定义地理信息的特定语言标记,以简单而一致的方式格式化和传送数据[5]。
支持网络化通信技术标准,对于一个WebGIS的应用至关重要[149]。支持TCP/IP和HTTP,就意味着WebGIS能够与任何地方的数据相连,网络化分布式GIS系统技术应用体系结构的优点是在客户端与服务器端均能提供方便的可执行进程,能有效地平衡客户机端与服务器端之间的处理负载,可以使动态地理数据的提取、分析等进程分配在服务器端进行(因为同一幅地图数据文档可能是来自不同服务器的地图数据或图层)。而空间查询集的选定、地图缩放、平移和专题地图生成等进程任务则分配在客户机端执行。这样可以强化服务器对数据访问的响应性能,使得有更方便的方法实现与空间数据相关的应用分析。这种客户机与服务器之间的进程分布式处理,能够最大限度地发挥现有计算机硬件资源的效用。而且,当对网络性能的需求提高时,只要适当地提高服务器的处理能力就能实现。这种方法可能产生的问题是在当前网络传输能力条件下,由于支持动态地访问地理空间数据信息,对网络的传输速率要求较高。Internet就是以TCP/IP通信技术协议规定、DNS域名服务和SMTP简单的邮件传输协议为基础,以WWW和FTP服务为支撑,实现多服务器和多平台的相互连接的计算机通信网络,目前它已成为企业或部门内外各种信息管理和交换服务的平台[5]。
以上是对WebGIS实现技术的介绍,表2-2对它们的优缺点加以总结。
表2-2 WebGIS多种实现技术的优缺点比较[20]
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。