http://www.gissky.net- GIS空间站

我要投稿 投稿指南 RSS订阅 网站资讯通告:
搜索: 您现在的位置: GIS空间站 >> 技术专栏 >> WebGIS >> 正文

AJAX在Web-GIS中的运用

作者:中文翻译…    文章来源:本站原创    点击数:    更新时间:2006-8-30
摘要:随着Web平台越来越成熟,我们可以发现有越来越多的令人兴奋的技术出现,这些技术使地理信息系统(GIS)的显示应用达到了一个功能强大且应用广泛的新高度,通过把最新的功能强大的技术整合到GIS系统中去,我们得到了高效率执行的结果,随之赋予了更多的功能。在目前基于浏览器应用程序的开发技术中,AJAX(Asynchronous JavaScript and XML)无疑是最新的技术。在本文中,我们介绍了一个通用的,高效的架构,这个架构把AJAX模型整合到了GIS Web Services显示系统中。

“Integrating AJAX Approach into GIS Visualization Web Services”

Ahmet Sayar1, 2, *, Marlon Pierce1 and Geoffrey Fox 1, 2, 3, 4

1 Community Grids Lab, Indiana University, Bloomington, Indiana, 47404, USA

2Department of Computer Science, Indiana University

3Department of Physics, Indiana University

4School of Informatics, Indiana University

{asayar, mpierce, gcf}@cs.indiana.edu

 

中文翻译 郑翔

zhengsean916@yahoo.com.cn

本文原文来自互联网

2006-8-29

 

摘要:随着Web平台越来越成熟,我们可以发现有越来越多的令人兴奋的技术出现,这些技术使地理信息系统(GIS)的显示应用达到了一个功能强大且应用广泛的新高度,通过把最新的功能强大的技术整合到GIS系统中去,我们得到了高效率执行的结果,随之赋予了更多的功能。在目前基于浏览器应用程序的开发技术中,AJAX(Asynchronous JavaScript and XML)无疑是最新的技术。在本文中,我们介绍了一个通用的,高效的架构,这个架构把AJAX模型整合到了GIS Web Services显示系统中。

1. 导引

       AJAX是基于Web Applications的浏览器的一种重要的开发模型。它使用了几种技术,这几种技术整合在一起并且相互合同工作,从而来创建功能强大的新应用。组成AJAX的模型的有XMLJavaScriptHTTPXHTML,这些技术都是被广泛应用和被大家所熟悉的。高效的Google Mapping就是使用了这一新的,功能强大的模型。

 

       Web Services是自包含的、自描述的、并且是有标准组件的,和早期不一样,现在有了更多紧密联系的分布式对象方法(例如CORBA,另外还有Web Services系统支持的XML消息中心方法),这使得允许我们创建低耦合的,高分布式跨组织的系统,同时Web Services也推广了GIS值得期许的特性,比如建立了一些标准,这些标准提供通用的发布、定位和调用Web服务的规范,Web Services同时使用了被广泛使用的和熟知的技术,比如和AJAX类似的XMLHTTP,既然AJAXWeb Services都是基于XML结构的,那么他们相互之间是可以起到杠杆作用的。

 

       在本文中,首先给出一些我们在目标架构所用到的Web技术的背景信息,这些技术是基于AJAXWeb ServicesGIS Web Services的。在第三部分我们将提及一些关于AJAXWeb Services的相关工作;在第四部分我们先给出一个通用的用来整合Web ServicesAJAX的架构,然后我们将给出实例来验证这些关于整合的概念,其中之一就是基于GoogleGIS Data Server( WFS )的整合,另外一个是基于GoogleGIS Mapping Server( WMS )的整合;在第五部分是未来的工作,第六部分是结论。

 

2 背景知识

       这里提到的整合架构是由GIS领域内的AJAXWeb Services构成的,在这里我们将首先解释一下这些技术和理论,还有他们的优点。

