基于TTF字库的地学符号库格式转换实现

2016-12-02 06:43:45吴新强
现代计算机 2016年30期
关键词:字库字段标签

吴新强,吴 鹏

(广州海格通信集团股份有限公司,广州 510000)

基于TTF字库的地学符号库格式转换实现

吴新强,吴 鹏

(广州海格通信集团股份有限公司,广州 510000)

为了便于GIS符号库的共享,针对性的解决MapGIS平台下“一图一库”数字资源的现象,提出基于TTF字库的方式实现从MapGIS平台下的Slib系统库转换到ArcGIS平台下对应的Style符号库,从而有效地实现不同GIS平台间符号库的共享。

MapGIS;ArcGIS;转换;Style;TTF

0 引言

地学符号是用来表示GIS中地理图形的重要形式,通过解读地理图形中符号,便可以感性的明白其空间对象所表达的地理空间信息。地学符号按照其空间分布状态可分为点符号、线符号、面符号,这些地学符号是通过GIS平台自身的符号库样式进行管理(GIS软件平台地学符号格式各不相同),在目前情况下,由于各种因素,MapGIS平台下Slib符号库[1]以及ArcGIS平台下的Style符号库无法共享使用,可以设计并开发一个通过的地学符号管理软件,该符号管理工具可以将其他GIS软件平台的地学符号转换成一种通用的格式[9],使不同GIS平台下的符号库经软件转换成统一格式进行使用,从而实现地学符号共享。故本文提出基于TTF文件(TrueType字体库)[2-3]实现MapGIS符号库向Arc GIS的转换以实现这两种平台下的地学符号数据共享。

1 相关工作

本文基于TTF字库的地学符号转换主要依据以下Slib符号库、XML文件[4]、TTF字库、Style文件四种文件格式的存储,其主要包括输入MapGIS符号库,将MapGIS符号库转换成XML文件格式,选择目标XML符号库文件,提取颜色库、解析XML符号库文件和颜色库,生成TTF文件,生成Style符号库;其中Slib符号库是用以存储MapGIS平台下需要转换的数据源符号库,XML文件是用于存储数据源符号库中的分离出来的颜色库文件以及纯符号库文件,TTF字库文件用于存储转换后的符号库信息(此时符号是没有渲染信息),Style符号库文件是ArcGIS平台下符号库的管理文件,是通过将TTF文件进行渲染而生成转换后对应的符号库。下文分别分析以上4种文件的格式。

1.1 MapGIS符号库(Slib)

Slib符号库是MapGIS平台下用来存储地学符号(含点符号、线符号、面符号)及颜色的系统库,该系统库即为地学符号转换的原始数据源,其是MapGIS软件自身内置的一套管理符号系统,MapGIS安装目录下“Slib”文件夹中包含有四个库文件:Subgraph.lib、Linesty.lib、Fillgrph.lib、Colorlib.lib,对应存储的是? MapGIS子图库、线型库、图案库及颜色库的符号,这是根据符号的几何特征来进行划分的[6]。由于MapGIS友好的自定义图元交互的机制,用户可以借助第三方软件进行绘制及编辑自定义地学符号或使用软件自身的点图元、线图元以及填充图案进行重组图元或编辑已有符号的方法自定义没有的地学符号。因此,用户可以通过修改MapGIS中任一图层数据的空间对象的符号信息,来实现同图层数据的差异化[6]。

1.2 TrueTypeFont字体

TrueType字体(TrueType Font,简称TTF)是常用字库的标准,其的特点是描边算法,可以很方便地把任一符号轮廓通过描边算法转换成曲线,再对曲线内进行填充,以达到各种颜色和效果,由于TrueType字体本身的优势,其已经成为很多制图软件用来制作地学符号的的字体。TrueType字体生成一一对应的Style文件中符号具有不失真、绘制速度快、缩放无延时等优点,同时还可以实现不同GIS平台间使用,以达到符号数据共享的目的。

