通用轻量型标图符号设计方法研究

2015-03-29 02:35魏海平席胜明
测绘工程 2015年9期
关键词:文档符号图形

黄 凯,魏海平,张 昊,2,席胜明,3

(1.信息工程大学 地理空间信息学院,河南 郑州450052;2.61243部队,甘肃 兰州730020;3.95980部队,湖北 襄阳441021)

计算机技术的快速发展使得地图学发生质的飞越,地图产品不再局限于传统的纸质地图,各式各样的电子地图已深入人们日常活动当中。地图符号作为地图语言的一种表现方式,直接影响着用户使用地图的认知与感受心理。高质量的地图符号设计不仅可以丰富地图内容信息,还可提高地图的易读性[1]。电子地图符号与传统地图符号比较具有更灵活的设计方式,更快速的使用方式以及更人性化的更改方式。为此,本文针对电子地图集中标图符号的特点提出一种实用的符号设计与使用方法。

1 电子地图集标图符号设计存在的问题

电子地图符号在设计上与传统地图符号比较要灵活,电子地图符号更为复杂与多样化,如何在计算机上方便快速的设计与使用地图符号一直是地图研究的重点和难点。

标图符号主要使用于态势标绘,它能清晰明了的标明敌我双方部署位置及兵力情况,符号简单,标绘速度快,是部队进行战斗指挥的重要手段。标图符号可以看做是由图元集合组成,所谓的图元可以分为基本线划图形和其他图形。基本线划图形即一般的规则集合图形,如点、线、面等;而其他图形多指图片、文字等其它用来表示地图符号的图形。通常地图符号设计使用的方法有3种[2]:①使用位图文件的方式,将符号图片放置在相应位置,这种方式数据量大且在用户对地图进行缩放等操作时容易出现变形失真现象;②建立电子地图符号模型,即为每一个符号设计专门的算法,此方法工作量大且不利于符号扩展使用;③利用专业图形软件进行符号的设计,该方法大大减轻了工作量、数据量,但使用时容易造成符号定位不精确或是符号大小等属性不易改变,且该软件一般不对公众开放,造成用户使用受阻。因此,要解决上述问题,需要一种开放的并且数据量较小的方式来描述标图符号 使得用户无论在什么平台或环境中都可以借鉴,以达到更为方便、通用化的符号制作效果。

2 标图符号语义描述方式

2.1 半结构化的符号描述语言

异构信息的整合使用成为信息交换的一个突出问题,XML正是为解决这个问题而提出的方案。XML又称可扩展标记语言(e Xtensible Mar kup Language),是由W3C组织于1998年2月发布的一种标准,用一种开放的、自描述的方式定义数据结构。XML可以同时描述数据内容和结构特性,通过这些结构特性,可以了解数据之间的语义关系[3]。

XML文档都是由元素构成,每个元素都具有“起始标记”(如<SVG>)、“结束标记”(如</SVG>)和标记之间的信息元素组成。元素可以拥有属性,且可以包含其他元素和文本或者两者的混合物。XML文档中的元素具有树状结构,可用文档树表示。

比较常用的解析XML文档方法主要有两种[4],即SAX和DOM。SAX(可扩展标记语言的简单 应 用 程 序 编 程 结 构(Si mple API f or X ML,SAX))将XML文档看做数据流,以此对它进行处理,由于SAX在整个处理过程中不需要在内存中构建树的形式,因此它可以在较少消耗内存的基础上快速进行处理操作;DOM(Docu ment Object Model,DOM)是把一个XML文档表示成一个节点对象树,然后在内存中将文档树生成,其中保存了各节点的关系信息以及属性信息。因此,用DOM处理XML文档较为方便,但若XML文档数据较大,内存消耗也相应增大。

2.2 结构化的标图符号描述

标图符号是基本线划图形的组合,可将这些线划图形称为图元,每一个完整的符号都可分解为最基本的图元,每个图元本身具有相应的语义信息。这样,在设计标图符号库的时候,用户可以根据线划图形的语义结合符号结构特点衍生出大量的完整标图符号,大大减小符号库数据存储量的同时可提供丰富的标图符号满足应用,实现方式见图1。

3 基于SVG格式的标图符号设计

3.1 SVG标图符号表达原理

图1 标图符号构建方式

SVG(Scalable Vector Graphics)是一种基于XML的用来描述二维矢量图形或者矢量、栅格混合图形的标记语言[5]。SVG提供丰富的图形对象,它不单提供文本、线段、圆、矩形、椭圆、折线、多边形等基本元素,还提供通用的路径元素,可以实现对各种复杂图形的描述,具体图形对象及属性描述见表1。

表1 SVG图形对象及属性描述一览

