摘 要:万维网与地理信息系统(GIS)的飞速发展,促进了网络地理信息系统(WebGIS)的兴起,Web2.0的出现,更使人们通过网络对空间地理数据的互操作成为了可能。本文针对WebGIS目前所面临的技术瓶颈,介绍了一种新兴的、开放标准的、基于XML的文本式矢量图形描述语言——SVG技术,并在此基础上介绍了GML技术,分析了GML怎样表示空间数据以及用SVG对其进行发布的优点。最后又介绍了XSLT技术,并结合一个具体的GML文档实例,说明了如何运用XSLT实现GML到SVG的转换。
关键词:WebGIS,空间数据,XML,电子信息论文发表,SVG
1 概述
万维网与地理信息系统(GIS)的飞速发展,促进了网络地理信息系统(WebGIS)的兴起,基于XML的SVG技术实现了图形、图像和文字的有机统一。GML为地理信息的互操作提供了一个很好的解决方案。这就为实现WebGIS功能提供了可能。
1.1 研究背景
Internet的飞速发展,促进了WebGIS的兴起,使人们通过网络获取互操作异构地理数据成为了可能。WebGIS作为万维网与GIS相结合的产物,是利用万维网向用户提供地理空间信息服务的地理信息系统。
SVG由于其具有开放性、文本性、可嵌入多媒体信息以及可加入交互、动画等特点,文件较小、传输速度快、对客户端的软硬件要求不高,以其独特的优势,将是WebGIS适应“社会化GIS”的发展和要求、提高自身实际应用能力的关键技术。
1.2 研究现状
目前,国外已经开发了许多SVG的编辑工具、浏览器和应用系统。更为重要的是,Netscape公司和Microsoft公司也己经开始进军SVG领域,这标志着未来的网络浏览器会内置对SVG文件的支持功能。国内在SVG的编辑、生成工具及应用系统方面都还处于起步阶段。但也出现了SVG编辑生成工具,如方正画苑可将设计结果输出为SVG格式,输出丰富的图形、图像和文字的设计效果。目前国内外对SVG在WebGIS中的应用研究正逐步深入,
2 GML与SVG技术
在WebGIS应用中,地图数据的显示一般采用两种方式:栅格地图或者矢量地图。显示栅格地图,用户不需安装插件,但不能对图像进行进一步的操作和交互。若要进行地图缩放、平移和选择等操作,则要传递鼠标的x,y坐标到服务器端处理,生成新的栅格图像再传递到客户端显示。SVG是一种常用的且基于XML的矢量图像标准,是一种基于XML描述可容纳矢量图形、点阵图像和文本图像的语言。
2.1 GML及其特点
地理标记语言(Geography Markup Language)GML是由Open GIS联盟制定的基于XML对地理信息传输和存储的编码规范。利用GML可以存储和发布各种特征的地理信息,并控制地理信息在Web浏览器中的显示。
作为实现空间信息的共享与对异构空间信息进行集成以及开放式WebGIS的进一步发展的有力工具,GML有如下特点:
① GML基于文本表示地理信息。与XML编码类似,也是用文本的方式进行地理信息表示。文本比较直观,容易理解,编辑,检查和转换。
② GML对几何特征及其属性进行编码。GML是基于OGC的地理信息抽象模型,即空间实体特征及属性封装。它用地理实体描述世界。地理特征(Feature)包括一系列的属性和相应的几何信息,一般来说属性由名称、类型和属性值组成,几何信息由基本的几何建模体(如点、线、面、曲线、多边形等)组成。GML可以对很复杂的地理实体进行编码。
③ GML可对空间参考系统(SRS)进行编码。空间参考系统是地理信息系统数据处理的基础。GML封装了空间地理参考系统及主要的投影关系等,确保了分布式处理的扩展性和灵活性。
④ GML可以实现地理数据的分布式存储。GML对地理数据的分发是非常便捷的技术,同样可以成为地理数据分布式存储的重要手段,主要的技术工具是XLink和XPointer。
⑤ GML可以用公共工具进行浏览和编辑。
⑥ GML可以实现与非空间数据的集成
2.2 SVG的特点及其技术优势
SVG作为网络图形新标准和XML的一种应用,随着WebGIS技术的成熟,SVG可以在基于网络的应用中与其他技术进行有机集成。具有以下特点:基于XML标准;矢量图形和高质量的图像;灵活易用的文件格式;支持交互性;支持Xlink和Xpointer;更好的扩展性;独立性;开放性。
3 基于SVG的WebGIS体系结构
将SVG用于WebGIS,具有非常重要的意义:一方面对于众多的非专业用户,可方便地通过各种SVG创作编辑工具来组织、发布自己的空间信息,从而使地理信息资源和其他网上资源一样,被整个社会方便地共享,以充分发挥其应有的价值;另一方面,由于SVG的交互动画功能,据此产生的交互地图,展现在客户面前更具有表现力。
3.1 地理空间数据的SVG编码
SVG定义了六种基本形状,分别为圆、矩形、椭圆、线、折线和多边形,这些基本形状和路径一起,可以组合成任意形状的图像,可以满足GIS系统制图的需要。
3.1.1 圆形(circle)
一个原点在坐标(100,100),半径为30,以红色为边缘线,蓝色填充的标准圆形。如图3-1
3.1.2 矩形(rectangle)
指定了左上角点坐标(100,100),宽度为200,高度为100,以红色为边缘线,蓝色填充的标准的矩形。如图3-2
3.1.3 椭圆(ellipse)
指定了中心点坐标(150,100),x轴半径长度为100,y轴半径长度为50,以红色为边缘线,蓝色填充的标准的椭圆。如图3-3
3.1.4 线(line)
指定了起始点坐标(50,50),终点坐标(300,50)的红色的标准的直线。如图3-4
3.1.5 折线 (polyline)
指定了起始点坐标(50,100),中间折点坐标(100,150)终点坐标(250,50),以红色表示线形的标准的折线。如图3-5
3.1.6 多边形 (polygon)
指定了起始点坐标(100,100),中间折点坐标分别(50,150),(200,250),(300,200),(230,170)终点坐标(250,50),以红色表示边缘线,以蓝色填充的的标准的多边形。如图3-6
3.1.7 路径(path)
指定了起始点坐标(208,128),中间路径分别以C开头为,以红色表示边缘线,以蓝色填充的的标准的路径。如图3-7
3.2 系统体系结构
将GML和SVG应用在WebGIS中,主要的问题就是如何将GML转化成SVG.。可以先将空间数据转换成GML格式存储,再通过XSLT将GML转换为SVG。目前主流的浏览器IE还不支持SVG的显示,所以要先在IE浏览器上安装SVG图像插件(如SVGViewer),从而实现失量图形的显示。
工作原理是客户在浏览器中指定一个请求并发送,请求通过HTTP协议发出,Web服务器端收到请求后解析并创建一个SQL查询,通过数据访问接口把SQL查询传递到SVG数据库,数据库执行查询并把检索到的数据动态转换成相应的SVG格式和HTML格式的文件返回给客户端,客户端将文件显示在页面上由于客户端接收的SVG是矢量数据,一些基本功能比如地图图层控制、查询、缩放、漫游等可在客户端进行,不需要频繁地向服务器发送请求,极大地减少网络数据传输量和服务器的负担。
4 SVG技术在WebGIS的应用实现
现实中的图形数据多以SHP格式或MIF之类的GIS软件数据格式存储,要充分利用这些数据,在生成SVG图形时,我们就需要将这些数据转换为SVG格式。由于SVG是采用文本语言描述的,所以先要将图形数据装换成GML格式,并根据GML文件编写一套合适的XSLT样式表,通过JAVA转换程序最终将图形数据转化为SVG格式
4.1 XSLT技术简介及其工作原理
XSLT(Extensible Stylesheet Language Transformations)即可扩展样式表语言转换,是一种用来转换XML文档结构的语言。它可以将一个XML文档转换成另一个XML文档,还能把XML文档转换成HTML和许多其他基于文本的格式。
XSLT把XML文档转换成必需的输出结果,这个过程一般包含两个方面:首先是结构变换。在该变换中数据从传入XML文档的结构被转换成反映所需输出结果的结构,这是转换中的主要的一步它可能涉及选择数据、汇集这些数据、分类这些数据、或执行算术转换等;其次是格式化,在该格式化中新结构按所需的格式得到输出。XSLT依赖于XML语法分析器,无论是DOM语法分析器还是SAX语法分析器,它把XML文档转换成一个树形结构。XSLT所操纵的正是文档的这种树形表示结构,而不是文档本身。XSLT语言是说明性的,它只是描述所需的转换,而并不是提供实现这个转换的过程性指令系列。真正的转换实现则依赖于XSLT处理器。
4.2 GML 几何模型
空间几何对象可以归纳为点,线和多边形等几种空间类型。GML通过Geometry schema定义了有关几何基本的图形元素,geometry.xsd提供了点(point),线(line),多边形(polygon),点集(multipoint),线集(multiline)和多边形集(multipolygon)等基本几何图形,甚至是复合类型(complextype)几何图形,都可以直接使用。
4.3 SHP文件到GML文件转换
根据GML3.0规范中的Schema的描述和SHP文件的格式,就能将SHP文件转换为GML文件。在转换过程中,首先要创建一个GML格式文档,添加GML描述信息,然后循环的将SHP文件中的地理信息元素转换为GML中的几何图元。
这里以ESRI公司地理数据文件为例,其数据格式是Shapefile格式的。一个Shapefile文件包括一个主文件(SHP),存储的是相同几何类型的空间对象;一个索引文件(SHX),供主文件索引使用;一个dBASE文件(DBF),存储的是相应空间对象的非空间属性。我们可以先把这些文件用工具如Fme,ArcSDE或者编程将其导入支持空间操作的数据库中,再由数据库输出GML文档。当然也可以直接读取文件产生GML文档。但前者是建立WebGIS的通用作法。对于其它格式的地理数据,我们也同样可以这样做。下面的这个GML文档 change.gml,是用程序从数据库中输出的。
4.4 GML到SVG的转换
从GML到SVG的转换需要进行坐标转换和文档映射两部分工作。SVG提供了平移、旋转、伸缩、矩阵变换等几种坐标转换方法。使用XSLT对GML文件转换真正依赖的是XSLT转换器。它们的转换过程,首先是编辑GML和XSLT源文件change.gml和change.xslt,再利用JAVA转换程序生成SVG文件。采用这种转换方法的优点是:修改图形时不需要修改SVG源文件,只需要修改GML文件。
4.4. XSLT样式表
根据结构分析编写了XSLT表,首先,对于面状数据,将每次读得的坐标串解析给元素path的属性d绘制。但对于坐标串,起始点前加上M,而后的每一对坐标,前面加上L,最后的一对坐标的后面加上Z结束。利用XSLT中的concat函数经过这样的处理后,再将整个坐标串赋给d。
对于点状数据,则是将其在GML文档中所包含的坐标串解析给SVG中的Circle元素,而x、y坐标则分别以变量的形式赋予Circle元素的cx和cy属性,并为Circle元素的半径r属性赋一个较小的值,这就表示可以绘出点对象。
对于线状数据,我可以采用和面状数据一样的方式将坐标串解析给元素的path属性d绘制,我们所进行的转换中只考虑了空间数据不考虑属性数据,因为这里我们关心的只是最终的SVG图。
4.4.2 转换程序
本文用Eclipse进行JAVA程序的编写以及运行,相比命令行编辑而言,集成开发环境Eclipse使用更简洁有效,他可以直接进行编辑运行,并能提示编译中的错误。有了XSLT样式表change.xslt编译好了的转换程序trans.java,就可以根据GML 文档change.gml生成相应的svg文件change.svg。最后在浏览器打开change.svg,便可以看到最终的SVG图。
5 地图交互功能实现
地图控制是电子地图最基本的功能,包括地图显示、地图缩放、漫游、图层控制、鹰眼漫游等功能,这些交互功能需要在客户端完成。SVG本身提供了对DOM和Script的较完善的支持,因此可以使用Javascript编程来实现地图的交互功能。
5.1缩放功能
Adobe的SVGViewer本身提供了图形的缩放功能,但是要通过鼠标右键菜单才能实现,且功能较为单一,不直观也不方便。我们设计一个界面用来实现对地图的缩小、放大功能。放大、缩小、平移都是对整个SVG图形对象进行操作。点击地图,获取坐标值,以当前点击的点为中心,利用currentScale变量进行图形的放大和缩小变化。
5.2图层控制
SVG采用基于XML的DOM文档管理结构,很方便实现层次管理,其组对象就可以将所有图形管理起来,一个组中存储一个专题图层,每个组都有一个唯一标志ID属性,根据这个ID属性就可以通过JavaScript控制图层的显示与否。
5.3 地图漫游
地图漫游功能,点击界面中的地图漫游按钮,用鼠标在原图上进行拖拽,可实现地图的上下左右的定向漫游,在右侧的小地图上也可以看到拖拽后的漫游效果。
5.4 拉框缩放
拉框缩放功能的实现分为两步:首先创建矩形对象,并把矩形元素加入到SVG对象中,鼠标移动时动态获取矩形框的末坐标并划线,实现跟随鼠标移动拉框,然后根据拉框的大小和拉框矩形的中心点对地图进行缩放和平移操作。
5.5 测量距离
当图形中点的坐标捕获到时,测量两点之间的距离就很容易实现了,只需要编写一个函数实现两点之间距离的数学函数式,就可以得到图形上的距离,如果要获得地物之间的实际距离,还需要除以比例尺。
5.6 地图复位
不管前面把地图放大了多少倍,漫游到了地图的任何一个小角落,都可以让地图回复到最原始的地图大小状态,将所有内容以适合的比例显示到当前地图窗口中。
5.7 鹰眼漫游
鹰眼功能就是实现鹰眼SVG对象和地图SVG对象之间的联动,关键点是判断两个SVG对象进行联动的数学关系。在鹰眼中,地图只是作为参考,是不移动的,移动的是红线层。地图进行移动、缩放等操作时,根据两个地图对象的数学关系进行联动操作。
结论
GML和SVG是开发WebGIS的强有力的工具。将SVG和GML应用于WebGIS有利于地理空间信息的存储、传输和发布,克服了一些原有WebGIS中存在的问题,如异构、分布空间数据的存储及失量数据的传输和显示等问题。GML可以实现异构空间数据的存储,是解决网络上多数据格式空间数据的一个有力方法,同时GML又实现了数据描述与表现的分离,GML可以只描述数据,表现方式可以通过其它方式实现,如SVG。SVG着重在于二维矢量图形的表现,可以通过转换将G M L存储的信息清晰、完整的表现在浏览器上。两者的结合使WebGIS的功能更加丰富,开发更加简单,实现更加容易。
参考文献
[1]MIT.LatestSVGFull[EB/OL].http://www.w3.org/TR/SVG12,2005:03.
[2] 刘兴权,田磊,吴涛.SVG技术在WebGIS中的应用[J].地理空间信息,2009,7(2).
[3] 肖昕.SVG的发展与应用[J].计算机系统应用.2005,11:34~37.
[4] 李威.基于GML/SVG的WebGIS构建:[D].河南:河海大学地图学地理信息系统,2007
[5] 简友光,李岩基于SVG+GML的空间信息发布的方法研究[J].计算机与数字工程,2006,34(1)
[6] 许春杰,邹乐君.SVG、GML在WebGIS中的应用[J].GIS技术,2002(3):38~42.