MapGIS地学符号库向ArcGIS转换研究*
2015-01-15陈金龙吴新强秦兴国
陈金龙,吴新强,秦兴国,周 娅
(桂林电子科技大学 计算机科学与工程学院,广西 桂林 541004)
符号库[1]是地图符号的编辑和管理系统,它利用计算机实现地图符号信息的管理、编辑、存储、检索和更新,符号库的设计直接影响地图出图的质量以及地图信息获取的效率,现有的主要GIS平台都有自身的符号库体系,能够实现地学简单符号的渲染.但是针对地学复杂的符号,大多采用栅格图片的方式进行填充.这种方式无法实现全矢量的渲染效果,造成符号出现失真现象.
随着GIS在地学领域应用的不断发展,现有的GIS平台的符号制图体系对复杂的符号的制作已不能满足用的需求,故需要设计一套符合我国国标、行标的统一地学符号库,实现不同GIS平台间符号的共享以及符号库的跨平台应用.笔者提出采用True-Type字体库实现MapGIS符号库向ArcGIS的转换,并设计基于Oracle数据库来管理转换后的符号库,进而建设标准、统一的地学符号库,以实现跨平台[2]的GIS系统间的符号数据共享.
1 相关工作
地学符号一般按照其集合特点分为点符号、线符号、面符号,这些符号的基本图元又分别为点图元、线图元、面图;地学符号在地图上表现的具体意义是不容忽视的,故要实现符号共享的前提是保证符号的一致性.
地图数据文件格式的转换在国内外的GIS软件之间主要是通过直接或者间接的方法转换,但是数据文件格式转换后势必会出现符号信息不一致的现象,这是由于国内外各个GIS软件之间的符号库设计格式存在巨大的差异,从而阻碍了地学符号不能进行有效的共享.建立统一的、标准的、通用的符号库是今后的必然趋势.因此很多人对地学符号共享这方面进行了研究.
目前地学符号在GIS平台中,主要通过以下两种方式实现:1)通过GIS软件平台自身带有的基本的符号体系,其包含一些常用的地图符号,同时用户也可以在此基础上创建自定义的符号,这需要使用软件提供的符号制图模板,利用符号库中符号创建新的符号,并保存到自定义的个人符号库中.2)对于一些复杂的符号,仅仅使用GIS平台提供的简单图元已无法绘制出来,此时需要使用第三方制图软件,通过手工的方式进行制作复杂符号.
目前各大GIS平台都内置符号编辑模块对符号进行制作,并且符号库的管理方式都是采用文件的形式.但是由于各个软件之间的符号库文件格式存在很大的差异,并且没有统一的标准,从而造成很难进行有效的符号共享,因此GIS研究人员以及GIS应用人员提出了几种地学符号共享方式,如双层地图符号库模型[3]、XML符号库[4]、基于组件的服务器端符号库[5]、TrueType字库和建立符号对应表.虽然这些成果对推动GIS地学符号的标准化和规范化具有积极的作用,也或多或少的解决了GIS领域的地学符号共享的难题,但这些方式都有不足,如使用图片存储符号、手工绘制符号等,会造成符号渲染失真以及耗费大量的人力去编辑处理,其并没有从根本上消除GIS软件平台之间地图符号系统的差异,都没有建设一套标准的符号库,致使它们对GIS地学符号的共享程度非常有限[6].
针对上述问题,笔者提出全矢量自动化地学符号转换以及符号库采用Oracle数据库管理的形式.通过Oracle数据库管理系统建立统一的、标准的、通用的、跨平台的地学符号库,来解决目前GIS软件平台间没有统一标准的地学符号库造成地学符号共享的问题.当符号库全部建立后,对地图数据可以实现符号化.
2 符号库转换
为解决当前国土部门中大量的MapGIS平台下数据向ArcGIS平台过渡的迫切需求,设计了针对MapGIS符号进行原图迁移到ArcGIS平台中.此过程需要全自动的符号化处理方式,保证生成的符号在ArcGIS平台下显示和在MapGIS平台下显示相同或相近.
2.1 转换文件格式
Slib符号库:在MapGIS平台下该格式是用来存储地质符号以及颜色的系统库,该地质符号系统库是地质符号转换的原始数据源.
XML[4]文件:由于 MapGIS SDK没有提供可以读取系统库Slib中符号的数据源的API,文章使用XML文件来存储MapGIS平台下符号库中的数据,继而解析XML文件,可以做到无属性丢失,从而提高的开发效率.
TrueType[8-9]字 体 (TrueType F ont,简 称TTF):常用字库的标准,其特点是描边算法,可以很方便地把任一符号轮廓通过描边算法转换成曲线,再对曲线内进行填充,以达到各种颜色和效果,由于TrueType字体本身的优势,其已成为很多制图软件用来制作地学符号的字体.TrueType字体生成一一对应的Style文件中符号具有不失真、绘制速度快、缩放无延时等优点,同时还可以实现不同GIS平台间使用,以达到符号数据共享的目的.
Style符号库:在ArcGIS软件中,将用于存储符号的文件称之为符号库,其Style文件是在样式管理器中进行管理的,进行符号库的添加、删除等工作.每个Style文件都包含22个表结构[10],每一张表对应着一类符号.其中的每个表结构都相同,每个表都是由4个字段ID、Name、Category、Object4组成.
符号数据共享是数据共享的一个基本体现,然而在各个GIS平台和应用系统之间,空间数据的图示化表达信息,特别是地图符号信息却无法共享,促使用户投入大量的重复工作,从而造成人力和物力的浪费.因此,符号库转换是尤为迫切的需要.符号库转换是将MapGIS的符号库转换到ArcGIS平台下Style文件中,符号库转换模块主要将原始MapGIS下符号系统库Slib文件通过MapGIS K9软件转换为XML文件,再使用笔者开发的符号库转换系统Slib2Style将其转换成TTF,进而保存为其源数据对应的渲染样式Style文件.
2.2 MapGIS 符号读取
由于MapGIS平台下符号库将通过XML文件来存储,故需要解析XML文件格式来读取MapGIS下符号的数据.下面以广西壮族自治区容县水文出图符号库(Jingweidu_20.xml)中子图号为44的点符号说明XML文件的存储格式,子图44号的导出XML文件格式如下:
<SymbolLib></SymbolLib>(以下均以开标记表示标记对,例如,<SymbolLib>表示<Symbol-Lib></SymbolLib>标记对)表示标记对为顶层标记,其包含<SymbolLibHead>、<Symbol>标记对;其中<SymbolLibHead>记录了导出的子图库信息,导出XML文件中<Symbol>标记对数量取决于导出子图的个数;<Symbol>标记记录了子图库中某一子图信息,其包含一个<SymbolHead>标记对及若干个<SymbolItem>标记对;<SymbolItem>标签对则记录了属于某一个<Symbol>的图元信息.每个符号可包含多个图元,图元包含点、线、区等,因此在一个<Symbol>中可包含多个<SymbolItem>,包含的数量可由<SymbolHead>当中的<Item-Num>给出;<SymbolItem>结构如下所示.
通过以上XML文件格式解析,获取到符号库中符号数据作为ArcGIS平台下符号化符号的数据源.
2.3 ArcGIS符号化
经过对广西壮族自治区地矿局现有数字资源进行深入分析研究发现,大多数数据都是存在一图一库的现象,故需要将MapGIS平台的符号库类似的在ArcGIS平台下创建,从而程序化解决符号库数量庞大,而无法实现符号库数据共享的问题.笔者提出符号库转换的解决方式,这里选择自定义符号类来实现符号从MapGIS平台下到ArcGIS平台的重构.根据需要自定义的接口和符号扩展类,分别用来实现MapGIS的点、线、面符号在ArcGIS平台下的绘制.表1为接口和类的原型和说明.
ArcGIS平台的Style文件主要是通过实现表1中StyleGen接口实现的,StyleGen接口中主要是实现符号的绘制,分别使用CharacterMarkerSymbol、MarkerLineSymbol、MarkerFillSymbol、MultiLayer-FillSymbol等接口来实现ISymbol接口,从而实现Style文件中符号的符号化.
ArcGIS平台下实现MapGIS的点符号就是实现StyleGen接口中GeneratePoints()方法,这个过程中将会通过CharacterMarkerSymbol接口实现符号的绘制.通过SymbolLib类来解析Slib系统库对应的XML文件,根据其中CMKY颜色号的值来判断该符号的颜色.此过程将解析后的XML数据存放到点、线、面分别对应的List列表中(如PointSymbols),再通过 TTFGen类中的SaveToTTFFile()方法,将XML解析后的数据写入TTF字库文件.通过解析ColorLibParser类中的颜色值来渲染符号的颜色,通过StyleGen类分别用CharacterMarkerSymbol接口来实现符号样式的渲染,并调用StyleGalleryClass接口将它们写入Style文件中的“Marker Symbols”列表中.线符号和面符号的绘制类似于点符号过程.
表1 转换模块中接口和类的原型及说明Tab.1 The prototype and description of the interface and class in the conversion module
2.4 转换成果
符号库转换是将 MapGIS的点、线、面符号转换到ArcGIS平台下,图1是 MapGIS符号转换到ArcGIS平台下的符号转换系统主界面.首先,选择将Slib符号库转换成对应的XML格式文件,其次提取其对应的渲染颜色,再次解析并生成TTF,将生成的TTF文件注册到C:\Windows\Fonts目录下,最后生成Slib符号库对应的Style符号库,使用该符号库进行地图渲染,从而达到符号渲染效果.
图1 MapGIS到ArcGIS符号库转换系统主界面Fig.1ArcGIS to MapGIS symbol library conversion system master interface
图2为原MapGIS容县水文出图系统中的点符号(44)和其转换后在ArcGIS平台下的显示效果图(P-0044).图3为原 MapGIS容县水文出图系统中的点符号(41-70)其转换对应Jingweidu_20.Style文件中的局部点符号(P-0041—P-0070)效果图.
图2 (a)MapGIS平台下44号子图Fig.2(a)MapGIS platform No.44figure
图2 (b)图2(a)对应的转换后的ArcGIS平台下P-0044号子图Fig.2(b) Fig.2 (a)corresponding to the conversion of the ArcGIS platform P-0044Marker Symbols
图3 (a)MapGIS平台下局部子图(41-70号)Fig.3(a)The part Marker Symbols in MapGIS(41-70)
图3 (b)图3(a)对应的转换后的 ArcGIS平台下局部子图(P-0041—P-0070号)Fig.3(b) Fig.3(a)corresponding to the conversion of the ArcGIS platform Marker Symbol
3 地学符号数据库管理
在传统的GIS软件中,符号都是以文件的形式进行管理的,例如MapGIS中的SLib文件以及Arc-GIS中Style文件等,进行地图文件共享必须将Slib文件或Style文件一起进行迁移才能保证地图中的符号和数据显示不变.符号库系统在结构设计上仍然存在一定的问题,例如,符号库系统通常绑定于GIS平台,受平台的约束造成符号数据不能共享;符号库中没有添加、删除、更新等操作;缺少标准,给共享符号带来困难.
针对上述问题,笔者提出基于Oracle数据库建设并管理转换后符号.符号库数据库管理系统具有的特点:基础库建设,基于国家标准,分别实现不同比例的地学符号表示和存储;实现将原有的MapGIS的符号转换到Oracle数据库中并去重;数据库中预置标准常见的地质符号;实现地学符号的添加、删除、更新等功能,使其按需管理符号;建立统一的地学符号查询,能按不同属性快速检索,并导出检索结果.
笔者通过Oracle数据库管理系统建立标准的地学符号库,来解决目前GIS软件平台间由于没有标准而造成地学符号不能共享的问题.当符号库全部建立后,对地形图的数据就实现符号化,从而实现符号库的跨平台应用以及符号数据共享.地学符号数据库管理系统模型图如图4所示:
图4 地学符号数据库管理系统图Fig.4 Geological Symbol Database Management System
4 结语
1)深入研究Slib符号库和Style文件的存储机制和结构,采用TrueType字体进行符号图元的绘制,实现了地学符号的全矢量化,提高了符号的质量以及符号绘制速度,解决了符号在比例尺缩放时失真与变形的问题,改善了地学图形的符号化效果.
2)通过地学符号数据库建设,实现原有MapGIS下符号库到ArcGIS平台的准确转换,保证符号的真实性.故地学符号库转换系统将MapGIS平台下的Slib系统库转换成ArcGIS平台下支持的Style文件,从而很好的解决了国土部门目前急需解决的多年来积累庞大的一图一库转换问题.
3)针对符号库不能共享的现状,根据我国国标以及行标中制图符号的标准,提出了基于Oracle数据库设计地学符号数据库管理系统,其实质就是设计一个基于国标的通用的符号库,并且保证了符号的全矢量化,从而使渲染效果更好.解决了符号库依赖GIS环境的问题,可以用于多种已经封装好的GIS接口的GIS平台,实现一个跨平台的通过标准符号数据库管理系统,从而达到各系统平台、各级工作人员之间符号通用的需求,以达到真正意义上的跨平台符号共享.
[1]李兵,叶海建,方金云.图元法符号库的设计思想研究[J].计算机工程与应用,2005,17:36-38,45.
[2]马建芳.全矢量地质符号库的设计与实现[D].北京:中国地质大学,2013.
[3]王伟,张波,殷赣华.基于COM技术的地图符号库结构设计与实现[J].武汉大学学报:信息科学版,2002(3):296-300.
[4]覃如府,许惠平,王家林.基于XML的通用地图符号库设计与实现[J].同济大学学报:自然科学版,2008(8):1138-1142.
[5]卢毅敏,池天河,陈崇成.基于组件的服务器端共享地图符号库的研制[J].地球信息科学,2004(4):121-126.
[6]陶陶,闾国年,张书亮.GIS地图符号共享研究进展与展望[J].中国图象图形学报,2007(8):1326-1332.
[7]ZhouY,WuXQ,WangRY.ASemanticSimilarityRetrievalModelBasedonLucene[C].2014 5th IEEE International Conferenceon Software Engineeringand Service Science(ICSESS2014),Beijing,China,2014:854-858.
[8]T Tao.Pipe-point symbol's sharing of GIS network data[J].Science of Surveying and Mapping,2007(5):156-157.
[9]Study on exchange method of CAD point symbols and TrueType fonts[C].ESITA,vol.2,July 2010:466-469.
[10]樊文锋,王怀,叶芳宏.基于Style符号库的存取研究及符号选择器实现[J].测绘通报,2011(1-1):25-27,31.