Ajax技术与Web GIS

2024-05-03

Ajax技术与Web GIS(精选4篇)

篇1:Ajax技术与Web GIS

Ajax技术在WebGIS开发中的应用研究

研究了基于Ajax的异步WebGIS实现技术,并在ArcIMS平台上实现了基于Ajax的异步WebGIS应用.研究表明:Ajax技术与WebGIS结合,能够实现浏览器与地图服务器之间的异步交互,与传统的.WebGIS应用相比,减少了冗余,减轻了请求和响应对服务器造成的负荷,使整个WebGIS的性能达到最佳状态.

作 者:师俊峰 邹峥嵘 SHI Jun-feng ZOU Zheng-rong  作者单位:中南大学,信息物理工程学院,湖南,长沙,410083 刊 名:测绘与空间地理信息 英文刊名:GEOMATICS & SPATIAL INFORMATION TECHNOLOGY 年,卷(期): 32(2) 分类号:P208 关键词:Ajax   异步交互   WebGIS   B/S  

 

篇2:Ajax技术与Web GIS

随着计算机技术和Internet的迅速发展以及人们对空间信息的需求的日益增加,作为Internet与GIS相结合的产物的WebGIS得到了广泛应用,同时,WebGIS的实现方法与技术也得到了很大程度的改进和发展。各大GIS厂商在改进自己产品时,也将最新的技术融入其中,Ajax在Web方面的广泛应用也受到了各大GIS厂商的重视。Google在2004年初推出的Google Maps采用了特有的Ajax技术——AJAXSLT;ESRI从ArcGIS 9.2版本开始,在ArcGIS Server和ArcIMS的应用开发框架(ADF)中就已包括了一个应用丰富和方便开发的Ajax API;MapInfo在MapXtreme 2005 Web中使用Microsoft’s ASP.NET Ajax控件,可以让用户建立高性能互操作地图应用,以提高网络应用的可用性和响应速度;AutoDesk在MapGuide 6.5之后,引入了Ajax Viewer使MapGuide可以工作在Linux平台之上,等等[1]。将Ajax应用于WebGIS,通过Ajax的异步通讯模式,可实现客户端可视化图片分区异步下载,具有良好的交互性能,带给用户一种全新的Web使用体验,但基于Ajax的WebGIS的空间数据处理和地图发布能力不够强大;ArcIMS能提供强大的空间数据处理能力且能快速地发布地图服务,它通过ArcXML形式传输数据与图片并在客户端浏览器中以图片方式显示结果(HTMLViewer),但这种栅格地图是静态的,缺乏交互性,客户端的体验比较差,响应速度也不够理想。所以充分利用Ajax与ArcIMS的优点并结合二者在客户端和服务器端的缓存技术来开发WebGIS,不仅能快速地为用户提供具有强大的空间数据能力的地图服务,同时也将更大幅度地提高WebGIS用户体验,使WebGIS的性能达到最佳状态。

1 相关技术研究

1.1 Ajax技术及其实现原理

Ajax结合了Java技术、XML以及JavaScript等编程技术,由于其具有异步的数据请求和Web页面数据的无刷新改变等特性,提高了数据交互的速度,极大地改善了Web应用的可用性和用户的交互体验。目前Ajax已成为了Web应用的主流研发技术,广泛应用于Web 2.0与富客户端的Web中,IBM、Yahoo!、BEA等大型IT公司也已启动了Open Ajax项目,Microsoft研发了自己的基于ASP.NET的Ajax框架Altas,Oracle的Java EE也将Ajax技术列入其中,Google的Google Maps、GMail、Google Suggestion等等,其中,基于Ajax技术构建的Google Maps提供了远远超越其竞争对手的地图服务的交互体验,最终使得Google Maps脱颖而出,获得了用户的青睐。

Ajax综合运用了XMLHttpRequest、DOM、JavaScript、XHTML和CSS、XML和XSTL等技术,其中XMLHttpRequest、JavaScript和DOM是Ajax技术的核心。传统的Web模型与Ajax模型比较[2,3]如图1所示。

从图1中可以看出,与传统Web应用模型不同的是在客户端插入了一个JavaScript语言编写的Ajax引擎来实现客户端与服务器通信,Ajax引擎将客户端的页面剥离为数据层、控制层和表现层。浏览器中的各类数据被组织成一棵DOM树,Ajax引擎可针对不同的操作触发相应的事件,浏览器利用JavaScript处理DOM数据并依据XHTML和CSS规范进行界面的绘制。结构的明晰为异步应答奠定了基础,所有与服务端的通信都被集中并提交给XMLHttpRequest对象来处理,该对象封装了XML-RPC协议,支持异步请求,是与服务端通信的专用线程。简而言之,通过XMLHttpRequest对象可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户[2]。

