基于SVG的地图服务系统的实现
摘 要:所谓地图服务就是利用成熟的网络技术、通信技术、GIS(地理信息系统)技术,实现一种新的地图服务方式。本文介绍了SVG技术及如何在地图服务系统实现。
关键词:SVG;地图服务系统
一.引言
SVG是可缩放矢量图(Scalable Vector Graphics)的简称,是一种采用XML来描述二维图形的语言,是基于XML的一个全新的标准开放的矢量图像和动画格式。SVG可以构造三种类型的图形对象:矢量图形、位图图象和文字。图形对象可以被组化、样式化、变形和重新组合,包括图象嵌套、变形处理、剪辑路径、Alpha蒙板、滤镜特效和模板对象。最关键的是:SVG完全用普通文本来描述。也就是说这是一种专门为网络而设计的、基于文本的图像格式。SVG是基于XML的言语,所以可扩展性很强,能够描述任意复杂的图像。SVG是设计与编程之间的桥梁,与传统的图像制作方法不同,SVG图形是由程序代码生成的,这种语言是基于XML的,因此它可以和W3C的其他标准(如CSS、DOM等)无缝集成。SVG不同于传统的二元(平面)图像和动画制作,它使用简单的一元(文本)语句完成矢量图像,具有超强交互性和超强显示效果等特点。SVG图像中的文字独立于图像,适合对精度要求极高的地图进行显示,并且可以编辑和查询地图中的文字,特别适用于网络速度较慢情况下的地理信息网络发布。
二、基于SVG技术的地图服务系统
地图服务系统涉及福建省各个城市的地图数据,除了提供地图服务中的位置标示、位置检索、公交乘车路线换乘、关注点周边信息查询等基本服务外,还包括基于GIS平台支持下的移动位置服务(LBS)业务。为实现较高的代码重用性,使系统有较高的稳定性,并考虑系统的可扩展性,地图服务系统采用SVG技术提供业务功能支持、以J2EE技术对远程访问控制。
系统基于J2EE结构,以Oracle Spatial为空间数据平台,以SVG作为地图图形数据和交互信息的载体,结合XML/XSL作为数据交换手段,通过ECMAScript脚本语言提供界面操纵能力,采用B/S架构,以Web应用方式实现主要的业务流程。
(一)客户端功能设计
客户端采用插件SVG的形式,由于目前主流浏览器还不支持SVG,因此要采用Adobe的SVG插件SVG Viewer3.0来对SVG文档进行操作。为了更好地满足地图服务系统的实际需求,该系统在客户端必须完成以下地图基本功能:
1、作为地图引擎的基本功能,提供基础地图的展现。
2、为最终用户提供方便的放大、缩小以及查看当前比例尺寸的功能。
3、提供非拖放方式的地图漫游功能,增加键盘支持。
4、提供快速的鼠标漫游地图功能。
5、提供用户在地图上测算路径距离的手段。
6、在用户多次缩放、查找等操作后,回到使用地图的初始化状态。
(二)服务器端功能设计
服务器端主要功能是接收客户端提出的请求并进行分析,从数据源服务器中提取符合请求的原始数据,并通过转换,转换为可解析的格式良好的数据文档。功能主要集中在Web服务器和应用程序服务器两个方面,它们是地图服务系统的核心,其主要作用是动态地检索和过滤地理空间数据和属性数据,为客户端地图动态交互提供数据源。服务器端需实现以下功能:
1、解析输入请求,并将请求分发到相对应的对象进行处理。
请求路由器分别实现如下方法:
doGet方法:解析用户的请求,根据请求的内容,将请求分发到相对应的对象进行处理。
doPost方法:解析用户的请求,并根据请求格式的不同区分为SOAP请求和普通的表单POST请求,最后将请求分发到相对应的对象进行处理。
2、从SuperMap Deskpro生成的工作空间文件中读取地图结构、地图显示风格等内容,用于支持SVG元素工厂和SVG组装器的工作。由格式解析器来负责处理由SuperMap Deskpro生成的地图工作空间SXW文件。
格式解析器必须完成如下工作:
根据传入的名称,读取对应的SXW文件并在内存中生成XML树;
接受检索请求,返回图层信息和图层显示风格信息
3、数据缓存器缓存用户调用请求产生的结果数据,并根据用户请求从Oracle数据库中的缓存数据存储表中直接读取数据。用于提高服务器性能。数据缓存器自行维护一块缓存数据,采用名称—内容方式存储数据。
4、生成对应数据库表的命名SVG元素,,并以对象数组方式返回。用于支持SVG组装器。调用方传入数据库表名和命名方案,由SVG元素工厂完成如下工作:
根据表名称自动连接数据库,返回请求的数据记录
工厂根据记录中描述的数据类型生成相应的点、线、面、文本对象
工厂向格式解析器查询记录对应的显示风格,并设置到对象中;
工厂向调用方返回元素对象数组
5、根据请求生成对应的SVG文件。由SVG组装器完成如下的工作:
解析请求内容,创建SVG文件框架,获取需要生成的地图名称;
根据地图名称,创建格式解析器对象;
从格式解析器获取图层描述信息;
根据图层描述信息,从SVG元素工厂获取对应的SVG元素数组,并从元素数组生成SVG片段,拼装到SVG文件中;
返回SVG字符串。
6、数据更新器通过调用SVG组装器来生成SVG,更新SVG文件内容。
三、结束语
SVG的“矢量描述”并不是一个全新的概念,但它综合了矢量图形、点阵图像和纯文字的优点,用一种标准来进行描述,这较之于网络上流行的压缩式点阵图像优越。统一的标准和开放性是SVG的强大生命力所在。OGC组织己经把SVG作为Web地图表示的推荐标准。因此,SVG是Web地图的合理有效的载体。
参考文献:
[1][美]Bill Trippe. Kate Binder著,高伟等译,SVG设计,机械工业出版社,2003年.
[2]许林.WebGIS体系结构及底层服务的研究与实现 ,2005.3.
[3]刘啸、毕永年等编著,基于XML的SVG应用指南,北京科海集团公司出版,2001.3 .
[4]吴彬卓 . SVG在WebGIS中的应用研究 , 2005.6.
本文编号:16819
本文链接:https://www.wllwen.com/jingjilunwen/jingjililun/16819.html