张志军,邱俊武,于忠海
(1.天津市测绘院,天津 300381;2.武汉大学 资源与环境科学学院,湖北 武汉 430079)
目前,实现地图符号共享的主要障碍在于:地图符号数据格式的差异;地图符号设计方式的差异;地图符号化接口的差异;地图符号化结果的差异。针对这一情况,本文将对地图符号的定义和分类进行分析,通过对其表达模型、描述语法、配置过程的研究,提出一套通用地图符号表达机制。
作为一门地图语言,地图符号使用约定的图形来代指抽象的概念。根据约定性原理,采用演绎的方法可将地图符号分成点状符号、线状符号和面状符号[1-2]。魏文展根据集合论和拓扑学的有关理论,导出3类地图符号的数学定义[3];之后黄鹄对其进行简化和改进[4-5];钟业勋在此基础上根据不同的约束条件,推导出不同形式地图符号的数学定义[6]。本文中所述的地图符号是指表示地图要素的空间位置、质量和数量特征的特定图形记号。符号化是指为地图符号所指代的地图要素配置该符号所描述的特定图形的过程。
图元参数法将地图符号拆分成基本几何图形单元(即图元)和配置参数。本文参照相关测绘标准建立了一个通用的地图符号表达模型,如图1所示。
图1 通用地图符号表达模型
该模型分为4层:符号库层、符号层、图元层和图形层。符号库是地图符号的集合,该层描述符号库版本、作者、制作标准等相关信息;符号层描述一个地图符号的构成及其约束条件;图元层描述构成符号的图元(或低维符号)及其配置参数,配置参数用于描述图元(或低维符号)与地图符号之间的空间关系;图形层采用几何参数、定位参数和绘制参数分别描述图元的几何形状、位置和样式信息。
扩展标记语言(XML)是世界万维网协会为适应网络发展而制定的用于描述复杂信息的结构化标记语言,尽管它的发展时间不长,但现在已经没有人怀疑它给信息社会带来的革命性影响[9]。XML的功能是非常强大的,同时对于人类和计算机程序来说,都容易阅读和编写[10]。因此,本文选择XML作为地图符号的描述语言。
本文归纳总结了目前主流制图软件的符号库,并参照《地图符号库建立的基本规定》定义了9种图元类型,分为点图元、线图元和面图元3大类,详情见表1。
表1 图元参数一览表
用于描述一个图形为圆,圆心坐标为(0,0),半径为70,线宽为10,红色实线圆弧,黑色实心填充的符号图元的xml文档如下(一个坐标单位相当于打印纸面上0.01mm。):
<PGraphUnit>
<GraphUnitType>PGT_ELLIPSE</GraphUnitType>
<MapSymbolGeometryProp>
<pntCentralPointX>0
</pntCentralPointX>
<nLongRadius>70</nLongRadius>
<pntCentralPointY>0
</pntCentralPointY>
<nShortRadius>70</nShortRadius>
</MapSymbolGeometryProp>
<MapSymbolPen>
<dwPenStyle>PS_SOLID</dwPenStyle>
<dwPenWidth>10</dwPenWidth>
<dwStyleCount>0</dwStyleCount>
<lbColor>RGB(255,0,0)</lbColor>
</MapSymbolPen>
<MapSymbolBrush>
<lbStyle>BS_SOLID</lbStyle>
<lbColor>RGB(0,0,0)</lbColor>
</MapSymbolBrush>
</PGraphUnit>
3.2.1 点符号的描述
点符号分为无向点符号和有向点符号。前者是指在图面上始终指向北图廓的点符号,后者是指需要根据定位点或者定位线来确定方向的点符号。因此,点符号的配置参数即为旋转角度。
3.2.2 线符号的描述
对于线符号,由一个矩形区域作为配置单元来提供定位基准。该配置单元建立在一个逻辑坐标系上,该坐标系以定位线的起始点为坐标原点,以其延伸方向为X方向,其法方向为Y轴,Y轴上以指向北图廓线方向为正方向,如图2中虚线矩形框。
线符号的配置方式分为重复配置和拉伸配置。前者是指将配置单元沿着线状地物中心线方向按照一定的间隔重复绘制,如长城、国界等。后者是指将配置单元拉伸至地物中心线上完成绘制,如机耕路、单线河。在拉伸配置时,点图元和点符号不会变形,线图元和面图元可能发生变形。
3.2.3 面符号的描述
面符号分为轮廓线和内部填充两部分:轮廓线按线符号方法进行描述;内部填充分为若干层,每层采用一种填充方式[11]。填充方式分为:颜色填充、线填充和点符号填充。颜色填充是指用特定的色彩填充面域。线填充是指用晕线填充面域,其配置参数有:线间距、倾斜角度、线型、线宽和线色。点符号填充是指用点符号填充面域,分为随机填充和规则填充。前者的配置参数为距离阈值,用于描述两个点符号之间的最小距离。后者的配置参数有定位网格的行距、列距、是否错切和倾斜角度,以及X/Y方向偏移量和旋转角度,用于描述一个规则格网参数及其仿射参数。对于边界处的点符号有3种处理方式:裁剪、保留和删除。
为实现符号化结果的共享,本文将符号化结果拆分为椭圆、折线和多边形3类通用的几何图形。一个地图符号的配置过程如下:首先通过地图符号的配置参数得到各组成单元的绘制顺序和定位参数;然后依次根据各图元的类型和几何参数得到符号化结果;最后按照其绘制参数完成地图符号的绘制和符号化结果的输出。
为验证本文提出的地图符号表达机制的可行性和通用性,笔者在VC++环境下,开发了符号制作软件SymbolMaker和通用地图符号化组件MapSymbol,分别实现符号的制作和符号化服务,并制作了3个地图符号实例,在制图软件中实现符号化。
点符号实例:水准点:本符号无约束参数,定位参数为符号的几何中心,旋转角度为0,由一个点图元和两个线图元组成。制作过程如图3所示。
图3 水准点制作
线符号实例:时令河:本符号为渐变符号,定位参数为时令河的中心线,配置参数为重复配置,由一个面图元组成。制作过程如图4所示。
图4 时令河制作
面符号实例:草地:本符号无约束参数和轮廓线,内部填充只有一层,为符号填充。点符号制作省略,边界处理为删除,填充格网水平间距为250,垂直间距为500,格网倾角为0,无错切,水平和垂直方向偏移量为0。制作过程如图5所示。
图5 草地制作
将MapSymbol组件嵌入制图软件,提供地图符号化服务,效果理想。图6为Mapper(笔者开发的制图软件)中时令河符号的效果,图7为ArcGIS中医院符号的效果。
图6 Mapper中时令河符号
图7 ArcGIS中医院符号
本文从地图符号的本质意义出发,研究地图符号的几何特征,并用统一的语法完成符号的描述,提出一套地图符号表达机制。地图符号的共享是实现地理信息共享的基石,是个长远而复杂的问题。笔者将在后续的研究中加强特殊符号(如崩崖)智能处理的研究。
[1]尹贡白.地图概论[M].北京:测绘出版社,1991.
[2]田德森.现代地图学理论[M].北京:测绘出版社,1991.
[3]魏文展,钟业勋,彭月英,等.点状、线状和面状地图符号数学定义的研究[J].武汉大学学报:信息科学版,2002,27(4):424-426.
[4]黄鹄,钟业勋.点线面状地图符号定义的简化与统一[J].测绘科学,2005,30(6):70-71+77.
[5]黄鹄,钟业勋.依比例符号、不依比例符号和半依比例符号数学定义的改进[J].武汉大学学报:信息科学版,2006,31(3):244-246.
[6]钟业勋,郑红波.不同约束条件下地图符号的数学定义[J].测绘信息与工程,2007,32(3):49-51.
[7]龚健雅.地理信息系统基础[M].北京:科学出版社,2001.
[8]梅洋,李霖.地图中半线半面符号的设计与研究[J].测绘科学,2006,31(1):115-118.
[9]周文生,毛峰.地理标记语言GML及其可视化[J].测绘通报,2003(9):23-26.
[10]宋扬,胡金星,潘懋.基于GML-XML的多源异构空间数据互操作引擎研究[J].计算机工程与应用,2003(3):114-116.
[11]尹章才,李霖,龙毅,等.基于分层的面状地图符号设计[J].武汉大学学报:信息科学版,2004,29(12):1111-1114.