Ajax的实现原理如下:

首次加载:与传统Web应用程序相同。首先,用户在浏览器中输入URL或单击了一个外部链接时,将引发浏览器的一次HTTP请求。随后,服务器响应了用户的请求,生成相应的HT-ML、CSS及JavaScript代码,并发送到客户端,最后,在浏览器上显示根据HTML所定义的Web页。

后续操作:这与传统Web应用程序完全不同。用户的操作不会再引发浏览器的一次HTTP请求,而是引发客户端的某段JavaScript代码的执行(JavaScript初始化了一个XMLHttpRequest对象,由它向服务器发出异步请求,获得数据),服务器收到XMLHttpRequest对象的请求后,开始根据请求进行处理,并返回客户端所需要的数据(以XML或XSLT或普通HTML的形式);客户端接收到数据后,执行回调函数callback(),当结果以XML数据格式返回到浏览器后再由浏览器端的Ajax引擎解析数据并采用基于DOM的XHTML和CSS等形式呈现结果。

1.2 ArcIMS平台概述

ArcIMS是ESRI公司推出的新一代基于Internet/Intranet的可动态发布GIS数据及实现基本GIS功能的WebGIS平台。ES-RI公司把它按照MVC模型划分为3层:展示层(对应于View层)、事务逻辑层(对应于Controller层)、数据存储层(对应于Model层),如图2所示。

展示层是客户端或浏览器,通过HTTP协议与Web服务器建立通讯联系。

逻辑事务层由多个组件聚合而成,包括Web服务器、连接器(Connector)和Web应用开发框架(Web ADF)、ArcIMS应用服务器(ArcIMS Application Server)和ArcIMS空间服务器(ArcIMS Spatial Server)等。其中,Web服务器将客户端的HTTP请求转发ArcIMS Application Server责将响应结果回送到发出请求的客户端;Connector和Web ADF提供了一个在Web服务器、ArcIMS Application Server和第三方应用服务器之间的通讯管道;ArcIMS Application Server负责将来自Web服务器的请求分配到合适的ArcIMS Spatial Server上;空间服务器是ArcIMS产生地图图像文件和与地图相关信息的核心对象,通过一个或多个函数来处理它收到ArcXML请求,并将地图和数据绑定以适当格式(ArcXML或二进制流)返回给客户端供后者解析。

数据存储层主要负责空间数据、属性数据及其元数据的存储管理,包括各类数据、GIS平台、数据库平台等。

ArcIMS的工作原理当一个请求从客户端发出的时候,首先会被Web服务器收到,然后通过Web ADF或Connector发送到ArcIMS Spatial Server,ArcIMS Spatial Server再将请求发送到某个ArcIMS Spatial Server进行处理,而ArcIMS Spatial Server生成响应的信息再按发送时的反方向原路传回给客户端。

2 Ajax与ArcIMS相结合的WebGIS方案

2.1 基于Ajax与ArcIMS的WebGIS的工作原理

基于Ajax的WebGIS其实质是在客户端采用Ajax技术,将客户端的请求交给Ajax代理处理以实现异步发送请求和接受响。采用Ajax技术结合ArcIMS的地图切片(瓦片堆叠)技术,用户已经获取的信息不再刷新,这样就可以有效地降低服务器端压力和网络流量,并且也会增强客户端的使用感受。基于ArcIMS的WebGIS具有较强的空间数据处理、分析和发布能力,并能让发布者快速地定制各种GIS应用。基于ArcIMS的WebGIS的任何地图操作,都是客户端向连接器发送一个ArcXML格式请求,连接器接收到请求后,将其解析转发给地图服务器,地图服务器将产生的结果,无论是矢量格式还是栅格格式的响应,也通过ArcXML格式数据反馈给连接器,连接器再将这个结果作为响应结果发送给客户端。在标准的浏览器客户端中,ArcIMS使用Frame(框架)模式的隐藏Form(表单)来发送请求和接收响应,对于这个请求/响应循环的实现,我们现在可以使用Ajax来实现,无须用Frame来实现。另外,在ArcIMS 9.2版本中已有完全封装好的Web ADF,该ADF将封装所有的ArcXML,与Ajax技术密切结合起来。因此将两者结合来开发WebGIS,对于使用地图数据的客户和发布地图数据的服务者都会从中受益。基于ArcIMS与Ajax的WebGIS体系结构如图3所示。

下面以地图的拉框查询为例说明Ajax与地图的异步交互过程。

1)在浏览器端,用户通过拖动鼠标拉框选择地图上的某个区域,进行查询操作。

2) Ajax引擎得到用户当前操作的比例尺、视场范围以及鼠标屏幕坐标,客户端会创建XMLHttpRequest的对象实例http_request。使用http_request.open()方法建立调用,并设置请求URL及请求方法(get或者post)。

3)使用onreadystatechange属性指定查询的回调函数:http_request.onreadystatechange=getSelect。

4)在客户端,将屏幕坐标换算为地理坐标,以异步方式读取相关数据;使用http_request.Send()方法向服务器发出请求。该方法是异步,请求发出后立即返回,在服务器处理请求时浏览器进程不阻塞等待结果,因而可以继续响应用户其他的操作。

5)指定返回数据解析方式xmldom=http_request.responseXML;在Web服务器端解析请求参数,Web服务器根据不同的请求分别访问ArcIMS服务器的WMS服务对象并对请求参数进行解析,将客户端传递过来诸如坐标系统、目标图层、请求数据范围以及图片格式等参数封装成一个瓦片请求对象,并把绘制好的地图图像保存为JPEG或GIF文件将其传递给缓存管理器。

6)缓存管理器首先基于瓦片请求对象携带的参数来构建该瓦片所对应的空间索引值,然后通过查询语句(表达式)在瓦片空间索引表中快速查询,若有结果返回,表示被请求瓦片存在,则缓存管理器将当前请求转换成标准的WMS请求,并将该WMS请求提交给后端WMS服务器做相应的处理,将接收到的结果图片再进行瓦片切图,然后将新产生的瓦片存入缓存并更新瓦片空间索引表;如果在空间索引表中没找到该请求的瓦片空间索引值,则表示缓存器中不存在该瓦片,则缓存管理器构造被请求瓦片的URL并作为响应结果赋给http_request对象的responseText属性。

7)在客户端,http_request对象调用http_request.Onreadystatechange指定的回调函数,得到经过封装的响应。在该函数中取出xmlhttp.responseText属性中包含的地图图片URL,通过JavaScript解析响应并赋给页面DOM对象中代表地图的Image对象,将返回的地图坐标换算成屏幕坐标,在客户端浏览器中完成绘制并叠加在地图或影像上,完成对地图图像的更新。

2.2 基于Ajax与ArcIMS的WebGIS的混合缓存技术

基于Web的缓存技术的基本思想就是利用客户访问的时间局部性原理,在距用户较近的结点的缓存中存放用户频繁访问或访问过的内容的一个副本,当重复请求该内容时,不必连接到驻留网站,而是由Cache中的副本直接提供,从而减轻服务器的负担,降低网络拥塞、通信和存储代价,可明显提高WWW的性能。缓存的内容可以存放在客户端和服务器端(可以是虚拟服务器或代理服务器),其中,基于客户端的缓存技术,虽然可以提高单个用户的访问速度,但多个客户端之间却不能共享缓存信息,而基于服务器端的缓存技术对于不同用户的相同数据请求都要进行重复处理,从而导致不必要的代理处理开销。

本文提出的基于Ajax与ArcIMS的WebGIS的混合缓存技术就是在客户端缓存和服务器端缓存的协同作用下一起提高WebGIS系统的事务处理能力,借助Ajax客户端缓存技术将ArcIMS服务器端缓存的地图切片无缝地拼接在一起,即可得到用户所需的地图,以此大大提高了地图预览速度从而增加了用户体验。

2.2.1 ArcIMS基于瓦片金字塔模型的地图预生成技术

瓦片金字塔模型是一个多分辨率的层次模型,采用的是线性四叉树瓦片索引或哈希格网索引、分级分块存储。传统的WebGIS是由客户端向地图服务器发送请求,地图服务器实时生成地图返回给客户端,它反映地图的现势性。瓦片金字塔模型利用预生成技术在服务器硬盘目录下存储规则的瓦片地图,一般将指定范围的地图按照指定尺寸(如256,300,512等)和指定格式(如JPEG、PNG、GIF等)切成若干行及列的正方形图片,切图所获得的地图切片也叫瓦片(Tile),瓦片的获取由ArcXML请求与响应来实现;在客户端进行地图请求时采用四叉树索引直接返回预生成的瓦片地图,其响应速度要快于传统的WebGIS,同时也大为减轻了地图服务器的负载压力。

瓦片金字塔模型要实现的关键问题有以下几个方面:地图切片与地理坐标的正反算、地图切片的生成技术、地图切片的存储管理策略及其网络发布与应用,其步骤如下[6,7,8]:

1)地图切片与其真实地理坐标之间的正反算切片之后的地图瓦片是栅格图像,丢失了空间属性,必须相关切片算法方可计算出位置信息。为了实现地图的无缝拼接与浏览以及其他空间属性数据与地图切片的关联,就需要研究存储的地图切片及其每一个图片像素与其真实地理坐标之间的对应关系。在地图切片的存储命名时可以包含该切片的层号、行号、列号等信息,这些信息可以作为地图切片与其真实地理坐标之间换算的关键参数。

