1 前言
测绘数据生产的成果最终将交付客户使用,传统意义上,这种交付是利用纸质地形图进行的。但是,随着Internet技术的不断发展以及人们对地理信息系统(GIS)应用的需求,利用Internet在Web上发布和出版空间数据,为用户提供空间数据浏览、查询和分析的功能,已经成为GIS发展的必然趋势。
2 基于Internet技术的地理信息系统——WebGIS
WebGIS技术在现代数据工程中扮演着越来越重要的角色,随着测绘科技的发展,为了测绘产品的进一步推广,需要在网络客户端使用矢量地图3或者栅格地图。如果使用矢量图形,一般需要在客户端事先安装插件(plug-in),或者运行时自动下载JavaApp let或ActiveX控件;在客户端使用栅格图像则不需要任何额外程序。不过,正因为在客户端使用了插件、Java Applet或者ActiveX控件,采用矢量图形方式可以在本地执行许多操作,在一定程度上减少了服务器端的负载和网络上的数据传输量;而采用栅格图像方式,在客户端只能读得鼠标的x,y坐标,进行地图缩放、平移和选择等操作都要传递x,y坐标到服务器端处理,生成新的栅格图传递到客户端显示,增加了服务器和网络传输的负担。
3 新一代地图数据发布平台SVG Map Server的技术实现
SVG(Scalable Vector Graphics)是一种基于XML用来描述二维矢量图形和矢量/点阵混合图形的置标语言,是一种全新的矢量图形规范。SVG规范定义了SVG的特征、语法和显示效果,包括模块化的XML命名空间(nam espace)和SVG文档对象模型(DOM)。SVG的绘图可以通过动态和交互式方式进行,在实际操作中,则是以嵌入方式或脚本方式来实现的。SVG不仅提供超链接功能,还定义了丰富的事件。由于SVG支持脚本语言(script),可以通过Script编程,访问SVG DOM的元素和属性,即可响应特定的事件,从而提高了SVG的动态和交互性能。SVG实现了图形、图像和文字的有机统一。SVG除了支持HTML中常用的标记,如文本、图像、链接、交互性、CSS的使用、脚本(Script)外,还提供了大量针对图形、图像、动画的特定标记,为实现GIS提供了可能。
SVG网络地图服务器代表新一代网络地图服务技术,它使用已成为业界工业标准的技术,可以为用户提供先进的网上GIS功能,例如:地图浏览、栅格影像发布、属性查询、地图编辑、相关文件查询等,网上数据服务等等。SVG网络地图服务器是一套WebGIS应用产品,它具有WebGIS软件所应具有的各项功能。其开发体系结构采用B/S结构,充分利用了Web应用简便和灵活性的特点,大大地强化了其事务处理和安全性、完整性约束能力,从而实现了真正业务相关的"主动式WebGIS系统"。
4 基于SVG技术实现昆明市基本地形图数据的发布
4.1 昆明市基本比例尺地形图数据情况
昆明市基础数据发布需求主要集中在城市大比例尺地形图数据工作上,经过多年的生产和储备,昆明市域范围内数据有1∶500地形图数据500km2,1∶2000地形图1500km2,还拥有海量的影像地图、栅格地图数据,数据量为40G左右,昆明市海量数据发布的基础
是城市多元数据,并将由单一局域网逐渐过渡到Internet进行数据的发布。
4.2 技术方案
(1)基本解决方案。昆明市以分幅数据文件作为数据更新维护的基本单元,以昆明市域为基础,并按照比例尺、查图最大范围、数据量等条件划分数据格网,其中存放1∶10000、1∶2000、1∶500比例尺DGN格式数据文件。通过SVGMap Server将多比例、多文件、多格式的数据通过客户端浏览器直接发布给查图部门及用户(测绘单位网络结构分布图见图1)。将Oracle Spatial作为SVG Map Server的数据源,开发基于DGN数据格式进入Oracle Spatial的工具,并进行数据更新并进行数据发布。