其中路径(pat h)元素最为复杂,但由于电子地图符号多具有不规格的图形信息,如不规则曲线等,因此路径元素也是最有用并且最常用的元素,它实质上是对路径的一系列命令操作[6],具体的操作命令见表2。

表2 path元素命令操作对应表

3.2 基于Illustrator软件快速设计标图符号的方法

Ill ustrator是Adobe公司生产的矢量图形制作软件,它具有编辑功能强、整饰效果好、输出功能完备的特点[7]。在Ill ustrator下使用图形操作工具可以简单方便的绘制图形,最终只要将所绘图形文件保存为SVG格式,图形的状态属性便自动保存在所生成的SVG文档中。图2为某标图符号,它由矩形、直线、文字和圆形元素组成,用户可以选择Illustrator上所提供的图形工具,当绘制完毕后直接保存为SVG文件,则生成基于XML的描述语言(只保留主要部分),其中为使图形能够定位精确,可将设计后的图形进行编组操作,再使用椭圆工具在需要的位置画定位点,这样,在起始标识<g>和结束标识</g>中的语言描述为图形的主体部分描述,而外部的<circle>为定位点的描述,如此便可快速生成SVG标图符号,供地图软件使用。

图2 SVG格式旗帜符号

X ML代码如下:

<?x ml version="1.0"encoding="utf-8"?>

由于神经网络的方法是利用训练过程提取因果关系,然后将它存储到一个神经网络模型的连接强度上。网络的自组织与学习能力消除了提取因果关系的必要性。

<svg version="1.1"x=".."y=".."widt h=".."height=".."viewBox=".."enable-backgr ound="..">

<g id="符号">

<rect x=".."y=".."fill=".."stroke=".."str oke-widt h=".."str oke-miterli mit=".."width=".."height=".."/>

<pat h fill=".."str oke=".."str okewidt h=".."str oke-miterli mit=".."d=".."/>

<line fill=".."str oke=".."str okewidth=".."stroke-miterli mit=".."x1=".."y1=".."x2=".."y2=".."/>

<text transf or m=".."fill=".."f ontfamily="'..'"f ont-size="..">PB</text>

</g>

<g id="定位点">

<circle fill=".."cx=".."cy=".."r=".."/>

</g>

</svg>

SVG文件采用文本方式描述图形信息,文件大小相比较其它方式的符号库建立要小的多,此外,当SVG描述大型的图形文件时,如整幅地图时,文件的大小可能会急剧增加,毕竟SVG文件中存在大量的冗余信息,此时Ill ustrator提供一种SVG文件压缩格式,后缀名为.svgz。此格式文件仅保留SVG文件必要的绘图信息,可以大大减小数据量,可将原SVG文件压缩至原大小的约40%。可以方便的将SVG格式文件移植到移动平台上使用。如一幅苏州地图,PDF格式下文件大小为9.18 M,而保存成SVG格式后,文件大小变成8.40 M,SVGZ格式下,文件仅有2.43 M,可见该压缩方法对于构建轻量级的软件系统有着极为显著的作用。当然,本文仅利用SVG文件描述简单的符号信息,文件大小已是相当轻小,压缩格式效果不明显,仅仅提供参考。

3.3 Qt环境下标图符号功能设计

在Qt环境下显示SVG文件主要有两种方式:一种是利用Qt自带的SVG模块实现标图符号的加载和显示,此种方法方便快捷,但脱离该环境就无法使用,不具有通用性;另一种方法较为通用,即将SVG文件视为符号的数据描述文档,通过解析SVG文件实现标图符号的显示、编辑和修改,不受编程环境的影响[8]。

普通标图符号的生产往往需要针对每一个标图符号进行设计,这其中包括敌方和我方标图符号设计,而此类符号多数仅是颜色上的区别,若重复设计必定造成大量的冗余信息 为此标图符号应具备修改的功能,而Qt中提供QDomElement对象可以获取SVG中每个节点的元素,tag Na me方法可以定位到指定的元素标签名位置,attribute和set Attribute方法可分别获取标签名下的属性信息和更改该属性信息,以达到对标图符号进行属性修改的目的。此外,为满足用户对标图符号的使用需求,程序还应提供不同符号图元合并形成新符号的功能。该功能在SVG文件格式下实现也较为简便,只需将要合并的若干个图元描述语句合并,平行的添加于新的SVG文件中,便可投入使用。具体标图显示的流程如图3所示。

4 实验结果分析

实验采用开源Qt4.8.5版本源代码为基础,利用上述流程图的编程思想,在Windows XP系统下编译成执行程序。图4为程序执行效果。

图3 SVG格式标图符号使用流程

图4 程序执行效果

4.1 程序调用SVG标图符号过程简介