2.1 异步JavaScriptXML

       AJAX是一种Web应用的开发风格,它混合使用了当前的Web技术来提供更具交互性体验的Web应用。AJAX并不是一种技术,它只是包括了开发Web应用程序的一组技术而已,这些技术是JavaScriptHTML、层叠样式表(CSS)、文档对象模型(DOM)XMLXSLT,以及通过XMLHttpRequest来进行通信协议的消息发送。

 

       构成AJAX这些核心技术已经很成熟,并且广泛的应用于Web应用开发领域;AJAX之所以越来越流行是由于它对那些基于Web浏览器应用程序开发者来说有很多的优点,它消除了交互过程中的“停止-开始”的弱点,用户在与服务器交互的过程是异步的,从而使页面上的数据不必一次又一次的全部刷新,并且这些“请求-应答的过程是通过结构化的XML文档——XMLHttpRequest协议完成的。这些特性使开发者能够很容易的把AJAX整合到Web Services中去。

 

       Google开始使用AJAX进行新应用的开发之后,AJAX开始被公众所注视,Google在去年所开发出的重要的产品很多都是基于AJAX模型的,例如Google Groups , Google Suggests以及Google Maps。除了Google的产品之外,Amazon公司在他们的搜索引擎的应用中同样使用了AJAX方法。

 

       客户端的Web应用程序中可以使用AJAX,客户端只需要等待用户自己直接调用XMLHttpRequest协议 APIJavaScript代码执行时间,这样,客户端只需要关注于编写代码和处理不同的Web浏览器。客户端可以使用一些最新开发出来的库来提供更加高级的AJAX服务,并且隐藏那些对不同浏览器的处理,这一方法用来取代使用纯AJAX开发同时还要处理不同浏览器的开发方式,这样的库有DWRPrototypeSajaxAJAX.NET

2.2 OGC GIS Web Services

       OGC定义了一系列的包括数据模型、在线服务在内的GIS标准,这些标准已经广泛的应用于GIS领域,OGC是一个非赢利的国际化标准制定组织,它领导进行对地理数据相关的操作和服务标准的制定。OGC在不同的方面都做出了很大的贡献,不管是在行业领域还是在学术界,这些贡献都是为了创建一个开放的可扩展的GIS软件编写的接口。

 

       GIS有一系列的方法和环境来进行地理数据的显示、操作和分析,地理应用软件的特点之一就是需要整合和共享来自不同提供者的空间数据,来解决整合数据的问题,OGC提出了GIS服务的发布标准定义。

 

       这些Web Services技术的出现克服了传统分布式对象技术的缺陷,并提供了在分布式网络环境下的跨平台跨语言的能力,GIS服务将会在Web Services方法中被更多的实施,空间数据底层架构使得GIS厂商可以共享数据的存储,也使得应用程序能在分布式的环境下运行。GIS从根本上来说,主要涉及对来自不同厂商的不同数据源的数据和服务进行整合。Web Services架构建立了一套在服务和客户端之间的相互连接的标准,这里提到的客户端能很好的支持动态的数据整合,这也是创建空数据底层架构的关键。通过Web Services,不同厂商的分布式GIS服务能够通过运用能共同操作的标准通信协议把GIS服务动态的整合到GIS应用程序中。

 

       OGC服务加入到Web Services中将会如下的好处,包括:

l         分布式:更容易的分发地理数据,使应用程序可以跨平台,跨操作系统,计算机语言等,具有平台和语言的中性特征。

 

l         整合性:对应用程序开发者来说,更容易的整合地理空间功能,更容易的整合数据到用户程序中,也很容易的通过WSDL文件和调用服务功能来创建客户端的程序。

 

l         基础结构:我们可以从很多创建出来的Web Services架构中得到很多好处,这些架构包括开发工具、服务器端应用程序、消息协议、安全架构、工作流的定义等等。

 

       最通用的,被广泛熟知的与OGC GIS服务相关的显示机制有:GIS Mapping ServicesGIS Data ServicesOGCMapping Services叫做Web Map Services(WMS),把Data Services叫做Web Feature Services(WFS)Web Coverage Services(WCS)WFS提供要素模型的数据,这些数据是矢量格式的GML(Geographic Markup Language)进行编码的,WCS提供场模型的数据,这些数据是栅格格式的。

 