地图切片的层号、行号、列号分别用k、i、j表示,某点的经度、纬度分别用x、y表示。则正反算的公式分别如下:

正算,第k级下的第i行、j列的地图切片的坐标范围计算公式:

式中:minX、maxY分别表示第k级地图切片的x、y的极小、极大值;Δx、Δy表示地图切片的横纵坐标的差值,m和n分别表示第k级地图切片的的行、列数。

反算,由x、y坐标值计算出地图切片的行列号j、j:

2)请求地图图形从返回结果ArcXML中解析地图图形文件得到地图图形地址。

3)分割地图选取计算出来的地理坐标范围的一个起始点开始对该固定范围进行切图,对不同级别瓦片采用四叉树的数据结构,第n级的一张瓦片到第n+1级将切割为四张。地图分割是由服务器端Servlet框架提供的服务完成的,参考代码如下:

4)地图图形瓦片存储对各个级别切割完成的瓦片按照瓦片切割等级、相应等级的切图行数、相应行下的切图的列数进行分级组织存储,便于客户端对瓦片库进行索引和查找。

5)地图下载显示利用客户端开发技术(Flex,Silverlight,Ajax,XML,VML等)根据提供的地图参数(k,i,j)从服务缓存中无缝拼接并下载地图图形瓦片显示在客户端。

2.2.2 基于Ajax的客户端缓存技术和ArcIMS的服务器端缓存技术

基于Ajax的客户端,通过Ajax引擎来实现页面更新。处理过程描述如下:

有新的页面数据需要更新时,页面调用JavaScript函数向引擎发出请求。引擎检查本地是否已存在页面数据,若存在则直接显示,否则检查是否已向服务器发出数据请求,若发出则等待数据更新,否则向服务器发送请求,而且在没有收到服务器发送结束的通知之前,一直向服务器发送数据请求。同时Ajax引擎监听服务器返回状态,当获取返回的所有XML数据后合成图片,并将其置于页面的相应位置上。

ArcIMS的缓存根据应用需求,分为融合缓存、多图层缓存以及按需缓存。其中,融合缓存把所有图层群组在一起生成切片块,多层缓存则为每个图层建立切片块,可以支持客户端控制图层显示、标注和要素选取,按需缓存则不是事先生成切片,而是根据客户端首次访问请求创建切片,可以节省空间和缓存创建时间。ArcIMS缓存由目录和配置文件组成,并根据一定的规则命名,如LXX、RXX、CXX,支持与ArcGIS Online、Google Map、Virtual Earth等的地图叠加,因此在创建缓存中支持按照GMAPS或VW的Scale的规则来创建缓存,实现地图集成应用[11]。

3 网吧监控系统的实现

网吧监控系统主要实现辖区网吧的实时监控,包括网吧联网状态监控、视频监控、消防安全(火灾和治安)等常规监控功能,另外,还包括网吧和摄像头的删除、添加和修改、视频的播放以及常见的GIS操作等功能。为了做到监控的实时性和减少网络流量,本系统选用ESRI公司的ARCIMS 9.2作为WebGIS平台,利用ArcIMS平台的快速的地图发布能力,结合Ajax技术和Java的SSH框架进行开发,对HTML Viewer自身的隐藏帧进行改进或替换以弥补页面动态更新的不足;数据库采用混合型数据管理模式:以ESRI的Shapefiles文件存放空间数据,SQL Server 2005存放属性数据,两者通过同一ID号实现无缝连接。

3.1 Ajax在系统中的应用

在ArcIMS的HTML Viewer是一个“瘦”的客户端,完全依靠HTML和JavaScript来完成和用户的交互,通过使用Ajax结合ArcXML处理客户端与服务端之间复杂的信息交换。

例如,网吧状态预警功能,当网吧掉线或连线异常,或人工报警时,系统可以触动显示警报图片和警报信息,并将相应网点定位到地图中央。因为本系统采用的是基于HTTP协议的B/S架构,服务器端无法主动向服务端发起连接,故在设计时,我们在客户端设计了一个轮循的Ajax,用于定时向服务器查询实时的网吧状态信息,当检测到有警报信息时,由JavaScript控制完成警报信息的显示以及网点位置定位等功能。

图4是网吧状态预警功能的核心代码。

图5为“开心网吧”断线时地图显示结果。

3.2 ArcIMS的地图预生成技术在系统中的应用

ArIMS服务器将地图切毕之后可将其放置于本地或服务器的虚拟目录中以方便访问,当有某用户请求地图服务是,ArcIMS的响应将返回一个ArcXML文档,内容如下:

从上面的ArcXML文档的格式可以看出,客户端每当需要请求服务器生成一张新的图片时,都可以在表示请求信息的ArcXML文档中指定图片显示的地图区域、图片尺寸、各图层的信息(另外还有添加比例尺、指北针等)。在Viewer中JavaScript需根据客户端的操作,如:移动、放大、缩小、拉框选择、图层选择等,进行针对minx,maxx,miny,maxy经纬度的运算变换或图层信息的维护,然后在每次需要刷新地图结果图像的时候将这些信息提交到服务端。

4 结语

传统的基于ArcIMS的WebGIS在进行诸如地图缩放、平移、查询等操作都会刷新整个地图,对空间服务器压力很大,处理起来也很复杂,严重阻碍了WebGIS的发展。随着Ajax技术的出现,在客户端,结合浏览器端的图片缓存技术以及Ajax的“按需获取数据”和无刷新更新页面特点,可实现最小量的数据传输,即只更新需要更新范围内的地图图片内容,减少了数据的实际读取量和用户心理和实际等待时间;在服务器端,结合缓存技术和金字塔切图技术,从ArcIMS服务器传来的不是整个地图的图片,而是一个包含按需处理的图片的ArcXML文件,再交由Ajax引擎利用客户端闲置的能力进行显示处理。这样大大减少了网络流量,提高地图操作的反应灵敏度,为WebGIS在功能及性能与用户体验之间找到了平衡点。

摘要:介绍Ajax技术及其实现原理、ArcIMS的体系结构和工作原理,提出基于ArcIMS与Ajax的WebGIS的方案,并将该方案应用于网吧监控系统的开发。实验表明,综合运用Ajax的异步机制以及Ajax与ArcIMS的混合缓存技术实现的WebGIS,较好地实现浏览器与地图服务器之间的异步交互,均衡了服务器和客户端的负载、提高了用户体验,使整个WebGIS的性能达到最佳状态。

关键词:Ajax,ArcIMS,WebGIS,混合缓存技术,瓦片金字塔

参考文献

[1]彭义春,韩晓龙.基于ArcIMS的公众查询系统的研究与实现[J].电脑编程技巧与维护,2009(20):5-7.

[2]吴运超,王汶,牛铮,等.Ajax在WebGIS中的应用[J].地理与地理信息科学,2007,23(2):43-46.

[3]师俊峰,邹峥嵘.Ajax技术在WebGIS开发中的应用研究[J].测绘与空间地理信,2009,32(2):131-133.

[4]康凯,白伟.Ajax及缓存技术在WebGIS开发中的应用[J].测绘工程,2010,31(6):43-47.

[5]ESRI中国(北京)有限公司.ArcGIS 10产品白皮书[M].2010 -12.

[6]陈中林,姜贞白,龚建辉.基于ArcIMS按需切图在构建WebGIS地图框架中的应用[J].测绘与空间地理信息,2009,32(2):80-82.

[7]谭庆全,薄涛,乔永军,等.基于ArcIMS实现切片式WebGIS及其在地震应急中的应用[J].防灾科技学院学报,2011,13(1):65 -68.

[8]王小军,刘璐.基于ArcGIS Engine进行瓦片式切图的技术研究[J].测绘与空间地理信息,2010(8):49-51.

[9]魏祖宽,胡娟,金在弘.WEBGIS混合缓存的应用与研究[J].计算机系统应用,2009(9):144-148.

[10]Xue Lei,Li Lin,Long Wang.The Exploitation of WebGIS Based on ArcGIS Server and Ajax[C]//IFIP International Federation:for Information Processing,Volume 293,Computer and Computing Technologies in Agriculture II,Volume,2009.Boston:Springer,2009.

篇3:Ajax技术与Web GIS

关健词:AJAX;WebGIS;权限管理系统

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2010) 04-0000-03

Design&Implementation of WebGIS Access Control System Based on NET&AJAX

Zhong Weixiong

(China Geosciences University,Information Engineering College, Wuhan430074,China)

Abstract:This article has elaborated in detail the whole process of how to design and realize the Access Control system under the .NET platform using the AJAX technic,including the site verification mode,the site login way,the Access Control management's database design,the Access Control navigation tree's design,the interface of Access Control management’s design and so on. The author also has proposed the different methods for each step,and contrasted various methods good and bad points, in order to seeking one kind the Access Control system which is most suitable for WebGIS application, in aspects such as security, flexibility, integrity,maintainability and so on.

Keywords:AJAX;WebGIS;Access Control System

GIS是一门集计算机科学、信息科学、现代地理学、测绘遥感学、地图学、环境科学、城市科学、空间科学和管理科学等为一体的新兴学科[2],WebGIS是Internet技术应用于GIS开发的产物[3]。由于GIS的地理底图数据和属性数据本身就涉及到安全与机密问题,加上Internet这个复杂的环境,使得WebGIS的网络安全和权限管理显得尤为重要,另外GIS应用的特殊性,在权限管理系统的设计和实现上也有其特殊的要求。