当启动软件的同时,系统自动遍历相应存放SVG符号的文件夹,将文件名和文件个数保存,以按钮的形式整齐叠放于工具条中,当用选择使用标图功能时则显示工具条,用户只需点击相应的符号按钮便可将标图符号绘制于相应的图层上。通过双击已绘的符号可以调出该符号的属性对话框,通过修改对话框可以实时更改符号的属性信息。此外,为方便用户快速使用自定义的标图符号,工具条还增加新建符号按钮,用户只需点击相应的SVG文件,便可以直接使用该SVG文件所绘的符号。如图4所示,SVG标图符号可以清晰的表示出我方兵力部署及指挥进攻情况,满足标图符号的使用要求,可以为一般地图或专题图使用。

4.2 SVG标图符号特点分析

1)符号轻量化,减小存储负担。SVG标图符号采用文本描述图形信息,对于标图符号这种多用线划图形组成的符号而言是非常轻型简便的,作者利用SVG格式生成的标图符号均只有2 K左右大小。此外,SVG还提供一种压缩格式,可以在不影响图形显示的前提下尽量多的压缩SVG文件,而且文件越大,压缩的效果越明显。

2语言描述规范化 易进行属性修改 SVG标图符号的每个图元信息都有自己的属性描述,如颜色、线宽等。用户可以根据需要对属性进行修改,如此一来,不仅方便符号的使用操作,还可减少大量因颜色等属性不同造成的符号生产重复性劳动,同时也可大大减小符号库存储的数据量。

3)图形信息矢量化,放大缩小不失真。SVG文件描述图形信息记录的是图形的坐标、线划等基本的信息,用户在进行图层的放大缩小时,SVG标图符号相当于根据当前的视图大小以及对应的当前坐标将符号进行重绘。因此,即使图层无限放大,SVG标图符号也不会出现马赛克等现象,保证符号的清晰完整。

4)文件特征半结构化,方便信息整合。SVG文件由元素构成,同级元素之间可以互不干扰进行整合。例如,用户可将两个独立的标图符号整合为一个新的标图符号,只需将其中一个符号的元素复制于另一符号中,并自成一个元素即可。又或者用户可以添加自己所需要的元素,例如某标图符号的属性信息、图片信息甚至是动画信息等,可大大提高标图符号的表现力。

5)文件通用化,不受平台限制。SVG文件继承了XML语言的开放性特点,无论是个人电脑还是移动终端都可以使用。而且大多数开发平台都具有对SVG文件进行操作的能力,用户可以不用自己一点一点的解析SVG图形,便可进行SVG文件的显示,减少工作量。

5 结 论

本文通过Ill ustrator软件用SVG格式对标图符号进行设计,可以达到快速构建标图的作用,且由于SVG文件具有数据量小 图形信息及属性信息易修改的特点,可以大大减少符号设计的冗余,保证符号库轻量化;利用XML语言描述标图符号可以使符号的结构更加完备清晰,同时由于XML具有开放性,也使得标图符号可以很好为不同的图集软件使用,甚至也可解决标图符号网络共享和互操作等问题。开源Qt提供了较为成熟的图形图像操作功能函数,不仅可以静态标绘,还可进行动态显示,这毋庸置疑大大提供了符号的表现力,而Qt本身的跨平台特征也将拓展标图符号的使用,提高标图符号的使用价值,为电子符号库的建立以及符号的使用提供参考。

[1] 刘新贵,孙群,赵国成,等.一种实用的点状符号库快速建立与显示方法[J].地理空间信息,2009,7(1):28-30.

[2] 李艳,胡庆武,龚书林.跨平台地图SVG标图方法研究[J].电光与控制,2011,18(11):49-52.

[3] 孟小峰.XML数据管理概念与技术[M].北京:清华大学出版社,2009.

[4] 邓晓斌,黄志芳,刘小丽.利用DOM、SAX交互解析基于SVG的web GIS地图编码[J].硅谷,2013(22):28.

[5] 尹章才,李霖,王铮,等.基于SVG的地图符号设计与实现[J].测绘科学,2006,31(5):97-99.

[6] 贺涛.利用SVG的pat h元素绘制复杂图形[J].中国科教创新导刊,2012(5):116.

[7] 李嘉星,苏志军,何志新.基于Illustrator的电子地图符号库的建立[J].地矿测绘,2012,28(4):24-26.

[8] 张志军,邱俊武,于忠海.通用地图符号表达机制的研究[J].测绘工程,2013,22(5):5-8.

猜你喜欢
文档符号图形
浅谈Matlab与Word文档的应用接口
学符号,比多少
有人一声不吭向你扔了个文档
“+”“-”符号的由来
变符号
基于RI码计算的Word复制文档鉴别
分图形
找图形
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
图形变变变