黄瑞阳,郭建忠,余慧明,2,史瑞鹏
(1.信息工程大学 测绘学院,河南 郑州 450052;2.68011部队,甘肃 兰州 730020;3.61363部队,陕西 西安 710054)
RIA(Rich Internet Application)是实现网络富客户端应用的新兴技术[1-3],它采用了XAML语言,具有更为丰富的多媒体表达能力,同时它把界面呈现逻辑转移到客户端实现,能够充分挖掘客户端系统的性能,提高系统架构的整体服务性能。将RIA技术引入WebGIS开发和应用,提高WebGIS与用户之间的灵活交互能力和信息传输能力[4-5],已经成为当前WebGIS开发的趋势,众多国内外网络地图提供商[6-8]如ERSI、Microsoft等巨头纷纷提供基于RIA技术的WebGIS公众平台,还提供面向RIA的二次开发接口,如ESRI的Arcgis for silverlight SDK 2.0。然而,目前常见的WebGIS平台大都采用地图切片的体系架构,其地图符号化过程往往在服务器端进行实现,这种架构虽然提高了WebGIS的空间信息网络请求的响应能力,然而却束缚了WebGIS交互能力的进一步发展,特别是制约了基于WebGIS的地图制图技术的发展。因此,本文主要研究基于Silverlight的矢量地图符号模型设计与实践,从矢量地图符号化框架设计入手,设计基于Silverlight的开放灵活通用的矢量地图点状、线状、面状符号模型,最后结合Silverlight 4.0和WCF(Windows Communication Foundation,微软通讯连接基础)服务,进行基于Silverlight的矢量地图符号库加载和显示试验,通过地图符号库在线绘制的时间测试,验证基于Silverlight的矢量地图符号模型的设计与实践,在提高可视化效果的同时,满足WebGIS的交互响应要求。
地图符号化是GIS可视化的重要组成部分,在传统WebGIS框架体系中,由于受空间信息传输要求和客户端图形表达不丰富等限制,WebGIS往往采用B/S模式实现,即将地图数据的加载和渲染在服务器端进行实现,只将地图符号化后结果以图片的形式返回给客户端。此外,国内外一些学者尝试用SVG等语言实现网络地图符号化[9-10],这些研究在一定程度上实现了地理空间信息的丰富图形表达与快速传输,然而,却忽略了空间数据的Web交互表达展现能力,网络地图符号的相关操作有限,进而限制了网络地图制图技术的发展。
在计算机软硬件水平大幅度提升和RIA技术日趋成熟的今天,采用RIA技术实现丰富高效的WebGIS开发和应用已经成为可能。如何实现基于RIA技术的地图符号化,是面向RIA的WebGIS开发和实践过程中不可或缺的一部分。Silverlight是微软推出的一种跨浏览器、跨平台的,用于提供下一代媒体体验和丰富的RIA应用的新技术[11],它的表现层框架提供了矢量图形、动画、文本和图像等,为网络地图符号化技术实现。因此,本文设计了基于Silverlight的矢量地图符号化框架,如图1所示。该框架主要由数据层、服务器端和客户端三部分组成,其中数据层主要是网络上任意地址或者本地的矢量数据库和符号库;服务器端提供了数据访问调用的接口,并根据客户应用提供了丰富的数据功能、功能服务和符号调用解析服务,同时负责响应多个客户端的请求;客户端在RIA表现层框架的基础上,通过调用服务器端的数据服务和符号调用与解析服务,并进行可视化展现,同时提供了用户与WebGIS平台的丰富交互操作。
图1 基于Silverlight的矢量地图符号化框架
该框架将地图符号化放置在客户端实现,能够充分利用客户端的软硬件能力,减轻服务器端的负担,同时将GIS常用的矢量数据加载、处理和符号库加载等以服务的形式进行封装和提供,在提供WebGIS可视化效果的同时,实现系统的松散耦合和良好伸缩。基于制图相关交互操作服务的封装与部署,用户可以流畅实现基于RIA的网络地图制图。
点状地图符号主要用于表示空间中各种具有点的性质,它通常是一系列的基本图元组成的[12-13],经 过 分 析ArcGIS、SuperMap、MapGIS、MGIS等成熟GIS软件的点状地图符号的组成规律,点状地图符号的基本组成图元主要有以下18种:点、直线、折线、平行线、张力曲线、贝赛尔曲线、多边形、矩形、圆角矩形、五角星、正多边形、圆弧、椭圆、弦、扇形、文本、图片(图标)、复合图元等。为了设计通用的点状地图符号模型,本文采用面向对象设计的思想[14],设计了基于Silverlight的矢量地图符号模型,如图2所示。其中,图2左侧为图元基类ShapeCell的类视图,ShapeCell从Silverlight的表现层元素FrameworkElement派生出来,方便了将符号图元转化为Silverlight中具有可视外观布局且可以处理基本输入的用户界面元素。在该图元基类中,定义了图元绘制于屏幕中所需的属性和方法如表1所示。根据点状符号的基本组成图元的类型,ShapeCell又派生出了15个子类,各个子类的详细描述信息如表2所示。
表1 基类ShapeCell的成员属性及方法信息
表2 图元子类的描述信息表
图2 基于Silverlight的点状地图符号通用模型
线状地图符号主要用于表示道路、境界和河流等呈线状分布的地理要素,其可以看作是组成该线状符号的基本图元按照一定的规则沿定位线循环配置而成[15],线状地图符号的图元循环规则一般有纵向叠加和循环配置2种,因此,线状地图符号组成图元由StrokeDotShapeCell和BaseStrokeShape 2个子类组成,如图3所示,其中StrokeDotShapeCell实现了由点状符号(ChildCells图元列表)按照一定的间距循环配置生成线状符号,BaseStrokeShape-Cell实现了由若干个点状符号按照一定的位置(首部、中部、尾部)和偏移量循环纵向配置在基线段(Sections)上以生成线状符号。基于线状符号图元的地图符号化步骤具体如下:
图3 基于Silverlight的线状地图符号通用模型
1)判断是否包含要配置的点符,如果没有,则进行简单线处理;如果有,进入2)步骤;
2)动态计算线的长度;
3)按照一定的阈值对线上的点进行压缩删除;
4)按照图元的间隔内插生成若干个图元放置的起始点;
5)在每个内插点将线状图元按照一定的缩放比例进行渲染。
面状地图符号表示呈面状分布的、连续的空间现象。面状符号的填充主要有图片填充、简单填充、点符填充和晕渲填充4种方法。因此设计了如图4所示的面状符号通用模型,其中SimplePatternCell子类定义了Brush对象,实现了Silverlight支持界面元素对象的填充,如LineGradientBrush,VideoBrush,RadialGradientBrush,SolidGradient-Brush等;PicturePatternCell子类定义了基于图像图标的面渲染方式,在Silverlight内置的Image-Brush基础上,实现了支持多种格式图像的平铺填充;MarkPatternCell通过定义面填充的点符图元列表(MarkCells)和点符的填充规则(如矩形、菱形、随机等多种规则)来实现基于点符的面渲染;LinePatternCell:通过定义面填充的晕线图元列表和晕线的规则来实现基于晕线的面填充。
图4 基于Silverlight的面状地图符号通用模型
除了SimplePatternCell子类的填充算法实现受Silverlight内置画刷支持外,其余3个子类的面填充算法均需要重新开发和设计,由于图像的渲染,可以转化为基于图像图元的渲染,晕线的面填充可以将晕线转化为若干个图元的组合,所以都可以看作是基于图元的面填充算法,该算法的实现步骤如下:
1)判断填充样式图元所占的尺寸及图元之间的纵横填充间距,若样式图元为图像时,即PicturePatternCell子类中,设置该样式图元所占长度为图像的尺寸,填充间距为0;
2)根据待渲染面的控制点,提取出外接矩形B;
3)根据外接矩形B,计算需要填充的样式图元的行数R和列数C;
4)遍历行数R和列数C进行样式图元的渲染;
5)创建基于控制点的复合几何图形G,则设置面符所要渲染区域的内容边框为该复合几何图形G,即Canvas.Clip=G。裁剪后的区域即为渲染的面区域。
经过以上的分析和设计,本文利用Visual Studio 2010平台结合Silverlight 4.0SDK进行矢量地图符号化的开发和实践。在矢量地图符号模型设计的基础上,建立了遵循国标地图符号图式规范和中国海图图式规范的地图符号库,并将之部署在服务器上,并提供基于WCF的服务库远程调用接口。Silverlight客户端通过调用WCF服务,进行符号库的远程下载和解析,并将矢量地图点状、线状、面状符号分类进行渲染,如图5~8所示。经过时间性能测试,客户端远程下载符号库并进行解析的时间平均占用230ms,而符号化耗费时间平均只为140ms,而且随着服务器端缓存和客户端缓存策略的实现,符号化耗费时间缩小为85ms,满足了网络环境下地图实时符号化的响应要求,验证基于Silverlight的矢量地图符号模型设计,在提高地图可视化效果的同时,满足WebGIS的交互响应要求。
图5 基于Silverlight的国标地图点状符号实现
矢量地图符号化是传统WebGIS效率和可视化交互能力的瓶颈,本文通过研究基于Silverlight的矢量地图符号模型设计与实践,从矢量地图符号化框架入手,研究基于Silverlight的矢量地图符号模型的设计,并进行了面向Silverlight的地图符号库平台加载和显示试验,通过符号库远程调用、解析与绘制的时间测试,验证基于Silverlight的矢量地图符号模型设计,在提高地图可视化效果的同时,满足了WebGIS的交互响应要求。下一步作者将从通过专题地图符号模型设计、基于Silverlight的地图符号在线编辑器和基于Silverlight的符号注册中心等方面进行研究。
[1]George Lawton.New ways to build rich internet applications[J].IEEE Computer,2008,41(8):10-12.
[2]Victor Gaudioso.Foundation Expression Blend 3with Silverlight[M].NewYork:Friends of ED,2009.
[3]方坤.基于RIA技术的构件式WebGIS表现层技术研究[D].北京:中国地质大学,2009.
[4]俞亮,洪胜.浅析基于Silverlight的WebGIS客户端应用[J].浙江测绘,2010(3):26.
[5]王天宝,王尔琪.基于Silverlight的WebGIS客户端技术与应用试验[J].地球信息科学学报,2010,12(1):69-71.
[6]ESRI Online Smaples.http://www.arcgisonline.cn/agsolcn/service/map/countrymap2.jsp.
[7]Google Map.http://www.googlemap.com.
[8]Bing Map在 线 平 台.http://www.microsoft.com/maps/isdk/silverlight,2011.11.28.
[9]Adobe,The Adobe SVG Viewer is a Great Tool for Viewing SV G in Your Web Browser[EB/OL],http://www.adobe.com/svg/viewer/,2002.08.
[10]李清泉,谢智颖.基于SVG的空间信息描述与可视化表达[J].测绘学报,2005,34(1):58-60.
[11]Silverlight 4.0中文帮助文档,http://www.microsoft.com/download/silverlight 4.0
[12]阚映红,孙群.地图符号的描述方法及生成技术[J].测绘通报,2010(5):65-67.
[13]王光霞.地图设计与编绘[M].北京:测绘出版社,2011.
[14]AMANUDDIN,R.,RONCHI,D.,NGUYEN,J.,HUA,K.,YEE,E.,AND AU,E.Service-oriented architecture in a pervasive environment[C].IBM,September 2004.
[15]王鹏,马秋禾,肖蓉.运用对象组合(OC)技术建构线状符号库[J].东北测绘,2001(4):52-55.