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