MapGIS点状符号共享方法研究
2018-06-14王本林陈泰生陈梦琳
王本林,陈泰生,陈梦琳
地图符号是地图的图解语言,它将地理对象进行抽象表达,反映地理实体的空间分布关系。随着地理信息科学技术的飞速发展,地理信息平台呈现了多样化发展态势,随之出现了地理数据与地图符号的同源异构现象,严重阻碍了地理信息科学的发展,在这种形势下,地图信息共享思想因此应运而生,地图符号共享正式被广大GIS学者所重视,针对这种异构平台下的地图符号,主要集中在以下三个方面:一是平台间的地图符号共享研究,陈泰生等利用分析了CAD点状符号与TrueType字体符号模型,实现了CAD点状符号与TrueType字体的双向共享[1],骆琪基于ArcGIS和CAD平台,实现了ArcGIS到CAD平台间的地图符号共享,并设计了地图符号渲染模式[2];二是通用的地图符号模型研究,李青元建立了GIS 符号库数据模型并给出了GIS 符号库数据交换格式[3],陈泰生等针对不同GIS平台,提出了基于PB符号模型共享方案,实现了从Super Map到ArcGIS平台的点状地图符号共享[4];三是地图符号共享渲染与表达,尹章才设计了基于XSLT的图示表达规则与地理数据库驱动的地图表达机制[5],吴小芳探讨了符号智能配置过程中常用绘制算法并研究了符号配置中可能出现的冲突问题[6]。
综上所述,GIS行业内的专家、学者们针对ArcGIS、Super Map、CAD等平台展开了深入的研究和探讨,然而针对MapGIS平台的地图符号共享研究却相对较少,本文以点状地图符号为切入点,深入研究MapGIS地图符号数据结构与符号模型,丰富了地图符号多平台共享内容,能够为相关学者和专家提供技术依据。
1 MapGIS点状符号模型
1.1 MapGIS地图符号库
MapGIS平台支持对地图符号的设计与存储,一个完整的MapGIS地图符号库由颜色库、字体库和符号库构成,地图符号以文件组织形式存储于安装目录下../MapGIS K9/Slib文件夹中,MapGIS地图符号库可以通过符号管理器打开,对符号库中的地图符号进行编辑更新,如图1所示。对于MapGIS地图符号库的访问,可以通过MAPOBJECT组建进行访问,亦可以通过将地图符号库导出以XML格式文件进行访问。
图1 MapGIS地图符号库管理界面
1.2 MapGIS点状符号构图模式
MapGIS点状符号可分为栅格符号、矢量符号和字体符号(注记)三类;栅格符号即为图片符号,支持BMP格式的图片;字体符号一般作为注记使用,标示字体的类型、字符内容以及颜色、笔画等基本信息;MapGIS矢量地图符号则由基本图元组合而成。在实际应用中,以矢量符号应用最为广泛,也最为复杂,不同图元的随机组合,可构造成为不同符号。因此,本文将从MapGIS点状矢量地图符号的构图模式为切入点, 研究其基本构图模式。
MapGIS矢量地图符号的基本单元是基本图元,包括了折线、光滑曲线、圆心半径弧、三点弧、矩形、平行四边形、圆心半径圆、三点内切圆、三点外接圆、椭圆、正交线、正交矩形、用点连线等,如图2所示。
图2 MapGIS矢量地图符号基本图元
1.3 MapGIS点状符号数据模型
一个MapGIS点状地图符号包含了一个或多个符号图元,图元在1mm*1mm的正方形范围内,通过叠加、组合的方式构成,每一个图元可通过一个或多个基本图元组合而成,这些图元的空间位置及其关系构成了点状符号的基本几何信息;点状地图符号通过图元编号、图元类型、符号名称、定位点描述其元数据信息;颜色库描述了图元轮廓和填充颜色。
1)图元几何模型
图元几何信息通过图元基本点按照构图方式进行组织。光滑曲线由起点、若干控制点及终点构成;折线由若干个短点构成;正交线由若干定点构成,与折线不同的是,正交线的相邻线段夹角总是90度;椭圆是由圆心、长半径、短半径规定其几何形状、圆心半径弧是由圆心、半径、圆弧起点、终点以及其夹角构成的弧段构成;给定的不在一条直线上的三个点,由这三个点构成三角形,其内切圆即为三点外切圆;三点外接圆与三点内切元几何信息类似,是任意给定三角形定点的外切圆;三点弧是给定空间内任意三个共圆的点所在的圆弧弧段;圆心半径圆通过圆心和半径来确定,矩形则是由两个对角的点确定,平行四边形根据一条边上的2个顶点及与该边相邻边的另一定点构成;正交矩形则是顶点为直角的矩形。
表1基本图元几何模型
MapGIS中的这些基本图元的几何信息均由基本点及各个图元构图规则确定,在进行点状地图符号构图时,需要针对每一个图元设定一个中心点,以保证图元在组合时相互关联关系。
2)颜色库
颜色库主要针对线图元的轮廓颜色、面图元(区域)的颜色填充而言,MapGIS中的颜色库主要采用CMYK和RGB两种颜色体系,在符号颜色色标编辑器中,可以对CMYK按照比重自定义颜色,或者根据RGB三原色的值定义颜色。在MapGIS颜色库中,提供了1600种颜色,其中黑(K100,C0,M0,Y0和K0,C100,M100,Y100)、白、品红、黄、青、红、绿、蓝这9种颜色不支持编辑外,其余均可以根据实际需求进行自定义颜色,对这1600种颜色枚举采取编号的方式存储于颜色库中。在设置图元基本属性时,直接根据自定义的颜色所对应的编号,选择对应的颜色。
1.4 MapGIS点状符号结构
MapGIS点状符号由符号元数据、图元项组成,符号元数据定义了该点状地图符号的类型、裁剪标志、符号编号、符号长度、图元项个数、符号中心定位点、符号名称等信息;图元项则是由若干图元构成的图元数组,每一个图元又由图元元数据和几何信息构成,图元元数据主要包括图元类型、轮廓笔、外部颜色、填充颜色,图元类型是12类基本图元的编码,轮廓笔则定义了当前图元的轮廓样式,包括简单线、虚实线、点划线等,内部颜色则针对于封闭的面状图元而言,描述其内部的填充颜色;几何信息由图元基本点的X,Y值和图元点坐标的序列,如图2所示:
图3 MapGIS点状符号模型结构
2 面向共享的点状地图符号及映射模型
OMS是在PB+地图符号模型基础上加以改进的一种地图符号模型,它是依据图形领域的PostScript成像模型原理并结合地图分层思想构建而成,OMS点状地图符号由基本符号图层构成,主要包括了字体点图层、纹理点图层(栅格)和路径点图层三种类型,字体点图层主要针对于字体类点状符号进行存储,纹理点图层针对图片点符号进行存储,路径点图层则是针对所有矢量化的点状符号构建,本研究针对MapGIS的图元类矢量符号,着重研究OMS点状符号的路径符号图层的基本结构
2.1 OMS点状地图符号
OMS点状地图符号的点字体符号是基于TrueType字体法,将字体作为一个点状符号,通过字体名称、编码、颜色、样式等描述该种符号的基本样式,该种方式可以较好地支持MapGIS的字体符号;针对栅格地图符号,OMS采用纹理符号图层,存储图片的子图基本信息,如图4所示:
图4 OMS点状符号模型
路径符号图层用路径、笔画和填充描述点状矢量地图符号,路径表达了点状地图符号的几何信息,包括了直线、贝塞尔曲线、圆、椭圆、矩形、圆角矩形、B样条线、星形等基本几何单元;笔画表达了点状符号路径的轮廓样式,包括了简单笔画(纯色)、纹理笔画、渐变色笔画三类;填充描述点状符号封闭路径的填充样式,包括了简单填充(纯色填充)、阴影填充、纹理填充、渐变填充、点填充和线填充。
2.2 面向OMS的MapGIS点状地图符号映射模型
1)两种地图符号模型对比
从地图符号结构上看,MapGIS点状地图符号通过图元方式组织,图元由基本子图元叠加构成,是典型的图元类地图符号;OMS点状地图符号采用了面向符号图层的组织模式,兼容了TrueType字体法、PB路径法的优点,具备了较好的兼容性。
从地图符号几何模型上看,MapGIS点状地图符号的基本图元主要包括折线、曲线、空心圆、实心圆、椭圆、矩形、多边形;OMS点状地图符号中的路径图层即包括了直线路径、贝塞尔曲线路径、B样条曲线路径、三角形、圆、椭圆、圆弧、矩形、圆角矩形、扇形、星型等路径,囊括了MapGIS点状地图符号的基本图元。
从地图符号属性模型上看,MapGIS点状符号对图元的轮廓和填充主要通过子图元编号和颜色库描述,所有子图在图符号中唯一标识,图元填充色由符号库中符号编码描述;OMS点状地图符号的路径图层将属性信息描述为笔画和填充,用于修饰符号路径的样式。
2)MapGIS点状地图符号映射
通过MapGIS与OMS符号结构对比,MapGIS点状符号的映射实质上即是图元类地图符号向基于路径的PB地图符号的映射,可几何模型和符号属性这两个方面进行映射。MapGIS点状符号图元按照其数据组织可以划分为有折线、曲线、圆、圆弧、矩形五类图元,图元属性包括了笔画和颜色。
折线:折线是MapGIS最常用的基本图元,由多段首尾相连的线段构成,利用起点和终点描述线段几何信息。在OMS符号中,存在与之对应的直线路径,可以将折线映射为MoveTo和LineTo指令。
曲线:MapGIS曲线不是传统意义上的B样条曲线或贝塞尔曲线,在图形绘制是呈现曲线样式,但实际数据模型中则是以连续的线段构成,因此,可以映射为OMS中的直线路径,将每一个线段存储到一个直线路径中。
空心圆和实心圆:两者均属于圆,由圆心坐标点和半径确定,空心圆无填充,实心圆为纯色填充,可映射为OMS符号中的圆路径,通过路径图层的填充样式描述实心圆。
圆弧:圆弧由圆心,半径,圆周上起始点确定,或起点及扫过的角度来确定,因此可以直接映射为OMS符号中的圆弧。其映射关系如图5所示:
图5 MapGIS点状符号模型结构映射图
4 点状地图符号共享实验验证
实验以MapGIS自带符号库和地质符号库为符号实验数据,在C++设计一套面向CAD点状符号数据存储结构,用于存储图元基本信息,基于地图符号共享平台实现了从CAD点状符号模型向OMS点状地图符号共享。
4.1 MapGIS点状符号数据存储实验
针对MapGIS点状符号结构,抽取了MapGIS自带符号库中全部矢量点符号,转换为XML格式文件,该文件即为MapGIS点状地图符号库,符号库根节点为SymbolLib节点,根节点下包含了SymbolLibHead和Symbol两类子节点,其中SymbolLibHead描述了符号库的名称、符号数、标识码等基本属性信息,Symbol为具体的点状地图符号节点。
Symbol节点即为本文研究的MapGIS点状地图符号,一个MapGIS点状符号的Sybol节点通常由一个SymbolHead节点和若干个SymbolItem节点构成。SybolHead节点为MapGIS点状地图符号头信息,存储了符号名称、符号中心点、包含图元数等属性信息;SymbolItem节点为图元节点,用于存储MapGIS点状地图符号图元信息,包括了图元类别、图元轮廓、图元数目、填充以及图元几何信息,其存储结构如图6所示:
图6 MapGIS点状地图符号存储结构
在XML结构基础上设计了Symbol类、SymbolHead类、SymbolItem类、Geometry类等基本点状地图符号信息存储结构类,在进行符号信息读取与解析时,由下而上地构建地图符号存储类,最终完成对MapGIS点状地图符号的存储。
4.2 MapGIS到OMS共享实验
MapGIS向OMS地图符号共享实验基于MapGIS地图符号存储结构,采用C++语言构建地图符号属性与几何信息的映射模型,构建了SymbolShare工厂,模型输入为XML存储结构,输出为LS格式的OMS地图符号文件,设计了MapGIS向OMS点状地图符号共享工具,如图7所示:
图7 MapGIS地图符号共享工具
以MapGIS点状地图符号的默认点符号库和为区域地质图图例点状地图符号库为实验数据,其中MapGIS默认点符号库共计513个矢量点状地图符号,区域地质图图例点状地图符号1152个矢量地图符号,如图8和图10所示。针对上述两类MapGIS点状地图符号数据,采用符号图元映射方法映射至OMS地图符号结构中,输出结果如图9和图11:
图8 MapGIS默认地图符号数据
图9 默认符号共享结果
图10 区域地质图符号数据
图11 区域地质图符号共享结果
4.3 MapGIS地图符号渲染效果验证
为进一步验证MapGIS点状地图符号向OMS地图符号模型映射的可行性与实用性,设计了OMS地图符号渲染实验,检验实验共享结果正确性。采用ArcGIS桌面软件作为渲染平台,选取ArcObejcets嵌入工具,将转换后的OMS点状地图符号加载到ArcMap中,对离散点进行渲染,选用转换后的矿井点状符号和某种有色金属点状地图符号为验证,在ArcGIS中渲染结果如图12所示,上述两类地图符号能够在ArcMap软件中完成点符号渲染。实验结果表明MapGIS点状地图符号能够通过该种共享方式正确绘制到ArcGIS平台中。
图12 共享后的点状地图符号在ArcGIS平台中渲染效果
5 结论
论文以MapGIS平台的点状地图符号为研究对象,分析了MapGIS点状地图符号的符号库结构、构图模式以及符号模型;引入了OMS通用地图符号,研究了MapGIS和OMS两种不同结构的地图符号结构,针对MapGIS地图图元,提出了图元到路径的映射模型;设计了MapGIS到OMS地图符号转换实验,验证了该种模式方式的正确性,能够解决MapGIS这种图元类地图符号到OMS地图符号的共享。
[参 考 文 献]
[1] 陈泰生,闾国年,吴明光,等.CAD点状符号与TrueType符号模型对比、转换与分析[J].中国图像图形学报,2011,16(11):2067-2073.
[2] 骆琪.CAD与GIS符号共享方法研究——以ArcGIS和AutoCAD为例[D].南京:南京师范大学,2012.
[3] 覃如府,许惠平,王家林,等.基于XML的通用地图符号库设计与实现[J].同济大学学报(自然科学版),2008, 36(08):1138-1142.
[4] 陈泰生,陈梦琳,王本林,等.基于PB符号的图元类点状符号共享研究[J].地理与地理信息科学,2014,30(5):7-11.
[5] 尹章才,李霖,朱海红,等.基于XSLT的图示表达规则的设计与实现[J].地球信息科学,2005,7(04):135-139.
[6] 吴小芳,杜清运,徐智勇,等.复杂线状符号的设计及优化算法研究[J].武汉大学学报(信息科学版),2006(7):632-635.