基于SVG技术进行WebGIS开发浅析
SVG(Scalable Vector Graphics)是W3C组织为适应InternetWeb应用的飞速发展需要而制定的一套基于XML语言的二维可缩放矢量图形语言描述规范。传统的HTML静态页面描述语言的采用的标记固定、有限且无内涵、不支持矢量图形等缺点日益暴露出来,已经越来越满足不了WebGIS发展要求。目前网络上浒的MacroMiedia公司提出的SWF文件格式以其图像矢量化,文件较小及具有交互性而倍受青睐,但它相比于SVG,还是有一些不足之处。XML作为公认的世界未来统一格式标准已经为越来越多的领域所应用。SVG作为XML的一个描述矢量图形的子集的出现,为解决WebGIS面临的静态性,数据格式多样性,平台相关的Web内容表现和缺乏交互性,网络传输慢等问题提供了一个全新的解决方法。
1 SVG与HTML的比较
SVG与HTML相比,具有如下优点:
(1)突破了HTML固定标记集合的约束,使文件的内容更丰富、更复杂、更容易组成一个完整的信息体系;
(2)SVG是矢量图像格式,非常适合在网络中传输和应用。一般而言,SVG图像要比其他网络图像格式(如GIF,JPEG)更小,下载速度更快;
(3)由文本构成矢量图像。其文本性使得SVG文件有良好的跨平台性和可以通过DOM(Document Object Model)方便的对其进行编辑,修改。另外一个很突出的优点就是SVG文件中的文字也可以被网络搜索引擎作为关键词搜索到。
(4)具有动态交互性。SVG图像能对用户动作做出不同响应,例如高亮、声效、特效、动画等。另外,由于Microsoft的IE6.0中已经集成了浏览SVG文件的插件,这使得SVG的浏览更加方便,容易。
2 SVG与SWF的比较
SWF与SVG相比,其不足体现为:
(1)SWF标准的非开放性。SWF是一个相对封闭的技术,与其他的开放标准之间没有一个完全融合的方案。随着XML及其他开放标准的发展,SWF的不协调性将日益突出。
(2)SWF较差的可编辑性。SWF是Flash的输出文件格式,作为最终的动画生成格式,其创作过程封闭在SWF文件中,无法再进行二次编辑。对于SVG来说,因为它是一种文本格式,用普通的编辑工具就可以打开并进行编辑。
(3)SWF无法进行图像搜索。由于SWF为非文本格式,文本不能独立于图像而存在,因此无法建立类似于SVG的图像搜索功能。
鉴于SVG的以上特性和优点,在WebGIS应用领域,如果将地理空间数据用SVG格式来存储、传输和显示,那么对于获得WebGIS服务的非专业的大众用户群,一方面可以通过各种SVG工具来组织,发布自己的地理空间数据,从而使地理信息资源和网上其他资源一样可以被整修Internet共享;另一方面,由于SVG的交互性,他们也将得到更具表现力和吸引力的WebGIS服务。
3 SVG与VRML的比较
虚拟现实建模语言是用来描述三维交互场景和实体的一种文件格式。用于联接全球网(WWW)。它可以用于创建复杂场景的三维表示,如装饰图像,产品设计和虚拟现实实现。同Java 3D一样,VRML也是遵循OpenGL标准的。OpenGL是近年来发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。VRML在其描述中也采用了节点树的表达方式。与VRML不同的是,SVG是专门针对二维场景而推出的一种基于是XML标准的标记言语,对三维场景它显然无能为力。另一方面,VRML并不是基于XML标准的,这对我们实现三维OpenGIS也是一个不利因素。
4 SVG与GML、VML、PGML的比较
矢量标识语言(VML),精度图像标识语言(PGML)都是作为W3C的矢量图像初始标准在1998年提出的。VML和PGML在很多地方非常的类似,但VML比较适合一些普通矢量图像,而PGML可以做出更加丰富多彩,适合专业设计和公众出版的图像。为了进一步促进图像标准的发展,W3C成立了SVG工作组。SVG工作组将VML和PGML的优势结合在了一起,重新推出了新的标准矢量格式,这就是SVG。GML、SVG、VML都与矢量图形有着密切的关系:GML在表示实体的空间信息的同时加入了实体的其他属性信息,是表示实体的空间信息和属性的编码标准,但它并不支持直接显示图形。而VML和SVG是在表示图形的矢量信息同时加入了图形的显示信息(即以什么样的样式显示矢量图形),是显示矢量图形的两种比较好的格式。相比之下,SVG是综合了VML的优点后推出的,是国际标准,它比VML具有更多的优点,也有更广阔的前景。
基于SVG的系统主要由Web服务、GIS服务和数据存储三部分的关键技术构成,采用基于B/S方式的三层体系结构,整个工作流程如下:
(1)客户端向Web服务器发出服务请求;Web服务器接收到请求后,分析调用请求。如果只是普通的网页服务就由Web服务器直接处理;如果是GIS服务请求,则向下连接GIS服务器。
(2)在GIS服务器中,根据调用请求,在其中完成空间数据到GML文件的格式转换,以及GML文件到SVG文件的转换,并转回Web服务器。
(3)Web服务器把GIS服务器传回的SVG文件发送给客户端,在客户端的浏览器中进行显示,利用JavaScript脚本语言实现地图的操作和交互功能。
整个系统功能的实现主要分为服务器端和客户端的技术实现,在服务器端主要由Web服务器和GIS服务器组成。其中,Web服务器主要负责与客户端的连接,并提供普通的Web服务,当客户端需要GIS服务时才连接GIS服务器;GIS服务器主要负责与空间数据的连接与管理。对于多源异构的空间数据,在GIS服务器中进行数据格式的转换,最终生成SVG文件并传回给Web服务器,由Web服务器再传回到客户端进行显示。本文主要讨论了客户端的SVG图像展示和交互操作的实现。
在客户端安装Adobe公司的SVG插件,在客户端使用SVG技术,结合JavaScript脚本语言实现基本的Web GIS功能,包括地图平移、放大、缩小、图层的管理、地图的交互性显示以及对图层属性的查询等。整个系统基于矢量图形,在放大和缩小的情况下,图形显示质量好;能无级放大和缩小,实现了对测线属性和测线二维反演图的查询;能分别管理各个图层的显示与隐藏,并实现了对工作区的交互显示。
1 地图的平移
地图向左平移功能的实现代码,与其他平移方法代码类似,主要是利用currentPosition变量的增加和减少进行平移操作。
function hori-move(e