吳新強,吳 鵬
(廣州海格通信集團股份有限公司,廣州 510000)
基于TTF字庫的地學(xué)符號庫格式轉(zhuǎn)換實現(xiàn)
吳新強,吳 鵬
(廣州海格通信集團股份有限公司,廣州 510000)
為了便于GIS符號庫的共享,針對性的解決MapGIS平臺下“一圖一庫”數(shù)字資源的現(xiàn)象,提出基于TTF字庫的方式實現(xiàn)從MapGIS平臺下的Slib系統(tǒng)庫轉(zhuǎn)換到ArcGIS平臺下對應(yīng)的Style符號庫,從而有效地實現(xiàn)不同GIS平臺間符號庫的共享。
MapGIS;ArcGIS;轉(zhuǎn)換;Style;TTF
地學(xué)符號是用來表示GIS中地理圖形的重要形式,通過解讀地理圖形中符號,便可以感性的明白其空間對象所表達的地理空間信息。地學(xué)符號按照其空間分布狀態(tài)可分為點符號、線符號、面符號,這些地學(xué)符號是通過GIS平臺自身的符號庫樣式進行管理(GIS軟件平臺地學(xué)符號格式各不相同),在目前情況下,由于各種因素,MapGIS平臺下Slib符號庫[1]以及ArcGIS平臺下的Style符號庫無法共享使用,可以設(shè)計并開發(fā)一個通過的地學(xué)符號管理軟件,該符號管理工具可以將其他GIS軟件平臺的地學(xué)符號轉(zhuǎn)換成一種通用的格式[9],使不同GIS平臺下的符號庫經(jīng)軟件轉(zhuǎn)換成統(tǒng)一格式進行使用,從而實現(xiàn)地學(xué)符號共享。故本文提出基于TTF文件(TrueType字體庫)[2-3]實現(xiàn)MapGIS符號庫向Arc GIS的轉(zhuǎn)換以實現(xiàn)這兩種平臺下的地學(xué)符號數(shù)據(jù)共享。
本文基于TTF字庫的地學(xué)符號轉(zhuǎn)換主要依據(jù)以下Slib符號庫、XML文件[4]、TTF字庫、Style文件四種文件格式的存儲,其主要包括輸入MapGIS符號庫,將MapGIS符號庫轉(zhuǎn)換成XML文件格式,選擇目標(biāo)XML符號庫文件,提取顏色庫、解析XML符號庫文件和顏色庫,生成TTF文件,生成Style符號庫;其中Slib符號庫是用以存儲MapGIS平臺下需要轉(zhuǎn)換的數(shù)據(jù)源符號庫,XML文件是用于存儲數(shù)據(jù)源符號庫中的分離出來的顏色庫文件以及純符號庫文件,TTF字庫文件用于存儲轉(zhuǎn)換后的符號庫信息(此時符號是沒有渲染信息),Style符號庫文件是ArcGIS平臺下符號庫的管理文件,是通過將TTF文件進行渲染而生成轉(zhuǎn)換后對應(yīng)的符號庫。下文分別分析以上4種文件的格式。
1.1 MapGIS符號庫(Slib)
Slib符號庫是MapGIS平臺下用來存儲地學(xué)符號(含點符號、線符號、面符號)及顏色的系統(tǒng)庫,該系統(tǒng)庫即為地學(xué)符號轉(zhuǎn)換的原始數(shù)據(jù)源,其是MapGIS軟件自身內(nèi)置的一套管理符號系統(tǒng),MapGIS安裝目錄下“Slib”文件夾中包含有四個庫文件:Subgraph.lib、Linesty.lib、Fillgrph.lib、Colorlib.lib,對應(yīng)存儲的是? MapGIS子圖庫、線型庫、圖案庫及顏色庫的符號,這是根據(jù)符號的幾何特征來進行劃分的[6]。由于MapGIS友好的自定義圖元交互的機制,用戶可以借助第三方軟件進行繪制及編輯自定義地學(xué)符號或使用軟件自身的點圖元、線圖元以及填充圖案進行重組圖元或編輯已有符號的方法自定義沒有的地學(xué)符號。因此,用戶可以通過修改MapGIS中任一圖層數(shù)據(jù)的空間對象的符號信息,來實現(xiàn)同圖層數(shù)據(jù)的差異化[6]。
1.2 TrueTypeFont字體
TrueType字體(TrueType Font,簡稱TTF)是常用字庫的標(biāo)準,其的特點是描邊算法,可以很方便地把任一符號輪廓通過描邊算法轉(zhuǎn)換成曲線,再對曲線內(nèi)進行填充,以達到各種顏色和效果,由于TrueType字體本身的優(yōu)勢,其已經(jīng)成為很多制圖軟件用來制作地學(xué)符號的的字體。TrueType字體生成一一對應(yīng)的Style文件中符號具有不失真、繪制速度快、縮放無延時等優(yōu)點,同時還可以實現(xiàn)不同GIS平臺間使用,以達到符號數(shù)據(jù)共享的目的。
采用樹形的表對TTF文件進行組織,其由三部分構(gòu)成:描述表目錄、若干描述表和頭文件。其中頭文件占用了12Btyes,含有文件版本編碼、描述表數(shù)量、描述表檢索范圍、描述表入口選擇、調(diào)整范圍等信息。描述表目錄位于文件頭之后,每個目錄占16Btyes,其記錄描述表的名字、描述表內(nèi)容的檢驗、描述表的坐標(biāo)偏移以及描述的長度[7]。TTF的描述表包括有24個表,其中10個是必要選擇的表,如表1,其中以Cmap、Glyf和Loca最為重要。
表1 TrueType字體文件中必須選擇的描述表[7]
其他14個描述表是選擇的,它們描述了垂直控制表、垂直控制表頭、定義程序區(qū)等信息。由于TrueType字體本身的優(yōu)勢,其已經(jīng)成為很多制圖軟件用來制作地學(xué)符號字體,如符號庫轉(zhuǎn)換模塊中,使用Character-MarkerSymbol接口將已經(jīng)安裝的自定義的TTF文件中的點圖元按CharacterIndex查找生成相應(yīng)的點符號寫入ArcGIS軟件的符號系統(tǒng)庫Style文件中。同樣分別使用MarkerLineSymbol和MarkerFillSymbol生成Style文件中的線符號和面符號。TrueType字體生成一一對應(yīng)的Style文件中符號具有不失真、繪制速度快、縮放無延時等優(yōu)點,同時還可以實現(xiàn)不同GIS平臺間使用,以達到符號數(shù)據(jù)共享的目的。
1.3 解析XML符號庫和顏色庫文件
通過分析MapGIS符號庫,按照其幾何特性可以將符號庫分為點符號、線符號、面符號。由于MapGIS平臺下符號庫將通過XML文件來存儲,故需要解析XML文件格式來讀取MapGIS下符號的數(shù)據(jù)。
MapGIS可將符號系統(tǒng)庫庫導(dǎo)出為XML文件格式,下面以某個符號庫中子圖號為105的點符號說明XML文件的存儲格式。
105號子圖其導(dǎo)出XML文件格式如下:
(下文均以單標(biāo)記表示標(biāo)記對,如
導(dǎo)出XML文件中的
表2
表3
表4 點符號和線符號的
填充符號的
表5 面符號的
通過以上XML文件格式解析,獲取到符號庫中符號的數(shù)據(jù)作為ArcGIS平臺下符號化符號的數(shù)據(jù)源。
1.4 Style符號庫文件
ArcGIS軟件中,將用于存儲符號樣式的文件稱之
為符號庫,也即是常說的Style文件,其Style文件是在樣式管理器中進行管理的,進行Style文件中符號的編輯、新建、刪除等工作。實際上,Style符號庫文件可以看作一種小型的關(guān)系型數(shù)據(jù)庫,進而將文件的后綴名(*. style)更改為Access數(shù)據(jù)庫支持的擴展名(*.mdb),再用Access軟件打開,每個Style文件都包含22個表結(jié)構(gòu)[5],每一張表對應(yīng)著一類符號,如文字符號、標(biāo)記符號、線符號、填充符號等符號;其中的每個表結(jié)構(gòu)都相同,每個表都是由4個字段分別是ID、Name、Category、Object4組成;其中,ID字段是長整型數(shù)據(jù)類型(Long),是該表的主鍵,保證記錄是唯一的,值不能為空,其是符號在表中的編號,是一個自加的字段,由系統(tǒng)自動編號;Name字段是String類型,此字段用來命名文件中符號的名稱如P-0105,可以為空,在數(shù)據(jù)文件轉(zhuǎn)換過程中,通過IStyleGalleryItem接口中的get_Items()函數(shù)獲取地理數(shù)據(jù)的屬性與Name進行自動匹配符號化;Category字段是String類型,此字段用來區(qū)分符號的類型,可以通過該字段進行不同的類型符號的檢索,檢索結(jié)果可以導(dǎo)出自定義的Style;OBJECT字段是對象連接與嵌入類型,是一串二進制數(shù)據(jù)流,其是通過符號序列化后的結(jié)果,此字段用來存放符號的數(shù)據(jù)信息,其包括符號的CLSID值和符號數(shù)據(jù)信息。在該字段中,前16Btyes是符號對象的GUID值,是GUID(全局唯一標(biāo)示符)數(shù)據(jù)類型,通過GUID值可以新建符號對象,并從剩下的數(shù)據(jù)流讀取符號數(shù)據(jù)信息,包括有符號的大小、角度、顏色等信息。
為解決當(dāng)前國內(nèi)大多地礦局部門中大量“一圖一庫”數(shù)據(jù)資源需將MapGIS平臺下數(shù)據(jù)向ArcGIS平臺過渡的迫切需求,設(shè)計了針對MapGIS符號進行原圖遷移到ArcGIS平臺中。此過程需要全自動的符號化處理方式,保證生成的符號在ArcGIS平臺下顯示和在MapGIS平臺下顯示相同或相近[10]。
2.1 ArcGIS符號化
經(jīng)過某地礦局現(xiàn)有數(shù)字資源進行深入分析研究發(fā)現(xiàn),大多數(shù)數(shù)據(jù)都是存在一圖一庫的現(xiàn)象,故需要將MapGIS平臺的符號庫類似的在ArcGIS平臺下創(chuàng)建,從而程序化解決符號庫數(shù)量龐大,而無法實現(xiàn)符號庫數(shù)據(jù)共享的問題。本文提出符號庫轉(zhuǎn)換的解決方式,這里選擇自定義符號類來實現(xiàn)從MapGIS平臺下符號到ArcGIS平臺的重構(gòu)。論文根據(jù)需要自定義的接口和符號擴展類,分別用來實現(xiàn)MapGIS的點、線、面符號在ArcGIS平臺下的繪制[8]。這里以點符號轉(zhuǎn)換為例進行解析從Subgraph.lib轉(zhuǎn)換到Style文件中的其對應(yīng)的“Marker Symbols”。地學(xué)符號庫跨平臺轉(zhuǎn)換模塊具體處理流程,如圖1所示,具體流程如下:
由圖一可以看出許鈞對翻譯學(xué)的研究主要始于20世紀80年代,這一時期,我國引進了許多西方優(yōu)秀的教育著作,促使許多譯者致力于著作的翻譯工作,自然也引出了翻譯學(xué)的研究??梢钥闯?987-1900年,許鈞對翻譯研究的發(fā)文總量每年平均只有1篇。1991-1993年,其發(fā)文量突然上升,到了1995-1996年間,最高每年發(fā)文達到7篇之多。21世紀受“走出去”政策的影響他對翻譯學(xué)科的研究也活躍起來,幾乎保持在平均每年3-4篇左右。
圖1 地學(xué)符號轉(zhuǎn)換流程圖
(1)將通過MapGIS K9將Slib符號庫倒換成XML文本格式文件,符號庫XML中點符號105的數(shù)據(jù)存儲格式見上文1.3小節(jié)中
(2)將XML文件數(shù)據(jù)源中提取出并解析出RGB值生
成顏色庫XML文件,此處需要使用到IXMapColorLib接口,通過其ColorNum屬性獲取到該SLib文件下所有的顏色庫的總數(shù)量,再次通過其get_MapColor屬性獲取到每個顏色號所對應(yīng)的RGB值。
(3)解析符號庫XML文件以及顏色庫XML文件[4]。符號庫XML文件一個
解析顏色庫XML其實就是解析本流程2中
(4)將解析后的XML文件數(shù)據(jù)按照TTF文件的格式寫入,同時使用描邊算法(見1.2節(jié))將已有的數(shù)據(jù)繪制成地學(xué)符號圖形存儲到TTF文件中,并輸出TTF文件解析的數(shù)據(jù)轉(zhuǎn)換成TTF字庫,并將TTF字庫注冊到Windows平臺下的字庫系統(tǒng)中。
(5)通過軟件將TTF字庫根據(jù)已解析的渲染信息進行渲染生成Style文件(包含點、線、面符號),其中彩色點符號要進行圖層的疊加以及顏色的渲染,對于單個圖層是否可以渲染顏色,這里使用圖層加鎖進行解決。
2.2 轉(zhuǎn)換成果
符號庫轉(zhuǎn)換是將MapGIS的點、線、面符號轉(zhuǎn)換到ArcGIS平臺下,先將Slib符號庫轉(zhuǎn)換成對應(yīng)的XML格式文件,然后提取其對應(yīng)的渲染顏色,再者解析符號XML以及顏色XML文件,繪制的符號會生成TrueType字體來存儲,并注冊到Windows系統(tǒng)字體庫C:WindowsFonts目錄下中,使用字符標(biāo)記符號進行地圖渲染,將生成的點、線、面符號分別寫入到其對應(yīng)的“Marker Symbols”、“Line Symbols”、“Fill Symbols”Style文件中的列表中,從而達到符號表達圖形渲染效果。圖2為原MapGIS容縣水文出圖系統(tǒng)中的點符號(105)和其轉(zhuǎn)換后在ArcGIS平臺下的顯示效果圖。圖3為原MapGIS系統(tǒng)中的點符號(101-130)其轉(zhuǎn)換Style文件中的局部點符號(P-0100~P-0123)效果圖。
圖2 點符號轉(zhuǎn)換對照圖
圖3
(1)本文深入研究Slib符號庫和Style文件的存儲機制和結(jié)構(gòu),采用TrueType字體進行符號圖元的繪制,實現(xiàn)了地學(xué)符號的全矢量化,提高了符號的質(zhì)量以及符號繪制速度,解決了符號在比例尺縮放時失真與變形的問題,改善了地學(xué)圖形的符號化效果。
(2)針對符號庫不能共享的現(xiàn)狀所造成的“一圖一
庫”的現(xiàn)象,提出了將MapGIS平臺下的Slib符號庫文件轉(zhuǎn)換成ArcGIS平臺下所對應(yīng)的Style矢量化的符號庫,從而解決一圖一庫所不能共享數(shù)據(jù)資源的難題,同時,該方式作為設(shè)計基于Oracle數(shù)據(jù)庫設(shè)計地學(xué)符號數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ),其實質(zhì)就是指設(shè)計一個基于國標(biāo)的通用的符號庫,并且保證了符號的全矢量化,從而使渲染效果更好。
[1]李兵,葉海建,方金云.圖元法符號庫的設(shè)計思想研究[J].計算機工程與應(yīng)用,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符號庫的存取研究及符號選擇器實現(xiàn)[J].測繪通報,2011,11:25-27+31.
[6]吳新強.跨GIS平臺符號庫建設(shè)及其數(shù)據(jù)格式轉(zhuǎn)換研究[D].桂林:桂林電子科技大學(xué)2014.
[7]馬建芳.全矢量地質(zhì)符號庫的設(shè)計與實現(xiàn)[D].北京:中國地質(zhì)大學(xué),2013.
[8]吳新強,周婭,王如意,等.MapGIS地學(xué)數(shù)據(jù)庫和符號庫的ArcGIS轉(zhuǎn)換方案[J].國土資源遙感,2015,27(4):183-188.
[9]覃如府,許惠平,王家林.基于XML的通用地圖符號庫設(shè)計與實現(xiàn)[J].同濟大學(xué)學(xué)報(自然科學(xué)版),2008,08:1138-1142.
[10]陳金龍,吳新強,周婭,等.MapGIS地學(xué)符號庫向ArcGIS轉(zhuǎn)換研究[J].廣西民族大學(xué)學(xué)報(自然科學(xué)版),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-),男,安徽阜南人,工程師,碩士,研究方向為數(shù)據(jù)處理及GIS應(yīng)用,Email:wuxinqiang819@163.com
2016-06-28
2016-09-19