陳金龍,吳新強,秦興國,周 婭
(桂林電子科技大學(xué) 計算機科學(xué)與工程學(xué)院,廣西 桂林 541004)
符號庫[1]是地圖符號的編輯和管理系統(tǒng),它利用計算機實現(xiàn)地圖符號信息的管理、編輯、存儲、檢索和更新,符號庫的設(shè)計直接影響地圖出圖的質(zhì)量以及地圖信息獲取的效率,現(xiàn)有的主要GIS平臺都有自身的符號庫體系,能夠?qū)崿F(xiàn)地學(xué)簡單符號的渲染.但是針對地學(xué)復(fù)雜的符號,大多采用柵格圖片的方式進行填充.這種方式無法實現(xiàn)全矢量的渲染效果,造成符號出現(xiàn)失真現(xiàn)象.
隨著GIS在地學(xué)領(lǐng)域應(yīng)用的不斷發(fā)展,現(xiàn)有的GIS平臺的符號制圖體系對復(fù)雜的符號的制作已不能滿足用的需求,故需要設(shè)計一套符合我國國標、行標的統(tǒng)一地學(xué)符號庫,實現(xiàn)不同GIS平臺間符號的共享以及符號庫的跨平臺應(yīng)用.筆者提出采用True-Type字體庫實現(xiàn)MapGIS符號庫向ArcGIS的轉(zhuǎn)換,并設(shè)計基于Oracle數(shù)據(jù)庫來管理轉(zhuǎn)換后的符號庫,進而建設(shè)標準、統(tǒng)一的地學(xué)符號庫,以實現(xiàn)跨平臺[2]的GIS系統(tǒng)間的符號數(shù)據(jù)共享.
地學(xué)符號一般按照其集合特點分為點符號、線符號、面符號,這些符號的基本圖元又分別為點圖元、線圖元、面圖;地學(xué)符號在地圖上表現(xiàn)的具體意義是不容忽視的,故要實現(xiàn)符號共享的前提是保證符號的一致性.
地圖數(shù)據(jù)文件格式的轉(zhuǎn)換在國內(nèi)外的GIS軟件之間主要是通過直接或者間接的方法轉(zhuǎn)換,但是數(shù)據(jù)文件格式轉(zhuǎn)換后勢必會出現(xiàn)符號信息不一致的現(xiàn)象,這是由于國內(nèi)外各個GIS軟件之間的符號庫設(shè)計格式存在巨大的差異,從而阻礙了地學(xué)符號不能進行有效的共享.建立統(tǒng)一的、標準的、通用的符號庫是今后的必然趨勢.因此很多人對地學(xué)符號共享這方面進行了研究.
目前地學(xué)符號在GIS平臺中,主要通過以下兩種方式實現(xiàn):1)通過GIS軟件平臺自身帶有的基本的符號體系,其包含一些常用的地圖符號,同時用戶也可以在此基礎(chǔ)上創(chuàng)建自定義的符號,這需要使用軟件提供的符號制圖模板,利用符號庫中符號創(chuàng)建新的符號,并保存到自定義的個人符號庫中.2)對于一些復(fù)雜的符號,僅僅使用GIS平臺提供的簡單圖元已無法繪制出來,此時需要使用第三方制圖軟件,通過手工的方式進行制作復(fù)雜符號.
目前各大GIS平臺都內(nèi)置符號編輯模塊對符號進行制作,并且符號庫的管理方式都是采用文件的形式.但是由于各個軟件之間的符號庫文件格式存在很大的差異,并且沒有統(tǒng)一的標準,從而造成很難進行有效的符號共享,因此GIS研究人員以及GIS應(yīng)用人員提出了幾種地學(xué)符號共享方式,如雙層地圖符號庫模型[3]、XML符號庫[4]、基于組件的服務(wù)器端符號庫[5]、TrueType字庫和建立符號對應(yīng)表.雖然這些成果對推動GIS地學(xué)符號的標準化和規(guī)范化具有積極的作用,也或多或少的解決了GIS領(lǐng)域的地學(xué)符號共享的難題,但這些方式都有不足,如使用圖片存儲符號、手工繪制符號等,會造成符號渲染失真以及耗費大量的人力去編輯處理,其并沒有從根本上消除GIS軟件平臺之間地圖符號系統(tǒng)的差異,都沒有建設(shè)一套標準的符號庫,致使它們對GIS地學(xué)符號的共享程度非常有限[6].
針對上述問題,筆者提出全矢量自動化地學(xué)符號轉(zhuǎn)換以及符號庫采用Oracle數(shù)據(jù)庫管理的形式.通過Oracle數(shù)據(jù)庫管理系統(tǒng)建立統(tǒng)一的、標準的、通用的、跨平臺的地學(xué)符號庫,來解決目前GIS軟件平臺間沒有統(tǒng)一標準的地學(xué)符號庫造成地學(xué)符號共享的問題.當符號庫全部建立后,對地圖數(shù)據(jù)可以實現(xiàn)符號化.
為解決當前國土部門中大量的MapGIS平臺下數(shù)據(jù)向ArcGIS平臺過渡的迫切需求,設(shè)計了針對MapGIS符號進行原圖遷移到ArcGIS平臺中.此過程需要全自動的符號化處理方式,保證生成的符號在ArcGIS平臺下顯示和在MapGIS平臺下顯示相同或相近.
Slib符號庫:在MapGIS平臺下該格式是用來存儲地質(zhì)符號以及顏色的系統(tǒng)庫,該地質(zhì)符號系統(tǒng)庫是地質(zhì)符號轉(zhuǎn)換的原始數(shù)據(jù)源.
XML[4]文件:由于 MapGIS SDK沒有提供可以讀取系統(tǒng)庫Slib中符號的數(shù)據(jù)源的API,文章使用XML文件來存儲MapGIS平臺下符號庫中的數(shù)據(jù),繼而解析XML文件,可以做到無屬性丟失,從而提高的開發(fā)效率.
TrueType[8-9]字 體 (TrueType F ont,簡 稱TTF):常用字庫的標準,其特點是描邊算法,可以很方便地把任一符號輪廓通過描邊算法轉(zhuǎn)換成曲線,再對曲線內(nèi)進行填充,以達到各種顏色和效果,由于TrueType字體本身的優(yōu)勢,其已成為很多制圖軟件用來制作地學(xué)符號的字體.TrueType字體生成一一對應(yīng)的Style文件中符號具有不失真、繪制速度快、縮放無延時等優(yōu)點,同時還可以實現(xiàn)不同GIS平臺間使用,以達到符號數(shù)據(jù)共享的目的.
Style符號庫:在ArcGIS軟件中,將用于存儲符號的文件稱之為符號庫,其Style文件是在樣式管理器中進行管理的,進行符號庫的添加、刪除等工作.每個Style文件都包含22個表結(jié)構(gòu)[10],每一張表對應(yīng)著一類符號.其中的每個表結(jié)構(gòu)都相同,每個表都是由4個字段ID、Name、Category、Object4組成.
符號數(shù)據(jù)共享是數(shù)據(jù)共享的一個基本體現(xiàn),然而在各個GIS平臺和應(yīng)用系統(tǒng)之間,空間數(shù)據(jù)的圖示化表達信息,特別是地圖符號信息卻無法共享,促使用戶投入大量的重復(fù)工作,從而造成人力和物力的浪費.因此,符號庫轉(zhuǎn)換是尤為迫切的需要.符號庫轉(zhuǎn)換是將MapGIS的符號庫轉(zhuǎn)換到ArcGIS平臺下Style文件中,符號庫轉(zhuǎn)換模塊主要將原始MapGIS下符號系統(tǒng)庫Slib文件通過MapGIS K9軟件轉(zhuǎn)換為XML文件,再使用筆者開發(fā)的符號庫轉(zhuǎn)換系統(tǒng)Slib2Style將其轉(zhuǎn)換成TTF,進而保存為其源數(shù)據(jù)對應(yīng)的渲染樣式Style文件.
由于MapGIS平臺下符號庫將通過XML文件來存儲,故需要解析XML文件格式來讀取MapGIS下符號的數(shù)據(jù).下面以廣西壯族自治區(qū)容縣水文出圖符號庫(Jingweidu_20.xml)中子圖號為44的點符號說明XML文件的存儲格式,子圖44號的導(dǎo)出XML文件格式如下:
<SymbolLib></SymbolLib>(以下均以開標記表示標記對,例如,<SymbolLib>表示<Symbol-Lib></SymbolLib>標記對)表示標記對為頂層標記,其包含<SymbolLibHead>、<Symbol>標記對;其中<SymbolLibHead>記錄了導(dǎo)出的子圖庫信息,導(dǎo)出XML文件中<Symbol>標記對數(shù)量取決于導(dǎo)出子圖的個數(shù);<Symbol>標記記錄了子圖庫中某一子圖信息,其包含一個<SymbolHead>標記對及若干個<SymbolItem>標記對;<SymbolItem>標簽對則記錄了屬于某一個<Symbol>的圖元信息.每個符號可包含多個圖元,圖元包含點、線、區(qū)等,因此在一個<Symbol>中可包含多個<SymbolItem>,包含的數(shù)量可由<SymbolHead>當中的<Item-Num>給出;<SymbolItem>結(jié)構(gòu)如下所示.
通過以上XML文件格式解析,獲取到符號庫中符號數(shù)據(jù)作為ArcGIS平臺下符號化符號的數(shù)據(jù)源.
經(jīng)過對廣西壯族自治區(qū)地礦局現(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平臺下的繪制.表1為接口和類的原型和說明.
ArcGIS平臺的Style文件主要是通過實現(xiàn)表1中StyleGen接口實現(xiàn)的,StyleGen接口中主要是實現(xiàn)符號的繪制,分別使用CharacterMarkerSymbol、MarkerLineSymbol、MarkerFillSymbol、MultiLayer-FillSymbol等接口來實現(xiàn)ISymbol接口,從而實現(xiàn)Style文件中符號的符號化.
ArcGIS平臺下實現(xiàn)MapGIS的點符號就是實現(xiàn)StyleGen接口中GeneratePoints()方法,這個過程中將會通過CharacterMarkerSymbol接口實現(xiàn)符號的繪制.通過SymbolLib類來解析Slib系統(tǒng)庫對應(yīng)的XML文件,根據(jù)其中CMKY顏色號的值來判斷該符號的顏色.此過程將解析后的XML數(shù)據(jù)存放到點、線、面分別對應(yīng)的List列表中(如PointSymbols),再通過 TTFGen類中的SaveToTTFFile()方法,將XML解析后的數(shù)據(jù)寫入TTF字庫文件.通過解析ColorLibParser類中的顏色值來渲染符號的顏色,通過StyleGen類分別用CharacterMarkerSymbol接口來實現(xiàn)符號樣式的渲染,并調(diào)用StyleGalleryClass接口將它們寫入Style文件中的“Marker Symbols”列表中.線符號和面符號的繪制類似于點符號過程.
表1 轉(zhuǎn)換模塊中接口和類的原型及說明Tab.1 The prototype and description of the interface and class in the conversion module
符號庫轉(zhuǎn)換是將 MapGIS的點、線、面符號轉(zhuǎn)換到ArcGIS平臺下,圖1是 MapGIS符號轉(zhuǎn)換到ArcGIS平臺下的符號轉(zhuǎn)換系統(tǒng)主界面.首先,選擇將Slib符號庫轉(zhuǎn)換成對應(yīng)的XML格式文件,其次提取其對應(yīng)的渲染顏色,再次解析并生成TTF,將生成的TTF文件注冊到C:\Windows\Fonts目錄下,最后生成Slib符號庫對應(yīng)的Style符號庫,使用該符號庫進行地圖渲染,從而達到符號渲染效果.
圖1 MapGIS到ArcGIS符號庫轉(zhuǎn)換系統(tǒng)主界面Fig.1ArcGIS to MapGIS symbol library conversion system master interface
圖2為原MapGIS容縣水文出圖系統(tǒng)中的點符號(44)和其轉(zhuǎn)換后在ArcGIS平臺下的顯示效果圖(P-0044).圖3為原 MapGIS容縣水文出圖系統(tǒng)中的點符號(41-70)其轉(zhuǎn)換對應(yīng)Jingweidu_20.Style文件中的局部點符號(P-0041—P-0070)效果圖.
圖2 (a)MapGIS平臺下44號子圖Fig.2(a)MapGIS platform No.44figure
圖2 (b)圖2(a)對應(yīng)的轉(zhuǎn)換后的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)對應(yīng)的轉(zhuǎn)換后的 ArcGIS平臺下局部子圖(P-0041—P-0070號)Fig.3(b) Fig.3(a)corresponding to the conversion of the ArcGIS platform Marker Symbol
在傳統(tǒng)的GIS軟件中,符號都是以文件的形式進行管理的,例如MapGIS中的SLib文件以及Arc-GIS中Style文件等,進行地圖文件共享必須將Slib文件或Style文件一起進行遷移才能保證地圖中的符號和數(shù)據(jù)顯示不變.符號庫系統(tǒng)在結(jié)構(gòu)設(shè)計上仍然存在一定的問題,例如,符號庫系統(tǒng)通常綁定于GIS平臺,受平臺的約束造成符號數(shù)據(jù)不能共享;符號庫中沒有添加、刪除、更新等操作;缺少標準,給共享符號帶來困難.
針對上述問題,筆者提出基于Oracle數(shù)據(jù)庫建設(shè)并管理轉(zhuǎn)換后符號.符號庫數(shù)據(jù)庫管理系統(tǒng)具有的特點:基礎(chǔ)庫建設(shè),基于國家標準,分別實現(xiàn)不同比例的地學(xué)符號表示和存儲;實現(xiàn)將原有的MapGIS的符號轉(zhuǎn)換到Oracle數(shù)據(jù)庫中并去重;數(shù)據(jù)庫中預(yù)置標準常見的地質(zhì)符號;實現(xiàn)地學(xué)符號的添加、刪除、更新等功能,使其按需管理符號;建立統(tǒng)一的地學(xué)符號查詢,能按不同屬性快速檢索,并導(dǎo)出檢索結(jié)果.
筆者通過Oracle數(shù)據(jù)庫管理系統(tǒng)建立標準的地學(xué)符號庫,來解決目前GIS軟件平臺間由于沒有標準而造成地學(xué)符號不能共享的問題.當符號庫全部建立后,對地形圖的數(shù)據(jù)就實現(xiàn)符號化,從而實現(xiàn)符號庫的跨平臺應(yīng)用以及符號數(shù)據(jù)共享.地學(xué)符號數(shù)據(jù)庫管理系統(tǒng)模型圖如圖4所示:
圖4 地學(xué)符號數(shù)據(jù)庫管理系統(tǒng)圖Fig.4 Geological Symbol Database Management System
1)深入研究Slib符號庫和Style文件的存儲機制和結(jié)構(gòu),采用TrueType字體進行符號圖元的繪制,實現(xiàn)了地學(xué)符號的全矢量化,提高了符號的質(zhì)量以及符號繪制速度,解決了符號在比例尺縮放時失真與變形的問題,改善了地學(xué)圖形的符號化效果.
2)通過地學(xué)符號數(shù)據(jù)庫建設(shè),實現(xiàn)原有MapGIS下符號庫到ArcGIS平臺的準確轉(zhuǎn)換,保證符號的真實性.故地學(xué)符號庫轉(zhuǎn)換系統(tǒng)將MapGIS平臺下的Slib系統(tǒng)庫轉(zhuǎn)換成ArcGIS平臺下支持的Style文件,從而很好的解決了國土部門目前急需解決的多年來積累龐大的一圖一庫轉(zhuǎn)換問題.
3)針對符號庫不能共享的現(xiàn)狀,根據(jù)我國國標以及行標中制圖符號的標準,提出了基于Oracle數(shù)據(jù)庫設(shè)計地學(xué)符號數(shù)據(jù)庫管理系統(tǒng),其實質(zhì)就是設(shè)計一個基于國標的通用的符號庫,并且保證了符號的全矢量化,從而使渲染效果更好.解決了符號庫依賴GIS環(huán)境的問題,可以用于多種已經(jīng)封裝好的GIS接口的GIS平臺,實現(xiàn)一個跨平臺的通過標準符號數(shù)據(jù)庫管理系統(tǒng),從而達到各系統(tǒng)平臺、各級工作人員之間符號通用的需求,以達到真正意義上的跨平臺符號共享.
[1]李兵,葉海建,方金云.圖元法符號庫的設(shè)計思想研究[J].計算機工程與應(yīng)用,2005,17:36-38,45.
[2]馬建芳.全矢量地質(zhì)符號庫的設(shè)計與實現(xiàn)[D].北京:中國地質(zhì)大學(xué),2013.
[3]王偉,張波,殷贛華.基于COM技術(shù)的地圖符號庫結(jié)構(gòu)設(shè)計與實現(xiàn)[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2002(3):296-300.
[4]覃如府,許惠平,王家林.基于XML的通用地圖符號庫設(shè)計與實現(xiàn)[J].同濟大學(xué)學(xué)報:自然科學(xué)版,2008(8):1138-1142.
[5]盧毅敏,池天河,陳崇成.基于組件的服務(wù)器端共享地圖符號庫的研制[J].地球信息科學(xué),2004(4):121-126.
[6]陶陶,閭國年,張書亮.GIS地圖符號共享研究進展與展望[J].中國圖象圖形學(xué)報,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符號庫的存取研究及符號選擇器實現(xiàn)[J].測繪通報,2011(1-1):25-27,31.