ELECTRONICS WORLD・探索s观察 SVG格式地图的改进规则 同济大学软件学院钱浩然 【摘要】svG是一种严格遵循xML语法,用于在浏览器端显示二维向量图像的一种文件格式。由于标准的sVG格式地 图只能储存基础图形元素,不能储存对应的分层信息和属性信息,因此不能进行基于图层的相关操作。为了解决该瓶 颈,论文提出了一种标准的svG格式地图的改进规则,使sVG格式地图可以储存分层信息和属性信息。实际操作验证证 明该改进方法是有效的。 【关键词】sVG格式地图;改进规则;图层;结构体 1引言 时态GIS[ ]系统是一个可以提供完善的时序分析功 能,不但在空问上,而且在时间上两个方面管理和分析时 空地理信息的计算机系统。随着GIS与互联网技术的广泛 应用与快速发展[2],不仅能在空间上反映地物的现状,而 且能在时间上反映其发展变化过程及规律的时态GIS的应 用前景是十分广阔的。SVG作为一种完全遵循XML语法且开 放标准的文本矢量图形格式,拥有其优势,可以更好地满 足GIS对时空地理数据图形显示的要求,因此,采用SVG c33 技术作为时态GIS的数据显示是GIS发展的趋势所在。然而 目前的SVG定义规则中不存在十分明确的分层信息,因此 SVG格式地图进行分层一直是一个研究难题。 基础的SVG格式地图只包含绘制元素必要的信息,不 能支持基于语义的相关操作。因此需要对基础的SVG格式 地图格式进行改进,使SVG格式地图可以储存地图分层数 据与属性数据。 2 SVG格式地图的改进规则定义 标准的SVG格式地图只包含基础图形的标签(如 <rect>、<circle>、<el1ipse>等),并没有直接定义用 于存储地图分层数据与属性数据的标签。 对于在SVG中存储地图分层数据的问题,使用SVG中 定义的组标签<g>元素进行适配。<g>元素是一个容器元 素,包含一个或多个SVG图形元素,这与图层[ ]的概念不 谋而合,而且依据<g>元素支持嵌套的特性能够在SVG中 实现多级图层的结构。 对于在SVG中存储地图属性数据的问题,需要改进 现有的SVG规则,定义存储地图属性数据的扩展标签。同 时使用<g>元素对图形数据和属性数据进行分组,使其在 SVG地图中作为一个整体。 2.1 SVG图层的定义 如图1所示,SVG图层使用组标签<g>元素进行表 示,通过包含图层标识符(LAYER)和图层编号(Layer Number)的id属性进行标识。<g>元素下包含该图层所有 的地理元素对象。 2.2 SVG结构体的定义 如图2,SVG结构体表示地理元素中的一个对象,使 用组标签<g>元素作为最顶层元素。<g>元素的id属性标 识该对象所属的图层号(Layer Number)和图层中的位 置(Object Number)。<g>元素的第一个子元素为扩展 定义的XML标签<geo—attribute—data>,用于容纳该对 象所包含的属性数据,其中属性数据采用标签一值对的 方式表示,即标签名为属性名称,标签中所包含的文本 信息即为属性数据。<g>元素的第二个之后(包含第二 个)的所有子元素为该对象的图形数据,可以是SVG中定 义的任意图形元素,包括<line>、<rect>、<circle>、 <el1ipse>等。 r。___。… …’…。…●●一…一●‘…一………‘…。…。…。…。……一…●…-●●-●_●-_●●●●●_'一___《g;‘I= LA难 l删时 lmIb.r GI∞ 捌舯 ,…. <lp 、图1 SVG Layer的定义 ………………………………___………………………^……_……………………………● ;《掌女曲 L|ly|- 辩lIm蛔 o蠹蟮|删w耐 , 酗帕哺 l电..d 哺 <pox ̄NAMbTut冀i’一 僦.N^ 艟》 ;<pox-TYPE>River p.1 ,擘硝—YPE' 《J 硼打i I .d出》 ;<plth ;<met.. A <circle… </p :……………………………………………………………………………………………… 图2 SVG Struct的定义 2.3 SVG定义规则 如上文所说,我们对SVG格式进行了包含分层信息的重 电子世界 ・95・ ELECTRONICS WORLD・探索与观察 新定义。定义规则包括层的定义和元素的定义,定义如下: 在SVG中,使用组标签<g>表示一个图层,其中<g>元 素的idN性包含该图层的图层标识符( ̄PLayer)以及图 层编号。<g>元素下则包含该图层所有的地理元素对象。 其中,每个地理元素对象使用组标签<g>元素作为最顶 图4改进规则后的SVG文档 通过以上对SVG格式进行的有关图层的规则定义, 即可根据标准SVG格式地图的图形元素与对应的属性信息 生成对应的SVG图层。此外,通过XML格式所具有的结构 层标签元素,<g>元素的id属性包含该对象所属的图层号 以及图层中的位置。<g>元素的第一个子元素为自定义的 XML标签<geo—attribute—data>,该标签用于存储元素对 象中所包含的所有属性数据,属性数据采用标签一值对的 方式表示,即标签名为属性名称,标签中所包含的文本 化与<g>元素支持嵌套的这些特性,可以在SVG格式地图 中嵌套多个地理元素,即具有图层分层的格式。这样, 我们就可以将生成具有分层信息的多级图层结构的SVG格 式地图,从而也就可以实现地图的分层操作了。 信息为属性数据。<g>元素中从第二个子元素开始往后的 所有子元素是该对象的所有图形数据,它们可以是SVG定 义中的任何图形元素,像path,line,rect,Circ1e, e11ipse等等。图3和图4分别为标准的无分层规则的文档 和改进规则后的包含分层规则的文档。 3结束语 基于现有标准的SVG格式地图不支持储存分层数据和属 性数据的现状,本文提出了一种支持储存分层数据和属性 数据的SVG格式地图改进规则。本文通过定义图层,将基础 图形元素和分层数据、属性数据储存至同一个图层中,将 分层数据、属性数据与基础图形元素相关联,使SVG格式地 图可以支持基于语义的相关操作:通过定义不同的节点, 可以快速的定位到图层中的基础图形元素、分层数据和属 性数据,方便进行分层数据和属性数据相关的操作。 本文仅是对SVG格式地图改进规则的初步研究。今后 的研究将会着重于改进后的SVG格式地图文件基于语义的 相关操作,例如基于语义的模糊查询的研究。本文为后 期的研究打下了坚实的基础。 参考文献 【11郑湘丽.基于时态GIS的地籍数据存储管理方法研 究『I1_北京测绘,2012,3:5-7. 【2】王家耀,魏海平,成毅,等.时空GIS的研究与进展lJ1 _海洋测绘,2004,24(5):1-4 【3]ScalableVectorGraphics(SVG)1.2Speciifcation.http://www. w3.org/TR/2004/WD—SVG12—2004—10—27/2004—10—27. 图3标准的SVG文档 【4】杜庆峰,许家伟.DWG地图到改进规则SVG地图的转 换方法ⅡJ.同济大学学报(自然科学版),2014,42(9):1426—1431. ・96・ 电子世界