采用树形的表对TTF文件进行组织,其由三部分构成:描述表目录、若干描述表和头文件。其中头文件占用了12Btyes,含有文件版本编码、描述表数量、描述表检索范围、描述表入口选择、调整范围等信息。描述表目录位于文件头之后,每个目录占16Btyes,其记录描述表的名字、描述表内容的检验、描述表的坐标偏移以及描述的长度[7]。TTF的描述表包括有24个表,其中10个是必要选择的表,如表1,其中以Cmap、Glyf和Loca最为重要。

表1 TrueType字体文件中必须选择的描述表[7]

其他14个描述表是选择的,它们描述了垂直控制表、垂直控制表头、定义程序区等信息。由于TrueType字体本身的优势,其已经成为很多制图软件用来制作地学符号字体,如符号库转换模块中,使用Character-MarkerSymbol接口将已经安装的自定义的TTF文件中的点图元按CharacterIndex查找生成相应的点符号写入ArcGIS软件的符号系统库Style文件中。同样分别使用MarkerLineSymbol和MarkerFillSymbol生成Style文件中的线符号和面符号。TrueType字体生成一一对应的Style文件中符号具有不失真、绘制速度快、缩放无延时等优点,同时还可以实现不同GIS平台间使用,以达到符号数据共享的目的。

1.3 解析XML符号库和颜色库文件

通过分析MapGIS符号库,按照其几何特性可以将符号库分为点符号、线符号、面符号。由于MapGIS平台下符号库将通过XML文件来存储,故需要解析XML文件格式来读取MapGIS下符号的数据。

MapGIS可将符号系统库库导出为XML文件格式,下面以某个符号库中子图号为105的点符号说明XML文件的存储格式。

105号子图其导出XML文件格式如下:

(下文均以单标记表示标记对,如表示标记对)表示标记对为XML顶层标记,其包含标记对。其中存储导出的子图库信息,例如:子图库名称、包含符号总数(注:指的是原库在MapGIS下的符号总数,而不是导出的符号总数)、是否压缩等信息。标记对结构具体如下:

导出XML文件中的标记对的数量取决于用户所选中的导出子图库子图的数量。如果将某一子图库全部导出为XML,则标记对的数量为子图库中子图的总数;如果只将某子图库的单个子图导出为XML,则标签对仅有一个。标记记录子图库中某一子图的信息,其结构包含一个及若干个标签对。

标签对结构如下:

标签对则记录了属于某一个的图元信息。每个符号可包含多个图元,图元包含点、线、区等,因此在一个当?中可包含多个,包含的数量可由当中的给出。

标签对中可包含的标签及对应信息如表2所示。

表2 可包含标签对

结构如下所示:

标签对中可包含的标签及对应信息如表3所示。

表3 可包含标签对

表4 点符号和线符号的说明

填充符号的说明如下表5所示:

表5 面符号的说明

通过以上XML文件格式解析,获取到符号库中符号的数据作为ArcGIS平台下符号化符号的数据源。

1.4 Style符号库文件

ArcGIS软件中,将用于存储符号样式的文件称之

为符号库,也即是常说的Style文件,其Style文件是在样式管理器中进行管理的,进行Style文件中符号的编辑、新建、删除等工作。实际上,Style符号库文件可以看作一种小型的关系型数据库,进而将文件的后缀名(*. style)更改为Access数据库支持的扩展名(*.mdb),再用Access软件打开,每个Style文件都包含22个表结构[5],每一张表对应着一类符号,如文字符号、标记符号、线符号、填充符号等符号;其中的每个表结构都相同,每个表都是由4个字段分别是ID、Name、Category、Object4组成;其中,ID字段是长整型数据类型(Long),是该表的主键,保证记录是唯一的,值不能为空,其是符号在表中的编号,是一个自加的字段,由系统自动编号;Name字段是String类型,此字段用来命名文件中符号的名称如P-0105,可以为空,在数据文件转换过程中,通过IStyleGalleryItem接口中的get_Items()函数获取地理数据的属性与Name进行自动匹配符号化;Category字段是String类型,此字段用来区分符号的类型,可以通过该字段进行不同的类型符号的检索,检索结果可以导出自定义的Style;OBJECT字段是对象连接与嵌入类型,是一串二进制数据流,其是通过符号序列化后的结果,此字段用来存放符号的数据信息,其包括符号的CLSID值和符号数据信息。在该字段中,前16Btyes是符号对象的GUID值,是GUID(全局唯一标示符)数据类型,通过GUID值可以新建符号对象,并从剩下的数据流读取符号数据信息,包括有符号的大小、角度、颜色等信息。

2 符号库转换

为解决当前国内大多地矿局部门中大量“一图一库”数据资源需将MapGIS平台下数据向ArcGIS平台过渡的迫切需求,设计了针对MapGIS符号进行原图迁移到ArcGIS平台中。此过程需要全自动的符号化处理方式,保证生成的符号在ArcGIS平台下显示和在MapGIS平台下显示相同或相近[10]。

2.1 ArcGIS符号化

经过某地矿局现有数字资源进行深入分析研究发现,大多数数据都是存在一图一库的现象,故需要将MapGIS平台的符号库类似的在ArcGIS平台下创建,从而程序化解决符号库数量庞大,而无法实现符号库数据共享的问题。本文提出符号库转换的解决方式,这里选择自定义符号类来实现从MapGIS平台下符号到ArcGIS平台的重构。论文根据需要自定义的接口和符号扩展类,分别用来实现MapGIS的点、线、面符号在ArcGIS平台下的绘制[8]。这里以点符号转换为例进行解析从Subgraph.lib转换到Style文件中的其对应的“Marker Symbols”。地学符号库跨平台转换模块具体处理流程,如图1所示,具体流程如下:

由图一可以看出许钧对翻译学的研究主要始于20世纪80年代,这一时期,我国引进了许多西方优秀的教育著作,促使许多译者致力于著作的翻译工作,自然也引出了翻译学的研究。可以看出1987-1900年,许钧对翻译研究的发文总量每年平均只有1篇。1991-1993年,其发文量突然上升,到了1995-1996年间,最高每年发文达到7篇之多。21世纪受“走出去”政策的影响他对翻译学科的研究也活跃起来,几乎保持在平均每年3-4篇左右。

图1 地学符号转换流程图

(1)将通过MapGIS K9将Slib符号库倒换成XML文本格式文件,符号库XML中点符号105的数据存储格式见上文1.3小节中标签对结构。

(2)将XML文件数据源中提取出并解析出RGB值生

成颜色库XML文件,此处需要使用到IXMapColorLib接口,通过其ColorNum属性获取到该SLib文件下所有的颜色库的总数量,再次通过其get_MapColor属性获取到每个颜色号所对应的RGB值。

(3)解析符号库XML文件以及颜色库XML文件[4]。符号库XML文件一个标签代表着一个子图的具体信息,首先根据标签的TypeOf-Symbol字段(具体见表2)进行判断符号的类型,该字段内信息分别记录子图的类型、坐标点、子图名称、图元个数、图元颜色以及每个图元信息()等,这里以点符号为例(TypeOfSymbol的值为257),获取到符号库中符号的数据作为ArcGIS平台下符号化符号的数据源,同时该数据也用于生产TTF文件。

解析颜色库XML其实就是解析本流程2中标签中4种标签值,总数由值决定。

(4)将解析后的XML文件数据按照TTF文件的格式写入,同时使用描边算法(见1.2节)将已有的数据绘制成地学符号图形存储到TTF文件中,并输出TTF文件解析的数据转换成TTF字库,并将TTF字库注册到Windows平台下的字库系统中。

(5)通过软件将TTF字库根据已解析的渲染信息进行渲染生成Style文件(包含点、线、面符号),其中彩色点符号要进行图层的叠加以及颜色的渲染,对于单个图层是否可以渲染颜色,这里使用图层加锁进行解决。

2.2 转换成果

符号库转换是将MapGIS的点、线、面符号转换到ArcGIS平台下,先将Slib符号库转换成对应的XML格式文件,然后提取其对应的渲染颜色,再者解析符号XML以及颜色XML文件,绘制的符号会生成TrueType字体来存储,并注册到Windows系统字体库C:WindowsFonts目录下中,使用字符标记符号进行地图渲染,将生成的点、线、面符号分别写入到其对应的“Marker Symbols”、“Line Symbols”、“Fill Symbols”Style文件中的列表中,从而达到符号表达图形渲染效果。图2为原MapGIS容县水文出图系统中的点符号(105)和其转换后在ArcGIS平台下的显示效果图。图3为原MapGIS系统中的点符号(101-130)其转换Style文件中的局部点符号(P-0100~P-0123)效果图。

