组件式地图符号编辑器的设计与开发

2011-04-10 08:27长江大学地球科学学院湖北荆州434023
长江大学学报(自科版) 2011年31期
关键词:绘制组件符号

(长江大学地球科学学院,湖北 荆州434023)

地图符号是地图的语言,是地图内容的载体[1]。在许多CAD、地图制图软件和GIS平台中都提供了符号管理功能,但都只是服务于自己的平台,不能与其他平台中共享[2-3]。传统的地图符号设计方法中一种是参数加过程、以函数型为主的方法,其原理是符号化软件与具体系统捆绑在一起,当系统发生变化时,不仅符号软件相应地要变动,而且很难适应新符号的设计和制作[2];另一种是面向对象的符号设计方法,符号库中的各种符号运用结构统一、规格标准的数据,并且采用统一的图元结构进行组织,符号之间是平行的关系,它们的差别仅仅是数据值的差别,这样便于符号的动态扩充和修改[4-5]。符号库的管理方式一般有2种方式[6-7],即以函数型为主的符号库和数据库型符号库。当用户在使用函数型为主的符号库时必须了解这些函数的使用方法和要求,这给用户带来很大的不便;而数据库方式的符号库导致应用复杂。可见开发一个通用的地图符号库系统,具有较高的理论价值和现实意义。下面,笔者采用面向对象的软件设计方法,使用Rational Rose建模工具设计了组件式的地图符号库。

1 系统结构及开发思路

1.1 系统开发目标

完整的地图符号库系统应在结构、功能方面具有一定的独立性和完整性,也就是说地图符号库系统不仅具有符号建立、修改、删除、显示、查询等多种功能,还应能独立地管理和保存地图符号。这使得地图符号库系统可以独立于专业应用程序以外进行开发,更易于制作各行业标准的地图符号库,方便各行业应用软件的共享。但同时地图符号库系统也能纳入专业应用程序中,成为其有效的组成部分。因此,地图符号库系统的设计应具有如下目标:

1)较强的扩展性 由于应用领域的不同,或者专业领域的不断更新,对符号设计也会产生新的要求,用户可以按照自己的需要,创建和维护自己的符号库,因此地图符号库系统应该是一个扩展性的系统。

2)较高的独立性 要想使地图符号库能在很多应用系统中都能够实用,则不但必须最大限度地减少与某一专业应用系统的关联程度,而且还应使它能够很容易地挂接到各种应用系统中,可见组件式的开发方法是本次理想的开发模式。

3)较好的实用性 系统应便于用户使用,各种操作符合通用的操作习惯,能实时显示符号的制作效果。

1.2 系统体系结构设计

该系统包括地图符号管理组件、图元绘制组件、序列化组件和符号库4部分(见图1)。地图符号管理组件实现对不同行业地图符号的管理;图元绘制组件实现多样化地图符号的绘制与编辑;序列化组件实现对制作好的地图符号的存储;符号库实现对制作好的地图符号的分类显示(包括点库、线库和面库)。系统通过这3个组件对地图符号库进行管理,以实现对不同行业的地图符号的绘制、编辑与存储。

图1 地图符号库系统体系结构图

1.3 符号库的数据存储方案

XML是表示结构化信息的一种标准文本格式,它没有复杂的语法和包罗万象的数据定义。XML使用一系列简单的标记来描述数据,而这些标记可以用方便的方式建立。虽然XML文件占用的空间比二进制数据要占用更多的空间,但由于XML极其简单且易于掌握和使用,这使得任何应用程序都可以直接读写数据。这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他的数据交换格式。XML的特点可以归纳为3点:先进性、灵活性、自描述性。基于上述分析,系统的符号库也采用XML文件格式来存储符号库。

2 关键技术

2.1 地图符号的绘制方法

在面向对象的符号库设计时,每一个符号需由一系列图元组成,通过设置图元的参数,以及修改其属性(如笔宽,颜色等),组成多样化的符号,满足不同领域的需求。综合点状符号、线状符号和面状符号的共同特点,形成一系列基元,再用基元来构成各种符号。这些类设计的基本思想如下:首先提取线、矩形、圆等对象之间的共同特征,建立基类,子类从基类派生,加入自己的属性。如由于线、矩形、椭圆都是由起点跟终点确定图形,所以子类属性完全继承父类的(见图2)。

图2 基本图元类结构图

