基于AJAX技术的WebGis系统实践 (1. 快速入门)

来源:互联网 发布:必佳软件 编辑:程序博客网 时间:2024/05/17 04:38

概述

2007-05-20

一.   WebGis简介.

基于Internet的地理信息系统,我们常称为Web-GIS,这主要是由于大多数的客户端应用采用了WWW协议。随着技术的进步,客户端可能会采用新的应用协议,因此也被认为是Internet GIS
1
WebGISWeb 技术和GIS技术相结合的产物,是利用Web技术来扩展和完善地理信息系统的一项新技术。
2
、由于HTTP协议采用基于C/S的请求/应答机制,具有较强的用户交互能力,可以传输并在浏览器上显示多媒体数据,而GIS中的信息主要是需要以图形、图像方式表现的空间数据,用户通过交互操作,对空间数据进行查询分析。这些特点,使得人们完全可以利用Web来寻找他们所需要的空间数据,并且进行各种操作。
WebGIS
InternetWWW技术应用于GIS开发的产物,是实现GIS互操作的一条最佳解决途径。从Intemet的任意节点,用户都可以浏览WebGIS站点中的空间数据、制作专题图、进行各种空间信息检索和空间分析。

      因此,WebGlS不但具有大部分乃至全部传统GIS软件具有的功能,而且还具有利用Intenet优势的特有功能,即用户不必在自己的本地计算机上安装GIS软件就可以在Intenet上访问远程的GIS数据和应用程序,进行GIS分析,在Intenet上提供交互的地图和数据。

      WebGIS的关键特征是面向对象、分布式和互操作。任何G1S数据和功能都是一个对象,这些对象部署在Intemet的不同服务器上,当需要时进行装配和集成。Intemet上的任何其他系统都能和这些对象进行交换和交互操作。

WebGIS的基本特征

WebGIS是集成的全球化的客户/服务器网络系统

WebGIS应用客户/服务器概念来执行GIS的分析任务。它把任务分为服务器端和客户端两部分,客户可以从服务器请求数据、分析工具或模块,服务器或者执行客户的请求并把结果通过网络送回给客户,或者把数据和分析工具发送给客户供客户端使用。

WebGIS是交互系统

WebGIS可使用户在Intenet上操作GIS地图和数据,用Web浏览器(IENetscape,etc.)执行部分基本的GIS功能:如zoom(缩放)、Pan(拖动)、Query(查询)和Label(标注),甚至可以执行空间查询:如离你最近的旅馆或饭店在哪儿,或者更先进的空间分析:比如缓冲分析和网络分析等。在Web上使用WebGIS就和在本地计算机上使用桌面GIS软件一样。

通过超链接(Hyperlink)WWW提供在Intemet上最自然的交互性。通常用户通过超链接所浏览的Web页面是由WWW开发者组织的静态图形和文本,这些图形大部分是FPEGGIF格式的文件,因此用户无法操作地图,甚至连像zoomPanQuery这样简单的分析功能都无法执行。

WebGIS是分布式系统
GIS
数据和分析工具是独立的组件和模块,WebGIS利用Intemet的这种分布式系统把GIS数据和分析工具部署在网络不同的计算机上,用户可以从网络的任何地方访问这些数据和应用程序,即不需要在本地计算机上安装GIS数据和应用程序,只要把请求发送到服务器,服务器就会把数据和分析工具模块传送给用户,达到Just—in—time的性能。

Intemet的一个特点就是它可以访问分布式数据库和执行分布式处理,即信息和应用可以部署在跨越整个Intenet的不同计算机上。

WebGIS是动态系统

由于WebGIS是分布式系统,数据库和应用程序部署在网络的不同计算机上,随时可被管理员更新,对于Intenet上的每个用户来说都将得到最新可用的数据和应用,即只要数据源发生变化,WebGIS将得到更新。和数据源的动态链接将保持数据和软件的现势性。

WebGIS是跨平台系统

WebGIS对任何计算机和操作系统都没有限制。只要能访问Intenet,用户就可以访问和使用WebGIS而不必关心用户运行的操作系统是什么。随着Java的发展,未来的WebGIS可以做到一次编写,到处运行,使WebGIS的跨平台特性走向更高层次。

WebGIS能访问Intemet异构环境下的多种GIS数据和功能