图2 点符号转换对照图

图3

3 结语

(1)本文深入研究Slib符号库和Style文件的存储机制和结构,采用TrueType字体进行符号图元的绘制,实现了地学符号的全矢量化,提高了符号的质量以及符号绘制速度,解决了符号在比例尺缩放时失真与变形的问题,改善了地学图形的符号化效果。

(2)针对符号库不能共享的现状所造成的“一图一

库”的现象,提出了将MapGIS平台下的Slib符号库文件转换成ArcGIS平台下所对应的Style矢量化的符号库,从而解决一图一库所不能共享数据资源的难题,同时,该方式作为设计基于Oracle数据库设计地学符号数据库管理系统的基础,其实质就是指设计一个基于国标的通用的符号库,并且保证了符号的全矢量化,从而使渲染效果更好。

[1]李兵,叶海建,方金云.图元法符号库的设计思想研究[J].计算机工程与应用,2005,17:36-38+45.

[2]T Tao.Pipe-Point Symbol's Sharing of GIS Network Data[J].Science of Surveying and Mapping,vol.5,2007,pp.156-157.

[3]Study on Exchange Method of CAD Point Symbols and TrueType Fonts[C].ESITA,vol.2,July 2010,pp466-469.

[4][4]Zhou Y,Wu XQ,Wang RY.A Semantic Similarity Retrieval Model Based on Lucene[C].2014 5th IEEE International Conference on Software Engineering and Service Science(ICSESS2014),Beijing,China,2014:854-858.

[5]樊文锋,王怀,叶芳宏.基于Style符号库的存取研究及符号选择器实现[J].测绘通报,2011,11:25-27+31.

[6]吴新强.跨GIS平台符号库建设及其数据格式转换研究[D].桂林:桂林电子科技大学2014.

[7]马建芳.全矢量地质符号库的设计与实现[D].北京:中国地质大学,2013.

[8]吴新强,周娅,王如意,等.MapGIS地学数据库和符号库的ArcGIS转换方案[J].国土资源遥感,2015,27(4):183-188.

[9]覃如府,许惠平,王家林.基于XML的通用地图符号库设计与实现[J].同济大学学报(自然科学版),2008,08:1138-1142.

[10]陈金龙,吴新强,周娅,等.MapGIS地学符号库向ArcGIS转换研究[J].广西民族大学学报(自然科学版),2015(3).

Geological Symbol Library Format Conversion Based on TTF

WU Xin-qiang,WU Peng

(Guangzhou Haige Communications Group Incorporated Company,Guangzhou 510000)

To simplify sharing GIS symbol library,targets solution MapGIS platform under"a map a Library"digital resources of the phenomenon. Puts forward a scheme which realizes the symbol library conversion from MapGIS platform to ArcGIS platform and builds standard geological symbol library based on TTF.It is completed a standard geological symbol symbolic representation.

MapGIS;ArcGIS;Conversion;Style;TTF

1007-1423(2016)30-0070-06

10.3969/j.issn.1007-1423.2016.30.018

吴新强(1989-),男,安徽阜南人,工程师,硕士,研究方向为数据处理及GIS应用,Email:wuxinqiang819@163.com

2016-06-28

2016-09-19

猜你喜欢
字库字段标签
图书馆中文图书编目外包数据质量控制分析
No.2 喜茶联合汉仪字库推出微型书和书签
无惧标签 Alfa Romeo Giulia 200HP
车迷(2018年11期)2018-08-30 03:20:32
不害怕撕掉标签的人,都活出了真正的漂亮
海峡姐妹(2018年3期)2018-05-09 08:21:02
某型号产品的字库迁移优化设计
电子世界(2018年7期)2018-04-26 08:51:35
标签化伤害了谁
基于多进制查询树的多标签识别方法
计算机工程(2015年8期)2015-07-03 12:20:27
相同字库条件下激光打印文件特征的变化规律和特点
警察技术(2015年4期)2015-02-27 15:37:36
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述