1、基于Java Applet的WebGIS的瓶颈问题研究 杨斐 (山东理工大学计算机学院,山东 255000) 摘 要:WebGIS 是将Internet 技术应用于GIS 开发的产物, 是GIS 发展的趋势之一。首先, 比较了几种主要的WebGIS 技术, 并对基于Java 技术的WebGIS 系统开发方式作了总结。然后, 结合具体系统实例,介绍了系统的框架,阐述了基于Java Applet 的实现机制。最后着重探讨了瓶颈问题的解决措施。 关键词:WebGIS;Java Applet;数字签名;瓶颈 Research on the bottleneck problem of
2、WebGIS Based on Java Applet YANG Fei (College of Computer Science & Technology, Shandong University of Technology, Shandong 255000, China) ABSTRACT:It leads to the birth of WebGIS to combine Internet with GIS,which is one of the GIS development trends in the future. Firstly, it carries through
3、the comparison among several primary WebGIS technologies and summarazes the WebGIS development manners based on the Java technology. Then, introduced the framework with specific system,and it expounds the mechanism of the WebGIS based on Java Applet.Finally, Focused on the measures to solve the bot
4、tleneck problem. Keyword: WebGIS;Java Applet;Digital signature;bottleneck 1.引言 地理信息系统(Geographic Information Systems, 简称GIS) 是一种采集、存贮、管理、分析、显示与应用地理信息的计算机系统。地理信息系统是地理、测绘等地学, 与计算机和信息科学等之间的交叉领域。随着互联网( Internet) 技术的不断发展和人们对地理信息系统不断增长的需求, 将Internet 技术应用于GIS 开发形成了互联网地理信息系统(WebGIs) , 利用Internet 在Web 上发
5、布和出版空间数据, 为用户提供空间数据浏览、查询和分析等功能。基于Internet 的WebGIs 是目前和将来GIS 发展的主流。 [1] 2. WebGIS 的主要实现技术 目前,WebGIS 主要实现技术有: GGI、Server API、Plup- in 插件、ActiveX 控件以及Java App1e 技术[2]。 表1 Internet GIS 应用系统分类对比 目前比较流行的技术就是ActiveX和Java Applet,它们可以嵌入到HTML文件中。这种胖客户瘦服务器的体系结构,服务器端只执行查询,从空间数据源中得到需要的空间数据,然后把数据发送到客户方。由浏览器
6、上的Java Applet、ActiveX完成进行后面的工作,并把处理结果显示给用户。优点是:不需要安装客户软件,客户端操作速度快,服务器和网络传输的负担轻,容易实现两端的负载平衡。不足之处是:使用已有的GIS操作分析资源的能力弱,处理较大的GIS分析任务的能力有限,无法与CGI模式相比;GIS数据的保存、分析结果的存储和网络资源的使用能力受到限制。 采取不种的WebGIS系统体系结构,就意味着实现企业GIS应用查询分析能力的不同,也意味着开发成本的不同。采用胖服务器瘦客户结构,意味着服务端模块要实现全部的GIS功能,一般来讲,必须购买昂贵的WebGIS产品,当然作为回报,它可能得到强大的系
7、统功能。但是,某些企业可能只要求实现比较简单的GIS系统,不需要特别复杂的空间分析,或者由于资金的原因,他们可能会采用瘦服务器胖客户结构,并且自主开发功能较强大的客户端模块和较薄弱的服务端模块,来实现企业的大部分业务需求。这时,Java Applet不失为一种理想的实现方案,我们的项目正是在这种需求下开展的。 3系统结构及功能实现 3.1系统框架 本WebGIS系统是为山东省某卫生行政部门开发的,目前应用于企业内部网。系统框架如图1所示。 图1 系统框架图 表现层提供用户接口的功能,运行环境主要是Web浏览器,运行的程序是客户端的Applet程序。业务逻辑层提供完成所有业务逻辑
8、和数据库存取的功能,主要有两部分组成:一部分是Web服务器,它通过HTTP协议向客户层提供Applet 程序;另一部分是GIS应用服务器,它包含了完成业务逻辑所需要的各种服务,它一方面通过自定义协议或RMI/IIOP与运行在客户层 的Applet程序通信,另一方面通过JDBC访问存储在数据库中的空间数据数据和属性数据。数据库层还提供空间数据存储、查询、分析的功能,采用Oracle8.16数据库系统,以满足大量数据的存储要求。 3.2 系统主要功能 主界面如图2所示。 图2 WebGIS系统主界面 主要实现如下功能: (1)地图放大、缩小、漫游、复位及导航功能。 (2)图层开关
9、控制,用户可以有选择地装载图层。 (3)信息查询,用户在地图上点击某实体时,将属性信息显示在属性窗口。 (4)查询定位,在单位查询面板可以通过关键字查询某单位,在查询结果窗口选择查询结果,可以快速定位到目标位置。 (5)高级查询,即GIS应用查询。卫生系统有许多部门、专业,每个部门、专业对WebGIS应用的要求不同,如人口分布图、污染分布图等。根据用户的请求,调入各种固定分布图,或动态生成分布图。 4瓶颈问题及解决技术 如前分析,采用Java Applet开发WebGIS有个特点,客户端必须处理空间数据,空间数据要在拥挤的网络上传输。本WebGIS系统使用的是山东省1:25万
10、地图(Shapefile格式),空间数据包括行政区界,公路,河流,公共设施,各级标注,经过处理后数据量仍有10Mb以上。因此,空间数据量大及其造成的网络传输慢成了系统最大的瓶颈,为了提高网络传输速度和用户操作处理响应速度,本系统主要采取了以下一些技术措施: 4.1 Applet数字签名技术[3] Java Applet有很多安全性方面的限制,它不能在客户端进行任何读写操作,这固然可以保证Applet不会对网络和客户端进行破坏活动,但大大制约了Applet的功能。软件系统开发时经常需要突破这些限制,特别是在企业内部网络上应用的系统。数字签名技术就是为突破安全限制而提出的解决方案,通过对App
11、let进行数字签名,使得Applet在下载到客户端之前要进行身份认证,只有得到用户的信任,才可以下载,用户通过签名者的身份决定是否信任它。 本系统由于以下原因决定突破Applet的安全限制,而访问本地文件系统:1)空间数据量大;2)系统在企业内部网中使用;3)用户同意。系统使用Sun公司的免费数字签名。 4.2 空间数据多级存储 空间数据分别存放在客户端,Web服务器端,数据库端。数据库系统采用Oracle8.16,将Shapefile格式的空间数据导入到Oracle中,采用Oracle的shp2sdo及SQL Loader工具来完成或用Oracle免费提供的Java类包编程实现[5]。
12、再将部分空间数据以自定义文件格式复制存放在Web服务器端。当客户机访问该网站时,如果信任该网站就下载部分固定的空间数据。由于存取本地数据比存取网络数据速度快多了,可以大大提高系统的运行速度。当客户端读取数据时,先从本地读取,若本地没有,则向GIS应用服务器发出请求,GIS应用服务器程序先从Web服务器上读取数据,若Web服务器上没有该数据,则生成Sql语句向Oracle数据库发出请求,由Oracle处理请求并返回查询结果。本系统的空间数据部分可以存放在客户端,因此,减少了必须通过网络传输的空间数据量。 4.3 网络数据流压缩 在网络上传输空间数据或栅格图像时,发送端对这些数据进行Zip压缩
13、接收端解压。显然,这些数据的传输速度关键取决于网络传输率,本机的压缩、解压缩时间相对于网络传输来说是很小的,因此,进行压缩处理是很有意义的。实践表明,采用Java.util.zip类包[4],压缩率通常可达3倍以上。 4.4 数据动态调度策略 系统初始化时,将主要图层(行政区界)及其相应标注图层调入内存,以后根据用户的选择装载图层或卸载图层。当用户操作的区域范围较大时,尽量保持内存中数据量小,及时卸载无用图层。当用户浏览到较小范围时,数据量较低,内存占用较少,这时对用户选择过的图层,不再卸载。根据经验可知,用户的操作一般集中在某个较小地区范围,并对某些特定的图层进行操作处理,在内
14、存中保存这些图层数据,可以使系统的响应速度得以提高。属性数据通过对Oracle数据库查询得到并调入内存的。 4.5 矢量数据和栅格图像有机结合 当大量矢量数据要调入内存或传输时,可以用栅格图像来代替它。系统初启动时,显示整幅福建地图,虽然只调入部分图层数据,一次性装载这些数据并计算画图,加上下载Applet程序,将花费很长时间,可能导致用户不耐烦。如果预先生成一幅福建地图栅格图像,系统启动时,首先显示该栅格图像,并用一个后台进程读取矢量数据,达到“欺骗”用户的效果;另外,如果客户端从Web服务器或Oracle数据库查询较大的空间数据时,可以在应用服务器上先生成相应的栅格图像,然后传
15、输栅格图像给客户端显示,客户的操作以命令参数形式传送到GIS应用服务器,由服务器程序处理这些请求并返回结果。 4.6比例控制图层显示 当图层放大比例较小时,数据量大,客户显示区不可能详尽地表征所有的数据,而且有些区域可能涂成一团,造成显示区混乱。采用由粗及细的策略,我们可以比较清晰地表达显示逻辑,也可提高系统速度。比如,系统最初只装载主干公路、河流,随着放大比例的不断扩大,逐渐加入支路、支流,直到乡镇一级。 4.7数据组织方式 GIS的特点就是数据量大,如何在内存中组织管理这些数据,快速绘制矢量数据,及时响应用户的操作,是编程人员最头痛的问题。系统灵活运用Java语言面向对象和
16、多线程的特点。空间几何元素由点状、线状、面状、标注组成,以类的形式组织,点(Point)是最基本的空间几何元素类型,其它几何元素(如MultiPoint,LineString,Polygon,Text等)由多点构成,每一个几何实体都有id属性,与数据库中的属性对应,用户点击该几何实体后通过id号向Oracle查询属性数据。各种元素组成层(Layer),各层以链表形式存放在内存中,用层集(AllLayers)来管理层的装卸。引入块(Block)的概念,它是层的子集,是层中某个区域的数据,用于管理用户所在地区范围及其周围的空间实体,同样,组织成链表,用块集(AllBlocks)管理。为了及时响应用
17、户放大、缩小、漫游、查询信息等操作,当用户在较小范围内操作时,在内存中构造两个块集,一个存放用户所在区域的数据,一个存放所在区域周围3×3大小的数据,这样,当进行缩小,漫游拖动操作时,重新计算、重新绘图较快,而大的块集则启动一后台线程计算。 5 结论 用Java Applet从底层开发WebGIS应用系统难度比较大,且开发周期长,但却能满足某些企业的应用需求,具有一定的研究意义。采用这种方案必然遇到空间数据量大、网络传输慢的瓶颈问题,该问题在很大程度上阻碍了系统的开发进度,它的解决方案的好坏也决定了WebGIS系统的性能。本文详细探讨了我们在处理该瓶颈问题所采取的一些解决方法,以期对同行有所借鉴。 参考文献: [1]白英彩 主编.英汉计算机技术大辞典.上海:上海交通大学出版社.2001. [2]王春林,黄墨燃.WebGIS几种构造方法评价[J]中国西部科技2009,(09) [3] 谢元礼,胡斌. 浅谈GIS的发展历程与趋势[J]北京测绘, 2001,(01) . [4] 刘中伟,刘中宏. WebGIS的解决方案及开发方法[J]长春科技大学学报, 2000,(01) .






