刘让国 彭会湘 陈莉
(中国电子科技集团公司第五十四研究所河北石家庄050081)
WebGis是实现Internet 环境下地理空间信息服务的有效途径,其核心是将GIS 的功能嵌入到Internet 应用体系中[1]。但迫于Web模式本身的能力及HTTP 无状态连接协议的限制,在面临处理复杂业务逻辑或大数据量操作等情况下,很容易引起页面响应变慢,甚至会导致浏览器崩溃等问题。而基于WebGis的态势表达往往涉及复杂的业务逻辑处理和海量标绘,需要从前端脚本的代码优化、富客户端技术、服务器端技术及其他相应算法等方面加以研究应用,以最大限度的降低页面请求数,减少页面元素的数量,加快页面响应和渲染的速度,增强用户使用体验。
传统的Web技术,已很难满足WebGis的复杂应用。因此,通常采用富互联网应用系统(R ich Internet Application,RIA)技术,RIA技术结合了桌面应用程序的反应快、交互性强的优点以及Web应用程序容易传播的特性,使得应用程序可以提供更丰富、更具有交互性和响应性的用户体验。以下分别探讨基于AJAX、Flex、Silverlight 等RIA技术的解决方案。
AJAX 采用异步交互模式,如图1 所示。在客户端与服务器端之间引入AJAX 引擎,客户端接口与AJAX 引擎交互,AJAX 引擎再通过HTTP 传输协议与Web服务器交互,消除了同步交互模式中的“处理- 等待- 处理- 等待”缺点。使用AJAX 引擎进行数据交换时,仅更新用户需要的数据,不对整个页面进行刷新,异步进行而不阻塞用户,能够减少冗余数据的下载,节省网络带宽,提高请求的响应速度。
图1 传统Web应用模型和AJAX 应用模型图
主流的WebGis平台,如ArcGIS Server、Supermap 等,都提供AJAX API。开源免费的OpenLayers 也是一个基于AJAX的WebGis客户端组件。基于AJAX 的WebGis实现,无需在浏览器端安装插件,使用简单方便,但其矢量标绘能力有限,只能采用浏览器原生支持的SVG 或VML标记语言。因而,态势表达能力不足,较适合于态势处理简单且标绘量不大的应用场合,如一些旅游服务的WebGis系统、基于地图的查询系统等。
Flex是由Adobe 公司推出的一种基于Flash 技术的富客户端应用解决方案,保持着较大的RIA市场占有率[2]。Flex的运行环境为Flash Player,实现了跨浏览器、跨平台。Flex使用Action Script 脚本语言编程,采用MXM L 标记语言描述界面,基于FlexSDK框架开发,最终编译形成一个可以在Flash Player 上运行的字节码文件,其执行效率要高于浏览器解释执行的JavaScript 程序。FlexSDK框架提供了封装完善的界面接口,具备整合Flash 动画的能力,使得Flex在表现层比较出色。后台的LCDS 数据服务器用来处理数据的传输和集成,能够和Java 等后台程序进行通信。
主流的商业WebGis平台,一般也都提供Flex开发接口,而基于Flex的开源软件OpenScales,框架结构类似于OpenLayers,正在迅速发展,预计不久将是基于Flex的开源WebGis客户端的首选。在基于Flex的WebGis系统中,复杂的处理和绘制渲染将集中到浏览器端,虽然减轻了服务器端的压力,但对客户端机器要求较高。对于复杂的业务逻辑处理和海量的数据标绘渲染,会严重消耗客户端资源,使系统整体响应缓慢,难以达到预期的用户体验。但Flex具有很强的用户交互性和动画表现能力,视觉效果好,可用于开发诸如台风路径监视活动的WebGis系统等。
Silverlight 是微软推出的一个跨浏览器的插件,提供面向Web的基于.NET 的媒体体验和丰富的交互式应用程序[3]。Silverlight 基于.NET Framework 技术,使用XAML语言进行二维矢量图形的展现,可访问.NET Framework 编程模型和相关工具,支持目前主流的浏览器,包括IE、Firefox、Safari、Opera等。Silverlight 自发布以来,版本不断更新,功能持续增强,市场占有率不断扩大。市场上主流的商业WebGis平台,一般也提供了Silverlight 开发接口。和Flex类似,基于Silverlight 的WebGis系统,浏览器端需要安装插件,其他特点也和Flex类似,无疑使开发者多了一个选择。至于其他RIA插件,由于没有成熟的基于WebGis的应用,不再过多探讨。
基于客户端的解决方案,把态势表达的处理和渲染集中在浏览器端进行,具有较好的人机交互性,但复杂的业务逻辑处理和海量标绘则显得力不从心。如果将复杂的计算处理放在服务器端执行,则能在一定程度上提高效率。
基于服务器端的系统架构,如图2 所示,分为用户表现层、业务逻辑层和数据存储层。复杂的业务逻辑处理和图形渲染集中在WebGis服务器上,WebGis服务器根据客户端请求的类型参数,从空间数据库和属性数据库中检索调用相应数据并执行计算处理,生成具有态势表达信息的图片,并作为一个地理图层返回给浏览器,减少了客户端和服务器端之间的通信量和交互频度,降低了客户端编程的复杂性。
图2 服务器端解决方案架构
由于空间数据具有空间位置属性、非结构化、空间关系、分类编码等特征,一般的关系型数据库管理系统难以满足要求。为了提高对空间数据的管理能力,目前主要有“关系型数据库+空间数据引擎”和扩展对象关系型数据库管理系统等多种解决方案。
“关系型数据库+空间数据引擎”是由GIS 厂商研发的一种中间件解决方案。用户将自己的空间数据交给独立于数据库之外的空间数据引擎,由空间数据引擎来组织空间数据在关系型数据库中的存储;当用户需要访问数据的时候,再通知空间数据引擎,由引擎从关系型数据库中取出数据,并转化为客户可以使用的方式。因此,关系型数据库仅仅是存放空间数据的容器,而空间数据引擎则是空间数据进出该容器的转换通道。这类系统的典型代表有ESR I 的ArcSDE 和M ap Info的Spatial W are,其优点是:访问速度快,支持通用的关系数据库,空间数据按二进制存取,与特定GIS 平台结合紧密,应用灵活。其缺点主要表现为:空间操作和处理无法在数据库内核中实现,数据模型较为复杂,扩展SQL 比较困难,不易实现数据共享与互操作。
扩展对象关系型数据库管理系统是由数据库厂商研发的管理空间数据的一种解决方案。借鉴面向对象技术,支持抽象数据类型及其相关操作的定义,将空间数据类型与函数从中间件(空间数据引擎)转移到了数据库管理系统中。不必采用空间数据引擎的专用接口进行编程,而是使用增加了空间数据类型和函数的标准扩展型SQL 语言来操作空间数据。这种支持空间扩展的产品有O racle 公司的O racle Spatial,微软的SQL Server Spatial,开源的M ySQL Spatial Extend、PostGIS 等[4]。其优点是:空间数据的管理与通用数据库系统融为一体,可在数据库内核中实现空间操作和处理,扩展SQL 比较方便,较易实现数据共享与互操作。其缺点主要表现为:实现难度大,压缩数据比较困难,目前的功能和性能与第一类系统尚存在差距。
GIS 环境下的态势信息自动综合,主要包括2个方面:一是按照一定规律和法则对现有的态势空间数据进行综合变换,推导出新的具有不同详细程度的数据,即变换空间模型的复杂性;另一个是当用某一比例尺进行可视化显示时,数据容量过大不能进行清晰的图形表达所进行的综合处理,即态势数据的图形表达。下面分别从聚类分组和屏幕网格算法这2个典型方法进行论述。
态势信息聚类分组(或目标编群)可根据一定法则对态势数据进行分析与分类,生成各个聚合类。聚合类就是一些相似的实体集合,分组后的态势目标,数量将减少,也能更清晰的反映实体之间的协作关系和层次结构。
目前对态势信息进行目标编群算法的研究,分为事先确定群数目和分群数目不定2 大类。事先确定群数目的算法主要包括:K- 均值算法、ISODATA(自组织迭代数据分析)算法和FCM(模糊C 均值编群)算法等[5、6],主要适用于各类样本密集且数目相差不多,不同类样本间又明显分开的情况,但这类算法的最大缺点是用户要事先给出精确的分群数目,这在一定程度上影响了算法应用的合理性。分群数目不确定的算法包括,最近邻算法、层次聚类法等[7]。这类算法又称为试探法,它主要是凭直观和经验,结合空间层面的属性,如航向等,针对实际问题定义一种相似性测度的阈值,根据相应规则指定某些目标属于某一编群。这类算法具有直观、计算量小、易于实现的特点,被广泛应用在工程中。但此类算法的编群结果在很大程度上受第一个编群中心的选择和待分类样本排列顺序的影响。
在WebGis地图上显示众多的态势目标信息时会造成显示互相压盖,降低用户体验感。采用屏幕网格算法可有效减少互相压盖的目标数量,使显示更加快速、清晰和整洁。可根据态势目标标注显示的尺寸将屏幕划分为若干网格,构成一个二维数组,假设目标显示的尺寸为targetW idth×targetHeight,屏幕窗口分辨率为ScreenW idth×ScreenHeight,则
横向网格数:ColsNum=ScreenW idth/targetW idth;
纵向网格数:Row sNum=ScreenHeight/targetHeight;
构造二维数组:ElementArray[Row sNum][ColsNum]
当地图刷新需要重新绘制目标时,首先将数组元素初始化为0,在显示每个目标时,根据其显示位置、字体大小确定其要占用的屏幕位置,如果该区域位置未被占用,则显示该目标,同时将对应的数组元素置1;如果该区域未被占用,则忽略该目标的显示处理,然后继续处理下一个目标,直至所有目标遍历完毕。
探讨了AJAX、Flex、Silverlight 富客户端技术、WebGis服务器、空间数据库及聚类分组、屏幕网格算法等相关技术,能够为基于WebGis的态势表达应用提供解决思路和方法。在实际工程应用中可综合使用这些技术和方法,尽量将复杂的业务逻辑处理集中在服务器端,将用户交互展现集中在富客户端,以降低页面请求数和数据传输量,加快页面加载和渲染速度,让用户得到更好的使用体验。
[1]赵娜.Ajax 技术在WebGis中应用的发展趋势[J].湖北经济学院学报,2011,8(8):207- 208.
[2]程光磊.Flex技术研究[J].软件导刊,2011,10(3):56- 57.
[3]王靓,范德辉.基于Silverlight 的在线制图和通讯系统[J],吉林师范大学学报,2011,8(3):131- 133.
[4]钟远军,李照,林澍哲等.基于PostGIS 的地名数据库设计与应用研究[J].测绘与空间地理信息,2011,34(3):100- 104.
[5]杨昕,彭玉青.结合蚂蚁算法的K- Means 聚类分析[J].河北工业大学学报.2007,36(3):48- 52.
[6]S.C.Stubberud and K.A.Kramer.Data Association for Multiple Sensor Types Using Fuzzy Logic[C].Instrumentation and Measurement Technology Confere nce,2005,2154- 2159.
[7]刘文军,游兴中.一种改进的凝聚层次聚类法[J].吉首大学学报,2011,32(4):11- 13.