(2)针对具体问题的解决方法。
重点解决服务器平衡能力,相对需要服务器提供的内存和资源占用较少,一般4G以内即可。
针对Oracle Spatial目前不能直接支持二维弧和文字注记等几何体,可通过自定义数据格式将数据存入Oracle Spatial,或针对SVG进行开发,强化其几何功能。
数据库中的数据按照全域方式存储,数据图层按照Oracle Spatial模型数据存储。SVG Map Server根据Oracle数据库中存储的数据,动态发布数据库中现实的数据。SVG地图发布器产品结构设计图2:

4.3 SVG网络地图服务器设计实现
(1)SVG地图发布核心服务的实现。采用微软公司的.NET技术,主要完成将客户请求分析,任务分发与协调,地图剪裁,SVG生成,结果发布等任务。SVG地图发布核心服务是一个多线程网络发布器,它采用用户模板来定义响应用户的地图分层、符号、线型和颜色等内容。SVG地图发布核心服务主要由发布器,地图剪裁器和用户模板组成,其作用详见表1:
表1 SVG的构件及其主要作用
| 构件 | 主要作用 |
| 地图发布 | 请求分析,任务分发,SVG生成,结果发布 |
| 地图剪裁 | 空间检索,数据提取,数据整合 |
| 用户模板 | 地图分层,显示比例,符号,线型和颜色 |
(2)一般功能模块开发。
开发常用的WebGIS应用的各项功能,主要包括:地图显示,浏览、属性查询。很多功能可用客户网页脚本如Java Script,VB script完成请求,由SVG地图发布核心服务完成处理,或直接在客户端完成处理,如目标属性查询等。
(3)专用功能开发。
一些复杂功能,专用功能由专门构件实现,这些构件与SVG地图发布核心服务有统一的接口。
4.4 SVG技术解决数据发布过程中关键技术问题的方法
(1) 符号线型还原。
在数据发布过程之中,空间数据的二次还原是一个重要的关键点,数据还原就是在数据发布的同时将数据的线型库和符号库进行重新装配,使数据在发布平台上能够进行直观地查询。数据发布中符号化问题近几年来一直是一个重要的技术问题,而传统上的数据发布仅解决了简单线型符号的发布问题,如道路双线,而没有解决复杂线型发布问题。
SVG提供了丰富的图形对象,包括直线(line)、路径(path)、圆(circle)、图标(symbol)文字(text)、图像(image)等,满足了GIS系统的需要。这些图形对象可以通过设置不同的属性、显示样式来达到不同的显示效果。对象在SVG文件中以XML标签的形式存在,而对象属性以标签的属性来存取,可以通过访问SVG的DOM对象的方法来方便地存取这些对象及属性。
同时SVG中还提供了组的管理及引用等功能。这些特征在GIS中得到了广泛的应用,通过制作各种复杂符号解决如同城市大比例尺地形图数据上的铁路线型发布等一系列问题,解决了这些问题,也就解决了图形在客户端显示的问题。
(2) 图层管理。
数据发布的另外一个技术瓶颈问题是数据前端显示的平滑性问题。在数据前端漫游工作中,效率是一个对客户使用数据及系统很重要的一环,以往一些WebGIS发布系统,如果数据量大,系统就将会发生崩溃。SVG技术通过控制图层方法很好地解决掉数据压缩和释放的技术瓶颈问题,在海量数据(如10G)内能够使数据以相对平滑的方式发布。
SVG采用基于XML的DOM文档管理结构,很方便实现层次管理,其组对象就可以将其下面的所有图形管理起来。节点中的childNodes属性可以获取所有的子节点的集合,get Elements By Tag Name()方法可以获取某种类型对象的列表,如要获取某组下的所有路径(path)对象的集合,就可以调用get Elements By Tag Name("path")。笔者通过采用组对象来实现图层管理功能,不同图层的对象包含在不同的组中,通过设置组的属性,就可以实现如可见性、颜色、透明度等设置以及选中、删除所有对象等操作。SVG中的对象的样式属性具有继承性,如果下一级没有某样式属性,则直接使用其上一级的属性,以此类推,直到顶级为止。如:对1某层设置了某个显示透明度,则其下级元素显示时,均采用该透明度,除非其下级元素指定了透明度属性。
SVG和Oraclespacial实现完美结合,将各比例尺数据按照比例尺、查图面积、数据文件尺寸等条件划定对应比例尺数据格网,以格网为单位存放对应比例尺地图数据,在设计的时候,SVG技术使用逐级放大的技术,如在某个级别上仅显示某些图层,使计算机内存调用数据量始终保持在一个合理的水平上面,充分使客户端用户感受到界面的平滑性,在满足工作的同时提高工作的效率。

