| 文章索引 |
|---|
| 基于SVG的地图生成 |
| 用SVG表示地图数据 |
| 基于SVG的地图生成实现 |
| 基于SVG的地图的应用 |
| 所有页面 |
SVG是近年来发展起来的基于XML的用于描述矢量图形、图像的标准规范。首先分析了目前地图数据表示存在的问题,之后介绍了SVG的元素类型及使用SVG表示地图数据的优势,最后介绍了生成基于SVG的地图的实现及其应用。
前言
地图绘制是GIS系统提供的最基本的功能,GIS系统根据客户端的请求(地图范围、图层和绘制样式等),返回地图数据。由于地图数据的复杂性,不同系统产生的矢量地图的数据格式各不相同,因此对于不同格式的地图数据需要开发不同的插件;而且在插件的开发过程中还需要考虑插件对不同客户端的适应性,这不利于GIS的数据的共享和发布。基于XML的矢量图形描述语言SVG为解决该问题提供了一个开放性的方案。SVG规定了表示矢量图形的统一规范,从而促进了GIS数据的共享和发布。
1 用SVG表示地图数据
1.1 SVG简介
SVG(Scalable Vector Graphics,可升级矢量图像)是由国际WWW委员会(W3C)组织在2000年8月2日制定的一种全新的开放标准的文本式矢量图形规范。W3C对SVG的解释是:“SVG是一种使用XML来描述二维图像的语言。它允许3种形式的图像对象存在:矢量图形、点阵图像和文本。各种图像能够组合、变换,并且修改其样式,也能够定义成预处理对象。文本是XML名字空间中的有效字符,这些字符能被作为SVG图像的关键字而存留在搜索引擎中。SVG的功能包括嵌套变换、路径剪裁、透明度处理、滤镜效果以及其他扩展,同时。SVG图像支持动画和交互,也支持完整的XML的DOM接口。任何一种SVG图像元素都能够使用脚本来处理类似于鼠标单机、双击以及键盘输入等事件。并且因为同Web标准兼容的缘故,SVG还能够在同一个Web页面里凭着继承自XML的名字空间等特性来完成一系列交互操作。“
SVG具有如下的特点:
①基于XML标准;②矢量图形;③由文本构成的图像;④灵活的文件格式;⑤支持交互性:⑥内嵌式动态字体。另外,SVG实现了图形、图像和文字的有机统一,除了支持HTML中常用的标记,如文本、图像、链接、交互性、CSS的使用、脚本(Script)外,还提供了大量针对图形、图像、动画的特定标记,这就为实现G IS地图提供了可能。
1.2 SVG元素类型
SVG是图形、图像和文字的有机统一,它共提供了六种类型的对象,其中包括矢量图形、图像、渐变填充、滤镜操作、可重用单元和文本。它对于图形对象可进行组合、添加样式、几何变换、复合等操作。特征集包括嵌套变换、剪切路径、Alpha蒙版、滤镜效果、模板对象和动画效果,这些都极大地丰富了图形图像的显示效果。在理论上,这些SVG对象的组合可以构筑任意复杂的图形/图像。根据功能不同,SVG的主要对象可归为基本要素对象和页面描述功能对象两大类(图1):
SVG中的图形元素是与MAPGIS中的对象相对应的。以下是SVG的基本形状元素及其属性与MAPGIS中的基本实体的绘图函数及其参数的对照表(附表),其中style属性指定元素样式,如填充色和边框颜色。该属性是可选的;path元素的绘图指令包括:
- M/m:移动;
- L/l:画线;
- H/h:画一条水平线;
- V/v:画一条垂直线;
- A/a:画一条弧线;
- C/c:画一条三次贝塞尔曲线;
- S/s:画一条平滑的贝塞尔曲线;
- Q/q:画一条二次贝塞尔曲线;
- T/t:画一条平滑的二次贝塞尔曲线;
- Z/z:关闭路径。
大写字母给出的点是绝对地址,小写字母给出的点是相对画笔当前位置的正负偏移量。
1.3 SVG表示地图数据的优点
由于矢量技术的引入,使得SVG与JPEG和GIF等网络上广泛使用的图形格式相比具备了一些独特的优点,特别适于地图表示的特性有:
(1)可缩放性:作为一种矢量图形,SVG图形的显示尺寸可无级缩放,变化后不影响图形质量,因此可以进行任意分辨率高质量的打印,而不会出现打印位图时常见的“锯齿”效果。
(2)可升级:作为一种纯文本格式的图像,SVG文档很容易被修改和更新,而且在页面运行的过程中,也可对很多部分做即时的修改,其中的图形描述还可重复使用。另外,图形中使用的文字信息是采用文本对象的方式,可以方便地进行文字的定位,检索和修改。
(3)强交互性:SVG完全支持DOM(文档对象模型),因此SVG中的图形对象完全可以通过脚本语言来接受外部事件的驱动(如鼠标动作),以实现自身或对其他图形对象的控制,制作交互式的图像和动画。
(4)超强色彩控制:SVG图像具有一个l600万色彩的调色板,支持ICC标准、RGB、线性填充和遮罩。
(5)具有跨平台功能:鉴于SVG同XML规范的无缝连接以及标记语言的平台无关性,从而赋予了SVG跨平台的优点。
(6)开放的标准:作为一个开放的统一标准,SVG不属于任何公司,它是工业界先驱们同心合作的产物,它与HTML/XHTML完全兼容,因此SVG可方便地嵌入网页中,已经有很多公司的软件支持SVG的创建、编辑和浏览。
2 基于SVG的地图生成实现
基于SVG生成地图,可以用如下解决方案:将MAPGIS格式数据转换成SVG,通过SVGDriver生成SVG地图,然后在浏览器中进行显示,体系结构如图2所示:
(1)MAPGIS数据层:存储MAPGIS地图的数据元素。
(2)SVGDriver层:读取MAPGIS地图的数据,并转换为用SVG格式表示的地图,生成.svg文件。这一层的实现主要包括地图基本图元的显示和还原显示两部分,基本图元显示和还原显示是
MAPGIS中绘制地图的全部。其中基本图元显示包括对点、线(直线、折线、弧)、区显示的实现,还原显示包括对子图、线型、填充区显示的实现。而子图、线型和填充区又是通过点、线和区来生成的,因此整个SVG Driver的工作可以转换为基本图元的显示,这可利用上面的表l来实现,读取MAPGIS的数据后,根据MAPGIS的基本显示函数,对照SVG中的基本形状元素,找出参数与属性的对应关系,然后编写生成.svg文件的代码。在程序代码编写中还应对照Style属性中的stroke,stroke.width,nll等参数设置相应的画笔和画刷。
经过编码测试我们已经利用SVG实现了MAPGIS中的基本图元的显示和还原显示,那么生成基于SVG的地图就顺理成章了,目前此工作正在进行中。
效果图:下面是基于SVG的地图对象和符号库中的子图在SVGViewer3.0中显示的效采图(图3):
(3)SVG浏览器:要实现SVG图形的显示,必须要在客户端安装SVG浏览器,Adobe开发的SVGViewer功能强大,显示效果好,是网络上使用最多的,其最新的版本是3.0。可以到Adobe的网站(http://www.adobe.com/svg/viewer/install/main.html)上去下载安装即可。
3 基于SVG的地图的应用
(1)用于Web中进行地图的发布。由于网络带宽与路由等的限制,基于WebGIS的空间信息发布并不十分理想,而且传统的Web语言HTML,即超文本标记语言也不利于表现地理空间数据,这使得WebGIS的发展面临着严峻的技术挑战,基于SVG的地图采用简荦高效的矢量指令,矢量图形的特点是文件的大小与图形复杂程度有关,而与图形的具体尺寸无关。这样多大的图形,它都只是一个SVG文件,传输到客户端的仅仅是一个SVG页面,因此提高了Web地图发布的传输效率。
(2)用于网页的交互操作。图片和交互在以前是两个分开的概念。例如在一个网页中,按钮仅仅是一个图像,按钮的交互部分是由网页中的Script语句来实现。SVG的出现突破了这个限制,
它支持SMIL (Synchronized Multimedia Integration Language),使得在图片内进行交互成为可能,这是以往的图像所不能做到的。
4 结束语
介绍了一种由W3C制定的网络图形新标准SVG和基于SVG的地图的生成方法,为GIS矢量数据的Web发布地图提供了一种开放的解决方案。虽然SVG还存在一些不足(诸如不能支持3维显示等),然而在WebGIS成为未来GIS发展和应用趋势的时期,SVG无疑给业界带来了一种新的高效的开发技术。从长远来看,SVG技术代表网络矢量化图形的发展方向,我相信:随着IE等浏览器对SVG的支持,SVG将像Flash动画一般在网络上得到普及,到那时GIS资源将会更好的在互联网上得到传播和使用,为社会创造更多的实用价值。
关于作者
任敏 中国地质大学信息工程学院,湖北武汉 430074
(THE END)