此特性是未来WebGIS的发展方向。异构环境下在GIS用户组间访问和共享GIS数据、功能和应用程序,需要很高的互操作性。OGC提出的开放式地理数据互操作规范(OpenGeodata Interoperablity Specificaton)GIS互操作性提出了基本的规则。其中有很多问题需要解决,例如数据格式的标准、数据交换和访问的标准、OIS分析组件的标准规范等。随着Intemet技术和标准的飞速发展,完全互操作的WebGIS将会成为现实。

WebGIS是图形化的超媒体信息系统

使用Web上超媒体系统技术,WebGIS通过超媒体热链接可以链接不同的地图页面。例如,用户可以在浏览全国地图时,通过单击地图上的热链接,而进入相应的省地图进行浏览。

另外,WWWWebGIS提供了集成多媒体信息的能力,把视频、音频、地图、文本等集中到相同的Web页面,极大地丰富了GIS的内容和表现能力。

WebGIS的基本要求

WebGIS应当是开放的:webGIS能够共享多种来源、多级尺度(比例尺)、存放在不同地点的地理数据,能够和其他应用软件集成,并通过JavaCORBADCOM等技术跨平台协作运行,支持C/S模式等。

WebGIS能在Intemet环境下运行:WebGIS使用Intenet协议标准,将GISWeb服务器集成,通过普通浏览器,用户可以在任何地方操纵WebGIS,共享地理空间信息服务,从而将GIS扩展成为公众服务系统。

WebGIS必须支持数据分布和计算分布:WebGIS服务器为网络用户提供GIS服务:地理数据存取服务、地理数据目录服务、地理信息分析服务和地图显示服务。通过互操作技术,共享分布的数据对象,在多个不同的平台上协同运行,最大限度地利用网络资源。

WebGIS能在网络上直接查询和存取数据:建立地理时空数据结构标准和操作标准,直接在Intenet上查询数据和存取数据。

WebGIS的基础技术

空间数据库管理技术

对象关系数据库技术和面向对象的数据库技术正在逐步成熟起来,成为未来GIS空间数据管理的主要技术。因为关系型数据库管理系统已经相当成熟,商业化的RDBMS不仅支持C/S模式,而且支持数据分布,通过SQL语言和ODBC,几乎所有的GIS软件通过公共标识号都能和其协同运行。

面向对象方法

从面向对象技术的发展来看,它是描述地理问题非常理想的方法。面向对象是一种认识方法。面向对象分析(OOA)、面向对象设计(OD)、面向对
象语言(00L)和面向对象数据管理(OODBM)贯穿整个信息系统的生命周期。面向对象的空间数据库技术正在逐步成熟,空间对象查询语言(SOQL)、空间对象关系分析、面向对象数据库管理、对象化软件技术等,都和GIS密切相关。

客户/服务器模式

客户/服务器的含义非常广泛,数据库技术和分布处理技术都和它密切相关。通过平衡客户/服务器间的数据通信和地理运算,能够利用服务器的高性能处理复杂的关键性业务,并降低网络数据流量:通过规划客户/服务器模式的GIS系统,用户能够最大限度地利用网络上的各种资源。

组件技术

为避免系统重复编码,浪费软件资源,参照制造业成功经验,使用插件(Plug—In)、组件(Activex)和中间件(Middleware)技术组装软件产品:如各软件生产商制作自己最好的组件,其他软件开发人员和系统集成人员,可直接使用该部件提供的功能,无须重新编码,从而扩大了软件开发社会分工,提高了软件生产效率。

分布式计算机平台
Distributed Computing Platform技术,目前有OMGCORBA/Java标准和微软的DCOM/ActiveX标准。

另外与WebGIS相关的技术还包括:多媒体数据操作标准ISO SQL/MM、地理数据目录服务技术(Geodata Catalog Service)、数据仓库技术、地理信息高速公路设施等

 

二.   Ajax之路.

Ajax英文全称是 Asynchronous Javascript and XML : 异步Javascript XML, 20052月才正式提出的一项综合技术, 其主要特点是为Web开发提供异步的数据传输和交换方式, 可以在不重载(Reload) 刷新(Refresh) 的情况夏与服务器进行数据交换和通信.

 