(3) 将实现基于浏览器的GIS系统,需要将SVG图形对象嵌入到网页中。
为了保证在大量数据文件中的快速查找并显示分幅数据,系统将在界面中提供数据显示控制,即由用户选择需要显示的格网,确认后即显示对应格网中的地图数据。
SVG提供了丰富的消息触发及事件响应函数,获取用户消息。如在地图上移动、点击鼠标等。事件的响应可以定义到整个文档对象中,也可以定义在单个图形对象上。如要给某个路径(path)定义鼠标一定事件,比如指定事件触发的条件(即鼠标在path上移动时),mouseMoved为要触发的响应函数,evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理。同样,SVG也提供丰富的状态事件,如数据装载完毕,就可以触发onload事件,作一些初始化的处理。
图形对象在网页中嵌入完成之后,客户端可以通过Windows自带的IE浏览器访问服务器以获取需要的数据。
(4) 地图的交互及控制。
在浏览器中打开SVG文件时,SVG图形作为浏览器的一个嵌入对象出现,可以很方便的通过script函数来获取SVG图形对象及其内部的图形属性。通过获取这些对象和属性,就可以很方便地实现交互功能。
GIS系统最基本的功能是地图控制,SVG Viewer本身提供图形的缩放功能,但要通过操作鼠标时按指定的功能键才能实现,不适合GIS功能的需要,在WebGIS系统中将其屏蔽。但由于SVG提供了丰富的消息触发及事件响应函数,通过捕捉这些消息,来实现自定义的地图控制功能。一个放大地图的实现流程是:用户点击地图,触发onmousedown事件,调用消息响应函数,在消息响应函数中将地图的变换矩阵以当前点击的点为中心放大11倍,更新显示图形。
基于SVG的这些技术优势,可以在数据发布系统中不断开发完成诸如红线划定,节点增减等一系列功能,可以完成客户端的具体操作(见图4)
。

5 SVG技术在昆明城市地形图数据发布中具有的特点
笔者对用SVG实现基于Web技术GIS,成功地开发了昆明市基础地形图数据发布系统,发布了昆明市200km2的1∶500地形图数据,3000km2的1∶10000地形图数据和25m Spot卫星影像数据,并投入实际运用之中。虽然短期内还存在一些问题如硬件瓶颈等,但从长远来看,SVG技术代表网络矢量化图形的发展方向,必将在包括GIS在内的各个方面得到广泛应用。
与传统的WebGIS软件相比,SVG网络地图服务器具有查询速度快、稳定性高、保密性强及系统集成性强等特点;同时,具有良好的兼容性(可同时兼容Arcgis、Micro Staton等多种格式的数据)。
对于城市测绘部门而言,SVG技术具备良好地效费比,经济实用,风险小。
6 结语
在测绘新科技日益发展的今天,数据发布是成为测绘产品对外服务的一个不可或缺的关键要素,SVG技术的运用很好地解决了这个问题,并在昆明市城市数据发布工作中推广使用,为测绘事业的进一步发展提供了技术支持。
参考文献
[1] CJJ100-2004,城市基础地理信息系统技术规范.
[2] GB/T7929-1995.1∶500、1∶1000、1∶2000地形图图式.
[4] Safe software.FME Getting Started.
[5] 陈辉、谭春、赵北战等.昆明市基础地理信息系统建设方案.世纪安图数码科技发展有限责任公司.
[6] 周立、马建荣、李新刚等.昆明市基础地理信息系统建设方案.昆明市龙图寰宇科技开发有限责任公司.
关于作者
解智强(1973--),男,工程师,云南昆明市勘察测绘研究院,主要从事GIS及地图制图工作。
吴俐民,王贵武,李国柱,云南昆明市勘察测绘研究院
周立,云南昆明龙图环宇科技开发有限公司
(THE END)
如果你喜欢这篇文章,请阅读本文相关的下列内容:
