SVG格式地理元素分层

点赞:25171 浏览:117959 近期更新时间:2024-04-08 作者:网友分享原创网站原创

摘 要提出了在SVG图形文件上直接进行地理元素分层的思路,对SVG格式地图分层进行了初步设计,提出了分层算法.经验证,算法是有效的.

关 键 词SVG;GIS;地图分层

中图分类号:TP3文献标识码:A文章编号:1671-7597(2014)09-0050-02

Abctract:IproposeanideatoclassifygeologicalelementsintolayersonSVG/XMLformatmaps,preliminarilydesignthewaytoclassify,thealgorithm.Theapplicationverificationshowsthatthealgorithmiseffective.

Keywords:SVG;GIS;Geologicalelementlayer

我们认为地图是由许多图形元素叠加组成的,每一类的图形元素都各具特点.将一些具有一定特征的图形元素划分在一起,就构成了“层”的概念.常见的地图图层有:河流层、道路层、绿地层、河流层、建筑层、行政区规划层等.图层控制的意义就在于,通过控制地图上元素可见性,在不同的缩放效果下,仅显示所需的地理元素,使地图显得详略得当.例如在一般WebGIS的地图中,不同的放大比例下,所显示的行政区划级别会有所不同.在不同的缩放比例下,显示不同的视图,对不同的地理元素进行筛选显示,可以使用户能有更好的体验.

在GIS中,SVG作为一种图像的表现手段越来越多被使用,但还并不普及;基于SVG信息存储和共享交互则更是有待更多研究.图像分层和地理元素查询等功能上,国内有大量研究成果.但国内大多数研究和解决办法仍是基于栅格等模型,SVG本身几乎只被用于图像表现.事实上SVG因其具有的优势,将其使用在GIS中更低的层级上是值得研究和考虑的.

本文结合国家地理元素分层标准以及SVG本身的特点,在SVG本身这一更低的层级上对地图分层,并验证了分层效果.

1元素的介绍

在SVG的树状结构中,元素的作用是,将一批特征类似的图像元素集中到一起.这恰好便于对SVG地图中的图层进行管理.元素不是图形元素,而是类似于一个容器.任意的图形元素都可以放在同一个元素下,从而成为一组;同时可以通过在元素内的ID属性来标识图层.元素的语法定义如下:

style-attribute等于”style-attribute”

tranorm等于”tranormationmands”>

<!--group’scontenthere-->

元素本身不是图形元素,也不会显示出来,其样式属性会传递给它所有的直接子元素.SVG中每个元素都遵守CSS2的样式继承规则,即子元素的样式继承父元素的样式,但在子元素中定义的样式优先级更高.此外,元素支持嵌套使用,即可以对一个组里的元素按照不同的特征在进行分组细分.

元素作为图层的分隔容器,元素的内置ID值作为图层的指示牌是在SVG中达到分层目的的基本方式.

2图层分类规则及算法

依据《基础地理信息要素分类与代码》中定义,地理元素可以分为定位基础、水系、居民地及设施、交通、管线、境界与政区、地貌和植被等八大类,每个大类下各包含多个小类.例如定位基础大类包含测量控制点和数学基础两小类;水系大类包含河流、沟渠、湖泊、水库、海洋要素、其他水系要素、水利及附属设施八小类等.

由于名称长短不一,为了方便查找和匹配,使用二进制代码来代替复杂的英文字符名称就方便的多.根据图层的层级和个数,我们采用八位二进制代码来标识图层,前四位(0000XXXX)标识一级图层,后四位(XXXX0000)标识二级图层.依据如此编码,地图中最多可包含十六种图层大类,每个图层大类下最多可包含十六种图层小类,也就是说整个地图最多可有二百五十六种图层小类,完全可以满足图层分类的扩展需求.就以第二个大类水系及其以下的七个二级图层为例,前四位编码为0001,七个二级图层的后四位编码为0000至0110.具体表现如下:

水系图层

河流图层

水利及附属设施图层

SVG的本质是XML,SVG和XML一样是一种典型的层次树状结构,这种结构的文档,定位其某一个部分是比较容易的,因此控制也较容易.在SVG中,通过设置元素的Visibility属性可以实现对于元素的显示或隐藏.Visibility属性有两个值可供选择:默认值visible代表显示,而hidden代表隐藏.在SVG中,元素遵守CSS2的样式继承规则.因此,一般情况下,通过设置指定图层根节点元素的Visibility属性就可实现整个图层的显示或隐藏.但是,这种方法并不一定能保证整个图层行动一致,因为在子元素中定义的样式优先级高于父元素,图层中已经预先定义了Visibility属性的子元素将不受图层根节点元素的Visibility属性的控制.