3 相关工作模式

       目前有一些著名的致力于整合Web架构的项目或成果已经出现,比如Web ServicesAJAXOGCESRIGIS使用了Web ServicesOGC实际上是一个进行实体标准定义、GIS服务界面发布标准定义的组织,而CubewerxDemisIntergraph是商用GIS开发商,他们把Web Services加入到了他们的系统中。Google MapsKa-MapAJAX模型整合到了GIS显示系统中,Ka-Map是基于AJAXWeb地图网站,他们使用了开源的Web地图开发工具,Ka-Map使用MapServer地图服务器为AJAXPHP提供地图内容服务。上面提到的所有这些成果,都分别用到了Web ServicesAJAX技术。

 

       XML ECMAScript脚本语言E4X是唯一使AJAXWeb Services相互工作的脚本语言,E4X是一种简单的扩展JavaScript语言,而JavaScript使得XML描述非常容易,E4X其实是JavaScript语言的官方名称,ECMA(European Computer Manufacturers Association)就是该制定该标准的机构,在ECMA JavaScript被规范定义为E4XE4X使用所有其他的一体化的AJAX技术,而不需要扩展。

 

       通过E4XXML API将不再是必要的(例如:DOM或者SAX)XML文档成为JavaScript所能理解的本地数据类型之一,你可以很容易的从JavaScript更新XML文档,这些E4X的性质可以用来创建从浏览器调用Web Services,但是支持E4X的浏览器只有Mozilla1.8

 

       E4X用来与Web Services进行交互,但是它同样只是JavaScript的一个扩展版本;如何在SOAP消息中发送请求的问题,以及如何对返回回来的SOAP消息进行操作也都难以解决,如果你在基于AJAX模型的Web应用使用了E4X,你很难将此应用到每一种浏览器。这也是另外一个缺陷。

 

       在我们的方法中,你不必要扩展任何AJAX相关技术,我们用到了AJAX中的所有的几种基本技术,我们的方法使开发者和用户能够容易的整合或者定制他们的应用。

 

4 架构:在AJAX模型中调用Web Services

       在这一部分,我们描述通用的整合了AJAX的基于Web Services的浏览器应用程序架构。在这个架构中有两个主要的角色:客户端的显示和GIS Web ServicesWeb ServicesSOAP协议调用,XML就是通过SOAP来进行消息交换的。

4.1 通用整合架构

       如何在AJAX模型中调用Web Services呢?

图一 AJAX应用程序调用Web Services

       客户端浏览器向服务器代理(JSP页面)发送请求,该服务器代理依次向Web Services发送请求,这个过程是通过使用之前准备好的Web Services Client Stubs实现的, Web Services返回给服务器代理,并呈现给客户端的浏览器。在下面我们将详细的解释这些步骤:

 

       首先,创建一个XMLHttpRequest对象用来进行一个远程描述性的调用;

- var http = new XMLHttpRequest();

 

然后,定义一个URL目标点来进行调用,该URL地址应该是本地的,这个中间代理服务用来给GIS Web Services发送一个合适的请求;

- var url = “proxy.jsp” ;

 

       在次,调用本地代理服务,URL在上面已经给出了参数定义;

- http.open( “GET” , rul + ”?bbox = ” + bbox + … [other parameter-value pairs] …… )

 

proxy.jsp就是一个中间代理服务页面,它用来抓取请求( HttpServletRequest )并且抓取响应( HttpServletResponse )对象,代理JSP仅仅包括一行代码来跟踪HttpServletRequestHttpServletResponse参数,这些参数从前一个页面而来,这些参数都是通过XMLHttpRequest协议来传递的。

       - jb.doTask( request,response )

 

       “请求”和“响应”参数来自用户交互的页面,这个首页包括一些JavaScriptXHTMLCSSJSP来抓取用户所给出的参数,它还用来在屏幕上显示返回结果。

 

       jb”是一个java类的对象,该对象使用它的请求-响应句柄以及Web Service client stubs来创建合适的请求,请求-响应句柄也用来接收和分析从GIS Web Services返回回来的响应对象。

 

       在从GIS Web Service接收到返回对象之后,“jb”对象发送返回结果到首页的XMLHttpRequest对象;

- PrintWriter pw = reponse.getWriter() ;

- pw.write( response ) ;

      

       在用户界面页上的XMLHttpRequest对象通过如下的代码获得这个值;

- http.onreadstatechange = handleHttpResponse

 

这种通用的整合架构可以应用于各种Web Services中;由于每种Web Services的返回类型不同,还有他们所提供的Service API也不一样,所以你应该掌握他们的应用程序所定义的措施和在客户端的需求。

 

       4.2中,我们将通过在GIS领域中重要的应用来验证这个整合框架的可用性和高效性。

 

4.2 应用 – Google MapsGIS显示系统的整合

       这个整合的系统实际上是一组在AJAXWeb Services之间进行调用的活动,这些活动是异步进行的,从用户端返回的对象也是异步的进行的。在4.2.14.2.2中的应用使用了图一所刻画的通用整合架构;本应用中的扩展了组成的地方会有一点小小的不同,这些不同来自那些根据服务提供方API所创建的服务对于请求的差异,还有在屏幕上显示返回数据的不同,但这些都是在实施过程中的差异。

 

4.2.1 Google AJAXWMS的整合

       客户端活动创建的用户参数在并行处理中有两个不同的工作路径,这里的活动被浏览器通过Google Mapping工具所整合。JavaScript通过活动监听器( ActionLintensers )Goolge Binding APIs获得这些活动,并送第二层的对象,如图二所示。

 

       浏览器端的用户界面是一个JSP页面,该页面包括两个JavaScript参考类,其中一个是由Google Map对象所使用,另外一个是被WMS地图图片所使用,它被绑定到Google Map对象中。

 

       根据图二定义架构,Layer-2创建的相互连接已经完成,对于Layer-1来说,Google Mapping应用是通过AJAX Web应用模型和XMLHttpRequest协议实现的,Google通过使用XMLHttpRequest和远程的浏览器中的JavaScript文件来掌控地图的创建。

 

       当我们在WMS中应用这种交互接口类型的时候,我们可以利用所有的OGC兼容的WMS函数,例如“getMap”,“getCapabilities”,“getFeatureInfo”,客户端将是一个瘦客户端;它只接收地图并且把地图放置在Google Map中。放置过程是通过一些高级JavaScript技术实现的。客户端不需要对地图进行渲染,也不需要创建地图图片。地图已经通过WMS返回,并且已经格式化成为了JPEG或者PNG或者TIFF,返回的类型在发送给WMS的“getMap”请求中作为参数给出了类型定义,这些图片在放置之前已经把这写不同的格式转换成为了JavaScript对象了。

 

图二 Google MapsOGC WMS按照图一定义的架构进行整合

 

4.2.2 Google AJAXWFS的整合

       WFS提供了要素模型的数据,这些要素模型数据是通过GML编码的矢量格式数据,GML是根据OGC WFS定义的,它通过 getFeature”的参数得到。GML是以XML编码进行地理信息数据的交换和存储,它包括几何和属性特征。

图三 Google MapsOGC WFS按照图一定义的架构进行整合

       在“getFeature”请求的响应中,GML文件以XML编码通过SOAP进行封装并响应该请求。得到响应之后,客户端获得几何元素数据,最重要最普通的几何元素是点、线串、线环和多边形。GML是一个OGC对要素模型数据描述的一个标准。

 

       虽然Google Mapping API支持其中的两个:点和线串,但是其他的几何元素同样能够通过小的更新可转换成这两种类型。得到这些几何元素之后就可以在Google Map通过“GPoints”和“GPolylines”对象以及“mapOverlayGoogle Map API函数进行绘制和组合。

 

       通过设置返回的GML的非几何元素,以及通过Google API的“GMaker”对象可以实现该架构对OGC WMS服务“getFeatureInfo”函数的支持。所有这些任务都是通过运用XMLHttpRequest APIJavaScript函数实现的。

 

       XMLHttpRequest使用DOM来解析返回的XML结构,如果返回的数据对于服务器太大的话,DOM解析器将抛出“Out of Memory 的异常。为了克服这些DOMGoolge Map反馈的信息,我们使用了Pull Parsing方式来处理,在解析和得到WFS返回的GML文档之后,结果被写入Web浏览器;通过JavaScriptXMLHttpRequest的响应XML调用,浏览器得到结果并对数据进行适当的修改后便在屏幕上进行显示。

 