一、站点验证方式

.NET框架下,ASP.NET提供了四种用户验证方式:Windows身份验证(Windows)、窗口身份验证(Forms)、Passport验证(Passport)以及IIS身份验证(None)[4]。对比四种验证方式,在WebGIS应用下,最适用的就是Forms验证方式。该方式在虚拟目录的web.config文件中设置,具体如下:

首先,指定应用程序或目录的验证类型:

然后,设置禁止所有非登陆用户访问:

最后,再设置非登陆用户可以访问的个别目录或文件:

至此,站点的验证方式就设置好了,但是这只是第一步。

二、站点登陆方式与设计

站点登陆采用单点登录(Single Sign On)方式,单点登陆简称SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制[5]。单点登录采用用户认证凭证ticket,ticket合法则通过验证,这样用户可以在不再次登陆的情况下访问本系统的其它系统。具体设置简介如下:

FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket(1, 用户名,时刻,时间,

false,角色名,"/");//创建一个ticket

string HashTicket = FormsAuthentication.Encrypt(Ticket);//对该ticket进行加密

HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName,

HashTicket);//新建一个cookie

Context.Response.Cookies.Add(UserCookie);//将该cookie写入Response

登陆界面的设计有两种方式,一种是直接利用asp.net自带的登陆控件,这种控件直接集成了用户注册,登陆,忘记密码,登陆后根据权限的不同而显示不同的页面等功能。另一种方式是自己编写组合登陆控件。显然,前一种方式编写容易,但不够灵活,不能满足具体的需求,后一种方式是我要重点介绍的。

在站点登陆里,从安全角度考虑,我们必须设置验证码验证,以防止机器软件注册登陆;从用户体验角度考虑,我们必须使用AJAX技术,给用户即时提示而不刷新页面。如图1所示,2JPN验证码是在后台用C#随机生成的图片,防止机器狗注册和登陆。而根据用户输入不同的内容给出不同的即时提示如“用户名长度不对”等,以及当信息没填完整时登陆按钮是发灰的,都是采用的AJAX技术,用来增强用户体验。

图1使用AJAX技术和验证码的站点登录

三、权限管理设计

权限管理,我们采用windows系统经典的用户、角色、权限方式。可以简单表述为:判断“Who对What(Which)进行How的操作”[6]。即每个用户都属于某个或多个角色,每个角色都拥有一个或多个权限。把它想象成单位的人员管理,即每个员工都属于某个或多个部门,每个部门都拥有一个或多个权利,就很好理解了。

.NET框架下,实现用户、角色、权限的权限管理有两种方式:

一是采用asp.net中新引进的框架membership,利用Web站点管理工具来创建新的用户和角色,以及控制对Web应用程序中页面的访问。使用该工具能使不具备编程技巧的用户都可以方便地通过拖拉控件来配置Web应用程序,再加以少量的代码,就可以完全实现对用户、角色、权限等的管理。这一种方式有其致命的缺点,就是数据库必须用SqlServer,而且角色和权限的配置也不能完全满足WebGIS的应用。

另一种是自行建库,自行编码。该方式可扩展性好,适合任何数据库,可以完全满足WebGIS权限管理的要求。该方式的实现如下:

(一)数据库设计

在数据库中建立五个表,其中三个信息表:用户表(User)、角色表(Role)、权限表(Module);两个关系表:用户角色表(UserRole)、角色权限表(RoleModule)。如图2所示。

图2权限管理系统的数据库表

(二)登陆后跳转的页面:获取已登陆的用户名,并转换为相应的角色名。代码如下:

userName = Context.User.Identity.Name;//获取当前已登陆用户的用户名

roleName = userRole.UserID2RoleName(userName);//查询数据库UserRole表,获取角色名

(三)权限设置导航树:对相应的角色进行权限的控制

对于通常的应用,我们可以直接查询数据库表RoleModule获得角色和权限的对应关系,但对于WebGIS应用的特殊性,可以采用更为直观的方式,即采用XML文件方式:将地图数据资源的名称以树节点的形式存储在XML文件中,通过更改和读取该XML文件的每个树节点的角色子节点的值,达到更改和获得该节点的权限值。如:

-

DRG.ICO //节点图标

$[ConfigRoot]弹出菜单专题图菜单.xml

GDBP://sde:sde@NFGIS/SDE/sfcls/SDE.BOUNT_WL //对应数据文件

100 //最小显示的比例尺

800000 //最大显示的比例尺

高级注册用户 //“高级注册用户”角色有查看该节点的权利