我们可以对这种特殊情况进行特殊处理,除了设置图层根节点元素的Visibility属性,再处理图层中的所有事先定义了Visibility属性的节点.针对两种不同的情况,方法如下:Visibility等于”visible”

对于这种情况,需要在关闭图层的时候,使Visibility属性失效.而在打开图层的时候,使visibility属性值变回”visible”.

Visibility等于”hidden”

对于这种情况,正常情况下是不显示该元素的,故无论包含该元素的图层是隐藏还是显示状态,该元素均不显示.

整个地图分层的伪代码如下所示:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19ProcedureLayer(layername)

INPUTlayername:String

Begin

varTargetLayer等于find_node_by_name(layername)

ifTargetLayer.Visibility等于”visible”then

TargetLayer.Visibility等于”hidden”

trerseTargetLayerinlevel-ordersequence

letMbethecurrentunit

IfM.hasAttribute(“Visibility”)andM.Visibility等于“visible”then

M.removeAttribute(“Visibility”)

highlight_node(M)

endif

end-trerse

endif

else

TargetLayer.Visibility等于“visible”

unhighlight_nodes_under_layer(TargetLayer)

endif

End

3分层算法的验证测试

地图分层算法其基本思想是:利用SVG中的组元素进行分层,在已经用元素分好层的SVG地图中,通过修改节点的Visibility属性值实现地图的分层显示.初步实现后,需要对通常情况的分层进行测试,然后对本文提出的特殊情况(元素下包含预先定义过visibility属性的节点)进行测试.

通过以上分析,我们准备了两组数据,分别为Rects组、Circles组和Texts组,每组中包含三个对应的SVG元素.我们在Circles组和Texts组中,预先设定了元素的Visibility

图1分层验证测试文件的显示

属性.通过Rects组可以对通常情况进行测试,通过Circles组可以对特殊情况进行测试.通过Texts组对这两种情况进行综合测试.

通过以上分析,我们准备也测试数据,包含水系(包含河流)、交通(包含城市道路和乡村交道路)、植被与土质(包含城市绿地)三大图层.且对城市道路中的第一条道路没有预设“visibility”值,而第四条道路的visibility等于”hidden”,除此之外的所有图形元素都预设visibility等于”visible”.

首先,需要将测试的SVG文件导入到Web浏览器中进行显示.该测试文件在浏览器中显示如图1所示.图有三个图层,包括水系层、植被和土质层以及交通层.由于城市道路层的第四个元素的Visibility属性为hidden,所以在这里没有显示该元素.图形上方的复选框用于操作图层的开关.

然后,通过点击水系复选框来隐藏水系层,测试结果如图2所示.与图1比较后,可以看出,水系层消失了.

图2隐藏水系层的结果

接着,通过点击复选框水系来显示水系层,点击植被与土质来隐藏植被和土质层,测试结果如图3所示.从图中可以看出,原先的河流又出现了,而植被和土质层的绿地则均被隐藏了.

图3隐藏植被和土质层的结果

4结论

通过以上测试结果可以看出,本文提出的分层显示算法是可行的.对于普通情况,只要修改组元素的visibility属性便能达到隐藏和显示图层的效果.对于预定义visibility属性的特殊情况,也可通过遍历修改子元素的visibility属性进行显示与隐藏图层.

SVG格式地理元素分层参考属性评定
有关论文范文主题研究: 关于城市道路的论文范文集 大学生适用: 研究生论文、硕士论文
相关参考文献下载数量: 54 写作解决问题: 怎么写
毕业论文开题报告: 标准论文格式、论文题目 职称论文适用: 核心期刊、高级职称
所属大学生专业类别: 怎么写 论文题目推荐度: 经典题目
nSimulation,SimulationModelingPracticeandTheory,DOI:10.1016/j.simpat.

[2]StevenJ.Vaughan-Nichols.WillVectorGraphicsFinallyMakeItontheWeb7.IEEEComputer,2001,34(12):22-24.


[3]http://.w3school../svg/.

[4]唐学波.基于SVG的时空GIS文件系统增量更新存储机制研究[D].上海:同济大学,2009.

[5]LiangJZ.UsingSVGTechniquetoOrganizeandDisplayDataofEmbeddedGIS,20095THINTERNATIONALCONFERENCEONWIRELESSCOMMUNICATIONS,NETWORKINGANDMOBILECOMPUTING,VOLS:1-8,p:5375-5377,2009.

[6]邬伦,刘瑜,张晶,等.地理信息系统―原理、方法和应用[M].科学出版社,2008.