时间:2024-07-28
高炳楠,刘 云,张振江
(北京交通大学电子信息工程学院,北京100044)
随着数字化时代的到来,人们对数字地球,数字地铁等已不再陌生了,很多软件管理系统也需要将地理信息添加进去进行更好的可视化管理,因此地理信息系统(GIS)也需要在网络中进行查看和管理,WebGIS便是GIS与Internet两者结合的产物。通过地图服务器可以构建Web地图绘制程序,处理源自客户机的地图数据请求,给地理信息的管理带来了极大的方便。
在开发数字地铁基础信息平台时,我们采用了基于MapXtreme平台的WebGIS,但在用户加载地图和发送请求对地图操作的时候,响应速度很慢,浏览器甚至出现白屏现象。当网络情况不好,访问人数多的情况下,该系统会极大地浪费服务器资源和网络资源,影响页面响应速度甚至可能出现死机现象。为此,提出利用瓦片技术加快地图服务器响应速度的WebGIS设计方案。
传统的WebGIS大都是服务器将客户端的请求发送到GIS应用程序上,然后再将结果返回给客户端,所以整个系统就取决于GIS应用程序的性能,但随着越来越多的客户进行请求,加之对地图进行频繁的操作(缩放、平移等),GIS应用程序需要连续不断地向客户端返回重复的数据,而且大部分也可能是用户所不需要的。这就给服务器带来了极大的负担,不仅浪费客户的时间,还占用大量的网络资源。而瓦片技术的提出突破了这一障碍,脱离了GIS应用程序,服务器只需请求已经切分好的,并且用户所需的一片或者几片图片,在通过Ajax将瓦片拼接起来返回给客户端。
顾名思义,瓦片金字塔就是由多层分辨率不同的地图图片组成金字塔形状,由下向上,地图依次减小,每层只是比例不同,所代表的实际地理面积是相同的。最下面一层为第0层,是缩放级别最低,地图比例尺最大的地图图片(比例尺=地图上一小段距离/实地相应的距离),需要把图片投影到已分割好的图片上,比如256×256像素的图片上,这里的单位就是单位像素所代表的距离值(m/像素)。第一层的分割方法与第0层相同,只不过是把第0层的每2×2像素合成为一个像素,如此下去,一直到第L-1层(L为所要缩放级别的数量),最后构成整个瓦片金字塔。如图1和表1。
图1 金字塔模型
表1 每层的像素和瓦片数
通过对图片进行分割并命名瓦片地图来快速构建金字塔模型瓦片地图库,并存储在机器下的高速硬盘下,通过使用Ajax抓取用户所需的地图图片来提高服务器的效率。
1.2.1 构建金字塔模型瓦片地图库
传统的WebGIS是客户端每发出一次请求,服务器就要渲染一次地图,然后将数据返回给客户端,这势必会大大降低服务器与客户端的交互效率。本文介绍的瓦片地图技术是先构建瓦片地图库,例如:第0层是像素为256×256的图片,把图片也分割成256×256的小正方形,则每一个小正方形都是一个地图瓦片,对此瓦片进行命名,命名规则为L_0_R_0_C_0.png(第0层第1行的第1个元素),并获得此瓦片的坐标,其他地图瓦片同理。对图片进行存储,新建文件夹AllLayer,子文件夹为L0、L1至L(L-1),每个文件夹中再建立子文件夹R_0,R_1至R_ 2(L-1),在每个文件夹中建立每行中的所有图片,如图2。
图2 瓦片文件存储
1.2.2 Ajax及Ajax富客户端
(1) Ajax简介
Ajax即“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,可以在B /S构架下实现富客户端。Ajax很好地解决了“请求—响应”中用户所不得不等待响应的问题,它是一种避免页面刷新的机制,可以实现客户端与服务器之间的异步通信。Ajax亦实现了按需传输数据并且客户端也可以异步传输数据,即在用户发出请求的过程中,用户还可以对页面进行操作,而响应数据返回后会自动更新请求的数据。
Ajax原理如下:
a.客户端数据请求触发一个Ajax事件。b.创建XMLHttpRequest对象的一个实例。c.请求被发送到了服务器。服务器执行业务逻辑,构造XML响应数据返回客户端。d.XMLHttpRequest对象接收响应数据,出发回调函数对响应数据进行DOM解析。e.更新客户端界面的显示。
(2) Ajax富客户端
传统的客户端向服务器发送数据请求时,服务器会将客户端页面上已有的数据重复地传送给客户端,极大地浪费了服务器资源和网络资源,实际上客户端只需要他们可视范围内缺少的那些数据。
Ajax富客户端技术就是Ajax位于客户端的技术,能将客户端由原来的哑终端加强成智能化的“富客户端”,它利用异步方式访问服务器,实现无刷新更新网页,该技术的应用大大降低了客户端延迟,提高Web应用程序执行效率。
1.2.3 瓦片地图技术的实现
瓦片技术优于传统的方法是采用Ajax技术实现客户端的地图操作,它把原先的用户的一次地图请求变为用户根据各自的需要而抓取所需的地图瓦片,而这些地图瓦片都按照一定的顺序存储在金字塔模型瓦片地图库中,只要先计算出需要显示瓦片区域的坐标,所在的层,然后向服务器发出响应,通过地图瓦片的下载路径直接请求地图瓦片,对其进行无缝连接,最后返回给客户端。富客户端请求数据过程如图3。
图3 富客户端请求数据过程
MapXtreme for Java是互联网、企业内部及外部网的地图服务器,能够支持多种Web应用,部署选项可分为:瘦客户机、胖客户机和中型客户机。其区别在于软件以及向客户机发送的数据量。在瘦客户机的部署中,用户将在浏览器中与HTML 页面交互。地图通常是嵌入到 HTML 中的 GIF 图像。地图请求处理在服务器端完成。这是典型的互联网部署,客户机上无需 Java。胖客户机是备选的另一种方案。客户机下载一个 Java applet,由其提供比直接的 HTML 更加复杂的用户界面。此外,MapXtreme Java 可以返回向量数据来取代栅格数据。由于增加了用于 applet 的下载时间,因此这一方案更加适合于在内网系统部署,以便更好地控制客户端。中型客户机是介于瘦客户机和胖客户机之间的选项。与胖客户机相同,中型客户机下载 applet,因此客户机必须支持 Java。类似瘦客户机,中型客户机接收地图的栅格图像。applet 可以提供比直接HTML 更加复杂的用户界面和附加的地图工具,例如选取框工具。
MapXtreme Java有4个主要组件:MapXtremeServlet、MapJ 对象、数据提供方和渲染器。这些组件协同工作,可用于访问地理数据、控制数据并为应用程序提供地图或数据。
(1) MapXtremeServlet 是在 MapXtreme Java产品中提供的地图绘制服务器。(2) MapJ 对象管理地图的状态。(3) 渲染器显示地图数据。(4)数据提供方是介于 MapJ 对象和地图数据之间的关键链接。
根据数字地铁项目中的结构做如图4的改进。在MapXtreme地图服务器上创建金字塔模型瓦片地图库,在客户端加上Ajax技术,用来获取瓦片地图并进行无缝拼接,如图4。
图4 瓦片地图技术下的WebGIS结构
本文从实际问题出发,提出了采用瓦片地图技术来处理地图服务器响应速度太慢的问题。首先创建金字塔瓦片地图库,利用缓存思想来优化服务器端,然后充分利用Ajax富客户端,对用户所需的瓦片进行抓取,并无缝拼接,既克服了重复下载页面已经存在的数据,又解决了用户不断刷新页面的问题。
[1] 高皓亮,杨琴芝,丛晓男,王远飞. 基于Google Map的空间数据整合技术[J] . 中国科技论文在线,2009,2(14).
[2] 揣媛媛,范继璋,轩义华. 基于MapXtreme平台的WebGIS系统的设计与实现[J] .物探化探计算技术,2006,28(1):80-83.
[3] 刘书雷,李军,陈宏盛,景宁. 基于MapXtreme的WebGIS解决方案[J] .计算机工程与科学,2004,26(2):15-18.
[4] 郑建功,张转,刘扬. 基于AJAX和J2EE的WebGIS分布式系统设计与实现[J] . 测绘科学,2009,34(5):220-211.
[5] 李学俊,王尊亮,李晓欢,郭军. 基于地图切片预取的WebGIS系统[J] .计算机应用研究,2009, 26(10):3849-3851.
[6] 许虎,聂云峰,舒坚. 基于中间件的瓦片地图服务设计与实现[J] . 地球信息科学学报,2010,12(4):563-565.
[7] 周沛. 智能交通系统中的瓦片地图技术研究与应用[D] .北京:北京交通大学,2008:35-36.
[8] Li Haiting, Peng Qingshan, Li Yanhong. Data Security Analysis of WebGIS Based onTile-Map Technique[C] . 2009 INTERNATIONAL SYMPOSIUM ON WEB INFORMATION SYSTEMS AND APPLICATIONS, PROCEEDINGS: 190-193.
[9] Haiting Li. The Study for Data Security Mechanism in WebGIS Based on Tile Caches[J] .Management and Service Science,2009: 1-4.
[10] 张利利,周明全,耿国华. 基于MapXtreme的交通Web-GIS的实现方法[J] .计算机技术与发展,2006,16(12):205-207.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!