这样,可以直观的对某个角色值赋予是否拥有导航树节点上任意节点的权力。如图3所示,我们选中角色“测试员0512”后,再在导航树上选中roalk.wl、roalk.wt、roalk_hig.wl节点,点击确定后即给角色“测试员0512”赋予了拥有roalk.wl、roalk.wt、roalk_hig.wl节点的权限值。

对于节点树的构造,我们推荐使用AJAX方式动态构造,这样的好处是,点击某个节点展开其子节点时,页面不刷新,即提高了效率,又增强了用户体验[7]。

图3权限设置导航树

四、权限管理界面

权限管理界面是为超级管理员对各种用户、角色、权限、用户角色、角色权限进行任意增、删、改、查询等操作提供的一个可视化管理界面。如图4所示。至此,一个完整的权限管理系统就呈现出来了。

图4权限管理界面

五、结束语

GIS的地理底图数据和属性数据本身就涉及到安全与机密问题,加上Internet这个复杂的环境,WebGIS的网络安全和权限管理显得尤为重要。本文探讨的基于.NET和AJAX的WebGIS权限管理系统适用于绝大部分WebGIS应用,可以将该系统成熟之后提取出来,作为一个公用的模块,这样,在以后实际的项目开发中可以复用该模块,避免重复开发,节省开发成本。

参考文献:

[1]宋振.基于角色和任务的权限管理扩展模型研究及应用[D].中国优秀硕士学位论文全文数据库,2008,11

[2]吴信才.地理信息系统原理与方法[M].北京:电子工业出版社,2002

[3]黄颖._NET和VML及脚本技术在WebGIS系统地图文档显示中的应用[J].测绘科学,2006,(7):130-132

[4]王勇,尹凡,雷俊.ASP.NET两种身份验证方式及比较[J].电脑知识与技术(学术交流),2007,1(4)

[5]http://baike.baidu.com/view/809410.htm?fr=ala0_1

[6]http://www.jdon.com/jivejdon/thread/7309

[7]彭建伟.Ajax技术在WebGIS中的应用研究[D].中国优秀硕士学位论文全文数据库,2008,(02)

作者简介:钟伟雄(1978-),男(汉族),湖北仙桃人,硕士生研究生,专业:地图制图学与地理信息工程,主要研究方向:WebGIS。

篇4:Ajax技术与Web GIS

1 系统原理与结构

1.1 Ajax与Web GIS技术

基于Ajax的网络地图系统由二部分组成:(1)服务器端。通过地图预渲染技术即通过对地图分级、分块渲染,建立栅格金字塔地图数据,通常称为地图切片技术;(2)客户端。当地图窗口发生移动、缩放时,通过Java Script应用Ajax技术控制浏览器在后台进程下载当前地图分辨率和范围需要的切片,并在下载完成后通过后台进程填充于相应位置,而不打断用户操作。由于该技术一方面充分利用了浏览器(如IE)的多线程下载功能;另一方面下载过的图片在系统设置的时间范围内无需再次访问服务器下载,有效利用了客户端缓存,因此大大加快了客户端数据下载和运行效率,降低了服务器负担。对于一些动态内容,例如点对象(POI)、线对象(道路),通常使用客户端脚本技术(VML或者SVG)在浏览器端以矢量的方式绘制[4]。

与其他Web GIS系统不同,要实现以上的功能,浏览器客户端相对复杂,需要应用Java Script代码在浏览器以脚本方式来实现地图浏览器,也可以使用基于Flash或者Java Applet的实现方案,其基本原理类似。随着网络地图市场的升温,目前出现了几种基于地图切片和Ajax技术的网络地图Java Script类库,比较著名的有Map Easy[5]、Open Layer、ka Map等,应用这些类库,可以降低技术门槛,加快该类系统的开发。在服务器端,由于地图数据是预先分级、分块渲染的栅格金字塔数据,因此,可以通过任何Web服务器来提供服务。

1.2 系统结构

本系统以Arc IMS和Map Easy类库为基础构建,系统架构示意图如图1所示。Arc IMS是ESRI公司的Web GIS发布系统,可用于在Internet和Intranet上发布GIS数据。Arc IMS由Application Server Connectors、Application Serve和Spatial Server三部分组成。其中,Application Server Connectors主要用于连接Web Server和Application Server;Application Server用于维护Spatial Server的状态及其与Web服务器的交互;Spatial Server是核心的地图渲染器,根据Application Server的请求渲染地图。Map Easy是由国内开发者开发的、基于Ajax技术的网络地图Java Script开源类库,可以用来在浏览器端构建类似Google Map风格的网络地图;可以应用服务器端的地图切片数据,在客户端浏览器创建网络地图,并使用Java Script增加标注信息(点信息);使用Apache开源协议[5]允许作为开源或者商业软件的代码修改、再发布,也就是说,使用者在需要的时候可以修改代码以满足要求并作为开源或商业产品的发布或销售。