20052, Adaptive Path 公司的Jesse James Garrett 在他的”Ajax : A New Approach to Web Applications” 一文中首次提出了Ajax的概念. Garrett 将一种综合使用 Javascript , XHTML, CSS,DOM, XMLHTTPREQUEST,XML XSTL的技术称之为AJAX. 一直以来, WEB应用程序的交互效果都不如桌面应用程序, 比如客户端功能和用户体验效果, 这点让很多WEB应用程序开发人员和用户耿耿于怀. Garrett 期待AJAX能够消除WEB应用程序和桌面应用程序在系统人机交互和用户体验方面的差距, 至少Google Suggest, Google Maps等产品已经让人们看到了胜利的曙光.

 

其实在Garrent 的文章发表之前, AJAX已经在一些内部的WEB系统中得到了应用, Google 在已将AJAX技术应用到包括Google Suggest, GMAIL等多个软件产品中, 只是这个时候,Ajax技术还深在深闺不为人知”, 业界知之甚少, 原来的AJAX有一个冗长的名字, 异步的 Javascript , css, dom XMLHttpRequest (Asynchronous Javascript +CSS+DOM+XMLHttpRequest).  Garrent 则扮演了临门一脚的角色. Google 所在的这种基于多种XML (异步 javascript XML) 的缩写, 这个形象简短的名字概括了这种技术的特点. 现在 “AJAX” 这个简短形象的缩写已经风靡全世界.

   Garrent 的文章发表后, 业界对AJAX兴趣浓厚, 咨询的信件纷至沓来, Garrent 也专门整理了一份FAQ, 来解答读者的问题, Garrent 的文章和FAQ, 可以完整的看出AJAX的轮廓, 了解AJAX到底是什么.

 

三.   基于.NETAjax框架 AjaxPro

AjaxPro全称为 Ajax.NET Professional是一个基于.NET平台的 ajax开源框架, 利用ajaxpro 可以快速构建Ajax应用程序, ajax的实现原理和大多数的Ajax框架类似如: Atlas ,本文重点探讨ajax技术的应用, 至于框架原理部分, 无需花费过多精力研究. 查看细节请参照: http://sunwaywei.cnblogs.com/archive/2006/04/15/375928.html, Michael Schwarz Blog : http://weblogs.asp.net/mschwarz/.

AjaxPro最新版本为6.0, 可以到官方网站下载得到:

http://www.ajaxpro.net.

上面有很多入门DEMO.

  这里我用一个简单的入门事例来描述ajaxpro的使用方法.

1.        配置Web.config文件.

添加如下结点注册AjaxPro组件.

 

 

<system.web>

  <httpHandlers>

    <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>

   </httpHandlers>

 </sytem.web>

 

2. AjaxPro.DLL添加到项目引用中. 并在类名字空间中添加: using AjaxPro;

3. 定义个服务端方法.

public class ShowMaps

{

[AjaxMethod()]

 public bool AddEntity(string type)

  {

      return true;

 }

}

 

 

 

4. 在页面文件的Page_Load方法中注册改类.

 

protected void Page_Load(object sender, EventArgs e)

{

     Utility.RegisterTypeForAjax(typeof(ShowMaps));

}

 

5 客户端调用.

 

if(Map.MarkInfor.AddMark(_name,mark_x,mark_y).value)

 {

       window.alert("插入成功!");

  }

else

 {

       window.alert("请不要重复插入!");

 }

 

最好使用回调函数方式, 并发一个线程异步接收服务端数据, 可以提高通讯效率, 防止浏览器阻塞.

6. 使用回调函数.

ShowMaps(ShowMaps_CallBack);

Function ShowMaps_CallBack(response)

{

if(response.value)

 {

       window.alert("插入成功!");

 }

else

 {

       window.alert("请不要重复插入!");

 }

 

 


 

总结.

 掌握了上面一些知识. 就等于拥有了一把快速构架WebGis系统的钥匙. Gis系统正是在这些新兴技术的支撑下才得以发展.

 

 

 

参考文献

[1]: http://blog.sina.com.cn/u/4ab600a101000974

[2]: Ajax开发精要.  柯自聪.

[3]: Ajax快速入门和项目实践 (.NET)

[3]: Ajax In Action

[4]: Javascript 权威指南.

[5]: http://weblogs.asp.net/mschwarz/.

[6]: http://www.ajaxpro.net/

 

 

 
原创粉丝点击