[日期:2005-01-31] | 来源:福州大学计算机系 作者:林志贤 林宏基 | [字体:大 中 小] |
1.引言
WebGIS是在Internet或Intranet网络环境下的一种兼容、存储、处理、分析和显示与应用地理信息的计算机信息系统,它的基本思想就是在 互联网上提供地理信息,让用户通过浏览器浏览和获得一个地理信息系统中的数据和功能服务。WebGIS由于操作简单、跨平台、可扩展、信息分布共享、高效 的负载平衡等特点[1][2],已经在诸多领域中得到广泛的应用,包括农业、林业、水利、地矿、交通、通讯、新闻媒体、城市建设、教育、资源(土地、森 林、水、矿物、海洋等)、环境、人口、海洋以及军事等几十个领域。
WebGIS的构造方法主要有:CGI、Server API、Plug-ins、ActiveX和Java Applet[3][4]。传统的CGI和 Server API方法,数据处理在服务器端,形成瘦客户端,任何操作都在服务器端实现,因此效率低,速度慢。另外,由于浏览器不能直接读取矢量图形, 矢量数据在网上传输就得先在服务器端转换成栅格图形数据,这样一转换就使数据量增大许多倍,使本已拥挤的网络不堪重负,所以,这种方式对于需要大通讯量的 WebGIS系统显然是不合适的。后来的插件技术方法是在客户端的浏览器上增加一个能识别矢量图形数据的插件,通过这样的插件,使得服务器端的矢量图形数 据无须转换就能直接为用户浏览、查询和分析等操作,将一部分服务器的功能转移到客户端,大大减少了网络的数据传输量,较好地解决了网络上图形数据信息的传 输瓶颈。插件的不足之处在于它必须先安装在客户机上,给用户带来不便。
目前比较流行的技术就是ActiveX和Java Applet,它们可以嵌入到HTML文件中。这种胖客户瘦服务器的体系结构,服务器端只执行查询,从 空间数据源中得到需要的空间数据,然后把数据发送到客户方。由浏览器上的Java Applet、ActiveX完成进行后面的工作,并把处理结果显示给 用户。优点是:不需要安装客户软件,客户端操作速度快,服务器和网络传输的负担轻,容易实现两端的负载平衡。不足之处是:使用已有的GIS操作分析资源的 能力弱,处理较大的GIS分析任务的能力有限,无法与CGI模式相比;GIS数据的保存、分析结果的存储和网络资源的使用能力受到限制。
对企业来讲,采取不种的WebGIS系统体系结构,就意味着实现企业GIS应用查询分析能力的不同,也意味着开发成本的不同。如前面所述,采用胖服务器瘦 客户结构,意味着服务端模块要实现全部的GIS功能,一般来讲,必须购买昂贵的WebGIS产品,当然作为回报,它可能得到强大的系统功能。但是,某些企 业可能只要求实现比较简单的GIS系统,不需要特别复杂的空间分析,或者由于资金的原因,他们可能会采用瘦服务器胖客户结构,并且自主开发功能较强大的客 户端模块和较薄弱的服务端模块,来实现企业的大部分业务需求。这时,Java Applet不失为一种理想的实现方案,我们的项目正是在这种需求下开展 的。
2系统结构及功能实现
2.1系统框架
本WebGIS系统是为福建省某电力单位开发的,目前应用于企业内部网。系统框架如图1所示。
此主题相关图片如下:
客户层提供用户接口的功能,运行环境主要是Web浏览器,运行的程序是客户端的Applet程序。业务逻辑层提供完成所有业务逻辑和数据库存取的功能,主 要有两部分组成:一部分是Web服务器,它通过HTTP协议向客户层提供Applet 程序;另一部分是GIS应用服务器,它包含了完成业务逻辑所需要的 各种服务,它一方面通过自定义协议或RMI/IIOP与运行在客户层 的Applet程序通信,另一方面通过JDBC访问存储在数据库中的空间数据数据和 属性数据。数据库层还提供空间数据存储、查询、分析的功能,采用Oracle8.16数据库系统,以满足大量数据的存储要求。
2.2 系统界面及主要功能
主界面如图2所示。
此主题相关图片如下:
图2 WebGIS系统主界面
主要实现如下功能:
(1) 地图放大、缩小、漫游、复位及鹰眼导航功能。
(2) 图层开关控制,用户可以有选择地装载图层。
(3) 信息查询,用户在地图上点击某实体时,将属性信息显示在属性窗口。
(4) 查询定位,在单位查询面板可以通过关键字查询某单位,在查询结果窗口
选择查询结果,可以快速定位到目标位置。
(5) 高级查询,即GIS应用查询。电厂有许多部门、专业,每个部门、专业对WebGIS应用的要求不同,如人口分布图、电网分布图、污染分布图等。根据用户的请求,调入各种固定分布图,或动态生成分布图。
3瓶颈问题及解决技术
如前分析,采用Java Applet开发WebGIS有个特点,客户端必须处理空间数据,空间数据要在拥挤的网络上传输。本WebGIS系统使用的是福 建省1:25万地图(Shapefile格式),空间数据包括行政区界,公路,河流,公共设施,各级标注,经过处理后数据量仍有10Mb以上。因此,空间 数据量大及其造成的网络传输慢成了系统最大的瓶颈,为了提高网络传输速度和用户操作处理响应速度,本系统主要采取了以下一些技术措施:
3.1 Applet数字签名技术[5]
Java Applet有很多安全性方面的限制,它不能在客户端进行任何读写操作,这固然可以保证Applet不会对网络和客户端进行破坏活动,但大大制 约了Applet的功能。软件系统开发时经常需要突破这些限制,特别是在企业内部网络上应用的系统。数字签名技术就是为突破安全限制而提出的解决方案,通 过对Applet进行数字签名,使得Applet在下载到客户端之前要进行身份认证,只有得到用户的信任,才可以下载,用户通过签名者的身份决定是否信任 它。
本系统由于以下原因决定突破Applet的安全限制,而访问本地文件系统:1)空间数据量大;2)系统在企业内部网中使用;3)用户同意。系统使用Sun公司的免费数字签名。
3.2 空间数据多级存储
空间数据分别存放在客户端,Web服务器端,数据库端。数据库系统采用Oracle8.16,将Shapefile格式的空间数据导入到Oracle中, 采用Oracle的shp2sdo及SQL Loader工具来完成或用Oracle免费提供的Java类包编程实现[5]。再将部分空间数据以自定义文 件格式复制存放在Web服务器端。当客户机访问该网站时,如果信任该网站就下载部分固定的空间数据。由于存取本地数据比存取网络数据速度快多了,可以大大 提高系统的运行速度。当客户端读取数据时,先从本地读取,若本地没有,则向GIS应用服务器发出请求,GIS应用服务器程序先从Web服务器上读取数据, 若Web服务器上没有该数据,则生成Sql语句向Oracle数据库发出请求,由Oracle处理请求并返回查询结果。本系统的空间数据部分可以存放在客 户端,因此,减少了必须通过网络传输的空间数据量。
3.3 网络数据流压缩
在网络上传输空间数据或栅格图像时,发送端对这些数据进行Zip压缩,接收端解压。显然,这些数据的传输速度关键取决于网络传输率,本机的压缩、解压缩时 间相对于网络传输来说是很小的,因此,进行压缩处理是很有意义的。实践表明,采用Java.util.zip类包[5],压缩率通常可达3倍以上。
3.4 数据动态调度策略
系统初始化时,将主要图层(行政区界)及其相应标注图层调入内存,以后根据用户的选择装载图层或卸载图层。当用户操作的区域范围较大时,尽量保持内存中数 据量小,及时卸载无用图层。当用户浏览到较小范围时,数据量较低,内存占用较少,这时对用户选择过的图层,不再卸载。根据经验可知,用户的操作一般集中在 某个较小地区范围,并对某些特定的图层进行操作处理,在内存中保存这些图层数据,可以使系统的响应速度得以提高。属性数据通过对Oracle数据库查询得 到并调入内存的。
3.5 矢量数据和栅格图像有机结合
当大量矢量数据要调入内存或传输时,可以用栅格图像来代替它。系统初启动时, 显示整幅福建地图,虽然只调入部分图层数据,一次性装载这些数据并计算画图,加上下载Applet程序,将花费很长时间,可能导致用户不耐烦。如果预先生 成一幅福建地图栅格图像,系统启动时,首先显示该栅格图像,并用一个后台进程读取矢量数据,达到“欺骗”用户的效果;另外,如果客户端从Web服务器或 Oracle数据库查询较大的空间数据时,可以在应用服务器上先生成相应的栅格图像,然后传输栅格图像给客户端显示,客户的操作以命令参数形式传送到 GIS应用服务器,由服务器程序处理这些请求并返回结果。
3.6比例控制图层显示
当图层放大比例较小时,数据量 大,客户显示区不可能详尽地表征所有的数据,而且有些区域可能涂成一团,造成显示区混乱。采用由粗及细的策略,我们可以比较清晰地表达显示逻辑,也可提高 系统速度。比如,系统最初只装载主干公路、河流,随着放大比例的不断扩大,逐渐加入支路、支流,直到乡镇一级。
3.7数据组织方式
GIS的特点就是数据量大,如何在内存中组织管理这些数据,快速绘制矢量数据,及时响应用户的操作,是编程人员最头痛的问题。系统灵活运用Java语言面 向对象和多线程的特点。空间几何元素由点状、线状、面状、标注组成,以类的形式组织,点(Point)是最基本的空间几何元素类型,其它几何元素(如 MultiPoint,LineString,Polygon,Text等)由多点构成,每一个几何实体都有id属性,与数据库中的属性对应,用户点击该 几何实体后通过id号向Oracle查询属性数据。各种元素组成层(Layer),各层以链表形式存放在内存中,用层集(AllLayers)来管理层的 装卸。引入块(Block)的概念,它是层的子集,是层中某个区域的数据,用于管理用户所在地区范围及其周围的空间实体,同样,组织成链表,用块集 (AllBlocks)管理。为了及时响应用户放大、缩小、漫游、查询信息等操作,当用户在较小范围内操作时,在内存中构造两个块集,一个存放用户所在区 域的数据,一个存放所在区域周围3×3大小的数据,这样,当进行缩小,漫游拖动操作时,重新计算、重新绘图较快,而大的块集则启动一后台线程计算。
5 结论
用Java Applet从底层开发WebGIS应用系统难度比较大,且开发周期长,但却能满足某些企业的应用需求,具有一定的研究意义。采用这种方案必 然遇到空间数据量大、网络传输慢的瓶颈问题,该问题在很大程度上阻碍了系统的开发进度,它的解决方案的好坏也决定了WebGIS系统的性能。本文详细探讨 了我们在处理该瓶颈问题所采取的一些解决方法,以期对同行有所借鉴。
参考文献:
[1] 宋关福,钟耳顺,王尔琪.WebGIS—基于Internet的地理信息系统[J].中国图像图形学报,1998(3),251-254.
[2] 郭杰华,鲍远律,胡玉锁,等.基于Internet的地理信息系统的研究和开发[J]. 图形图像学报,1999(1):32-35.
[3] 薛小峰,汪晓程.WebGIS处理模型研究[J]. 微型电脑应用2000,16(1):26-27.
[4] 罗英伟,丛升日,汪小林,等.WebGIS的构件设计[J].中国图形图象学报,1999,4(增刊):79-84