如图1所示,系统在客户端使用Map Easy为核心构建,在服务器端通过动态缓存服务来返回缓存中的地图切片数据,或者调用Arc IMS渲染空间数据为地图切片。而在服务器端,Map Easy和一般的网络地图或Web GIS不同,通过类似lazy load机制,使用Arc IMS渲染地图切片数据,当相应缩放比例和位置的地图切片首次请求时才调用Arc IMS进行渲染,渲染结果以文件缓存形式存储于服务器,客户端如果再次请求同一块地图切片时,则可直接返回缓存中的地图切片数据。由于地图切片是动态缓存的,而不是类似大多数网络地图的预渲染机制,因此可以通过控制缓存来控制地图数据动态更新和发布。例如系统地图数据更新后,可以根据更新范围,删除缓存中的相应数据,客户端再次请求该地图时,得到的就是更新过的地图数据。

1.3 数据组织与服务器和客户端交互

在浏览器客户端,应用Map Easy类库添加地图的Java Script代码如下:

function IMSMap Type(){

Map Type.apply(this);

this.get Src=function(level,row,column){

return"http://localhost/ims/?d=test&z="+level

+"&x="+column+"&y="+row

}

}

Map Model.map Types=new Array(new IMSMap Type());

Map Model.max Zoom Level=10

以上代码最关键之处是第4行的语句,该语句调用服务器端缓存服务,返回地图切片数据,其中有4个参数:表示缓存服务的数据集d,表示当前的缩放级数z,表示切片的行列x、y。Map Easy兼容的数据切片方案采用四叉树切分和哈希格网索引算法[6],即第一级为1幅图片,第二级分为4幅图片,第三级则划分为16幅图片,如图2所示。对于每个切片,根据其在切片中的行列和级数,就可以反算相应的经纬度范围;反之,通过经纬度也可以计算某个分辨率下切片的行列数,例如,根据切片行列索引计算地理坐标的计算公式为:

切片XMin=Mapwidth/(2^(z-1))*x+MapXMin

切片YMin=Mapwidth/(2^(z-1))*(2^(z-1)-y-1)+MapYMin

切片XMax=切片XMin+MapWidth/(2^(z-1))

切片YMax=切片YMin+MapWidth/(2^(z-1))

式中,x、y代表切片的行列索引;z代表缩放级数,最小(第1级)为1。

1.4 系统流程

服务器动态缓存服务地图切片渲染的基本流程如图3所示。首先根据图片的位置参数和数据集,构建图片文件名和路径名,判断该文件是否在缓存中存在,如果存在,则返回,其程序的执行流程为:1、2、3、7;如果图片在缓存中不存在,则调用Arc IMS渲染并保存图片,其程序的执行流程为:1、2、4、5、6、7。所以,每个缩放比例的图片在Arc IMS中只渲染一遍。

2 系统开发与应用实例

在中国东部地质与地球化学数据库系统中,使用了基于服务器动态缓存和Ajax技术的Web GIS技术,该系统基于Microsoft.net 2.0平台,开发语言为C#,服务器运行环境为:Microsoft Windows Server 2003、IIS、Arc IMS、SQL Server,客户端可以为任意的Web浏览器。通过使用服务器动态缓存和Ajax技术,在普通PC机服务器上,即可支持较大并发用户访问,与单纯使用Arc IMS技术进行Web GIS开发相比,大大提高了服务器运行效率,降低了服务器负荷。图4为系统的运行界面,其中左图为查询界面,右图为查询结果,结果数据的空间位置可以通过标注的形式显示在地图上。

本文介绍了基于传统Web GIS系统Arc IMS、结合服务器端动态缓存技术,开发Google Map风格的Web GIS系统的基本原理、技术路线和关键技术。该技术应用于中国东部地质与地球化学数据库系统开发,取得了良好的效果。基于服务器动态缓存技术,在Web GIS开发中应用和集成Ajax技术和地图切片技术具有重要的实用价值和现实意义。

参考文献

[1]Google Map,http://maps.google.com.2006-03-10.

[2]宋关福,钟耳顺.WebGIS——基于Internet的地理信息系统.中国图像图形学报,1998,(3):251-254.

[3]Google与网络地图杂谈.http://www.3snews.net/index.php/2899/action_viewspace_itemid_1720.html.2007-03-27.

[4]黄颖,谢忠,钟士彬.NET和VML及脚本技术在WebGIS系统地图文档显示中的应用.测绘科学,2006,31(4).

[5]MapEasy,http://mapeasy.sourceforge.net/.2007-01-12.

上一篇:论礼作文900字下一篇:高三年级语文教学工作计划