5 未来的工作

       在未来,我们将继续处理该架构的一些问题。Google Map能够高速的提供地图数据,但是WMSWFS Web Services返回数据却比较慢,这其中的一些原因是由于地理数据的大小和特性造成的,另外一个原因是CPU时间消耗在生成地图图片的渲染算法上了。既然我们没有高性能的服务器和专有网络,我们就必须通过别的方法来提高性能。为了实现这个目标,我们将使用WMSWFS的流(Streaming)版本来得到组成图片的地理数据,相应地,GML通过消息中间件进行处理,例如,印第安纳大学CGL(Community Grids Lab.)NaradaBrokeringNaradaBrokering提供了GIS领域中一些重要的特性,这些特性有QOS(Quality of Service)和消息收发的安全机制,可靠的持续不断消息的存储的接口,通过WS-Reliable消息可以可靠的进行消息的分发,数据的容错处理,支持不同的通讯方式(TCPUDPMulticastSSLRTPHTTPDiscovery service to find nearest brokers / resources(高效的路游) )。您可通过我们的官方网页(GIS Research at Community Grids Lab, Project Web Site: http://www.crisisgrid.org/ )来获取我们最新的研究信息。

 

6 结论

       如果GIS显示客户端从桌面浏览器应用程序使用Web Services,如果Web Services能够响应够迅速,那么通过AJAX模型来调用Web Services执行效率也会得到提高。由于AJAXWeb Services都使用了XML作为基础来进行请求-响应的通讯,他们之间是可以起到杠杆作用的,这使应用程序开发人员可以容易的把基于浏览器应用程序的AJAX整合到Web Services中。

 

       在摘取和显示那些在地图上通过点击选择出的特定要素的信息方面,仅仅只使用Google Maps会有一些不足;通过在一些应用程序中使用GIS Web Services,并且把这个部分分配到WMS中,可以消除掉Google Map的一些缺点,并且可以运行得更快。由于Google Map API使用了DOM解析器,如果数据对于服务器来说太大的话,DOM将不可能进行解析,从XML(GML)描述的地理数据获取特征信息也将不可能;通过把GIS Web Services整合到显示应用中,通过使用Pull Parsing技术就可以消除这些缺陷。

 

       在我们的目标架构设计的方法中,我们没有更改或者扩展任何AJAX模型或者Web Services的技术,通过使用这些理论标准,你可以把任何GIS Web Services整合到应用程序的显示中去,而这只需要做一些应用程序规格上的扩充,例如,根据Web ServiceAPI创建请求,然后操控返回过来的对象。

 

7 感谢

       该项目得到了NASAEarth-Sun System Technology OfficeAdvanced Information Systems Technology Program的支持,本项目是由国家科学基金会的National Middleware发起的。

 

8 参考资料

[1] OGC (Open Geospatial Consortium) official web site http://www.opengeospatial.org/

 

[2] Booth, D., Haas, H., McCabe, F., Newcomer, E., Champion, M., Ferris, C., and Orchard, D. “Web Service Architecture.” W3C Working Group Note, 11 February 2004. Available from http://www.w3c.org/TR/ws-arch

 

[3] Jesse James Garret, Ajax: A New Approach to Web Applications. http://www.adaptivepath.com/publications/essays/archives/000385.php

 

[4] Murray G., “Asynchronous JavaScript Technology and XML (AJAX) With Java 2 Platform, Enterprise Edition” http://java.sun.com/developer/technicalArticles/J2EE/AJAX/

 

[5] Jerome Sonnet, Charles Savage. OGC Web Service Soap Experiment Report 0.8 Document#03-014, Jan 2003.

 

[6] Message based middleware project at Community Grids Lab, Project Web Site: http://www.naradabrokering.org/

 

[7] Pallickara S. and Fox G., “NaradaBrokering: A Distributed Middleware Framework and Architecture for Enabling Durable Peer-to-Peer Grids” ACM/IFIP/USENIX International Middleware Conference Middleware-2003, Rio Janeiro, Brazil June 2003

 

[8] GIS Research at Community Grids Lab, Project Web Site: http://www.crisisgrid.org

 

[9] MapServer official web site http://ms.gis.umn.edu/.

 

[10] Ka-Map official web site http://ka-map.maptools.org/.

 

[11] Tyler Mitchell, “Build AJAX-Based Web Maps Using ka-Map”

http://www.xml.com/pub/a/2005/08/10/ka-map.html.

 

[12] de La Beaujardière, J. editor, 2002. Web Map Service Implementation Specification, Version 1.1.1, OGC 01-068r3. http://www.opengis.org/techno/specs/01-068r3.pdf

 

[13] Evans, J. eds, 2003. Web Coverage Service Implementation Specification, OpenGIS® Project Document OGC 03-065r6, http://www.opengis.org/docs/03-065r6.pdf

 

[14] ISO, 2001. ISO 19119: Geographic Information – Services. http://www.isotc211.org.

 

[15] Vretanos, P. A. editor, 2002. Web Feature Service Implementation Specification, Version 1.0.0 OGC 02-058. http://www.opengis.org/techno/specs/02-058.pdf.

 

[16] Sayar A., Pierce M., Fox G. “OGC Compatible Geographical Information Services”, Technical Report (Mar 2005), Indiana Computer Science Report TR610.

 

[17] Sayar A., Pierce M., Fox G., “Developing GIS Visualization Web Services for Geophysical

Applications” ISPRS 2005 Spatial Data Mining Workshop, Ankara, Turkey.

 

[18] EcmaScript web site http://www.ecmainternational.org/

Tags:AJAX,WebGIS  
责任编辑:gissky
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 中国地图