目前对于线符号的绘制方法可分为3种类型,纯函数绘制法、纵向叠加绘制法和循环配置法[8]。这3种方法相比,第1种绘制的方法绘制速度最快,但符号的可编辑性和维护性差;第3种绘制方法增强了符号的可编辑性和维护性,但绘制速度依赖于定位线的弯曲和符号的复杂程度。笔者采用第3种线符号绘制方法,因为设计该地图符号库系统的目的就是让用户可以根据自己所在行业的具体情况绘制行业特用的复杂的地图符号。面状符号多为表示呈面状分布的二维地物以及地理现象的分布,通常要在面状符号内配置不同的点状符号、线状符号或图片。面状符号的轮廓一般可以按照配置线状符号的方式绘制,其填充方式有2种:①以位图的方式进行填充;②填充晕线或点符号[9]。点状符号相较之下,比较简单,由这些基元的集合组成。

2.2 地图符号的管理

由于符号库需要管理不同行业的符号,因此在系统中采用集合的办法来管理来自不同行业的不同符号,共设计了Library类、GroupList类、ShapeList类和Group类来实现符合库的分级管理。Library类作为整个符号库的管理入口,其成员变量GroupList是Group类的集合,用来管理不同行业的符号,而Group类用来管理某个行业的符号集合,采用ShapeList类来存储某个行业的所有符号。

2.3 图元交互绘制技术

每个符号都由基本图元组成,每个图元的编辑及动态创建过程直接影响到每个符号设计的灵活性。按照面向对象的方法,抽象出ToolDraw基类,派生出ToolLine、ToolRect和ToolCircle等,分别用来绘制线、矩形和圆等基本图元(见图3)。在每个派生类中,都有对应的基本图元作为其成员变量,这样,鼠标和键盘的操作就可以转化为对每个图元的操作。

图3 基本图元交互绘制类层次图

3 测 试

由于各行各业有着自己不同的地图符号标准,笔者对交通行业的部分地图符号的编辑测试了该组件。如想增加交通行业中路旁的电线杆点符号,先在点符号的XXX节点输入想绘制的点符号的名称后按Enter键(系统自动为点节点添加一个名为XXX的子节点),然后点击符号绘制面板,选择工具栏上的合适的绘制工具进行绘制,如图4所示。

当想浏览某一行业的点符号时,你可以先点击行业面板如(交通),交通行业的点、线和面符号将会以图5所示的树状显示,点击点根节点后再点击符号浏览面板,系统将把交通行业中的线符号加载到符号浏览器中显示(见图5、图6)。

图4 点符号绘制

图5 线符号浏览

图6 面符号浏览

当在符号浏览器中点击要编辑的地图符号,在回到符号编辑面板就可以对该符号进行修改,也可以点击删除按钮将选中的符号删除。

4 结 语

该系统按照面向对象的思想、组件式的开发思路设计和实现了点符号、线符号和面符号的绘制、修改、删除、编辑等,用XML文件格式统一存储了点线面符号,实现了符号编辑器和符号浏览器的互动。开发的这种组件式符号编辑器既可以单独使用,又可以嵌入到某个GIS系统中,具有较高的实用价值。

[1]王家耀,孙群,王光霞,等.地图学原理与方法 [M].北京:科学出版社,2005.

[2]程朋根,龚健雅,睦海刚.GIS中地图符号设计系统的设计与实现 [J].中国图象图形学报,2000,5(A):1006-1010.

[3]苗国强.交互式地图符号设计与编辑软件的实现 [D].郑州:解放军信息工程大学测绘学院,2003.

[4]赵军喜,张毅,孙庆辉.利用UML设计与实现地图符号编辑器 [J].测绘通报,2004(7):51-53.

[5]谈晓军,边馥荃,何忠焕.地图符号可视化系统的面向对象设计与实现 [J].测绘通报,2003(1):11-13.

[6]王均,王红.电子地图符号体系与符号库标准的研究 [J].测绘科学,2003,28(2):12-15.

[7]陈顺清.地图符号库设计 [J].测绘学报,1993,22(1):56-63.

[8]何忠焕.GIS符号库中复杂线状符号设计技术的研究 [J].武汉大学学报(信息科学版),2004,29(2):132-134.

[9]王泽根.几种特殊多边形的点符填充 [J].解放军测绘学院学报,1998,15(4):300-302.

猜你喜欢
绘制组件符号
无人机智能巡检在光伏电站组件诊断中的应用
学符号,比多少
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
“+”“-”符号的由来
超萌小鹿课程表
放学后
变符号
图的有效符号边控制数
风起新一代光伏组件膜层:SSG纳米自清洁膜层