王本林,陳泰生,陳夢(mèng)琳
地圖符號(hào)是地圖的圖解語(yǔ)言,它將地理對(duì)象進(jìn)行抽象表達(dá),反映地理實(shí)體的空間分布關(guān)系。隨著地理信息科學(xué)技術(shù)的飛速發(fā)展,地理信息平臺(tái)呈現(xiàn)了多樣化發(fā)展態(tài)勢(shì),隨之出現(xiàn)了地理數(shù)據(jù)與地圖符號(hào)的同源異構(gòu)現(xiàn)象,嚴(yán)重阻礙了地理信息科學(xué)的發(fā)展,在這種形勢(shì)下,地圖信息共享思想因此應(yīng)運(yùn)而生,地圖符號(hào)共享正式被廣大GIS學(xué)者所重視,針對(duì)這種異構(gòu)平臺(tái)下的地圖符號(hào),主要集中在以下三個(gè)方面:一是平臺(tái)間的地圖符號(hào)共享研究,陳泰生等利用分析了CAD點(diǎn)狀符號(hào)與TrueType字體符號(hào)模型,實(shí)現(xiàn)了CAD點(diǎn)狀符號(hào)與TrueType字體的雙向共享[1],駱琪基于ArcGIS和CAD平臺(tái),實(shí)現(xiàn)了ArcGIS到CAD平臺(tái)間的地圖符號(hào)共享,并設(shè)計(jì)了地圖符號(hào)渲染模式[2];二是通用的地圖符號(hào)模型研究,李青元建立了GIS 符號(hào)庫(kù)數(shù)據(jù)模型并給出了GIS 符號(hào)庫(kù)數(shù)據(jù)交換格式[3],陳泰生等針對(duì)不同GIS平臺(tái),提出了基于PB符號(hào)模型共享方案,實(shí)現(xiàn)了從Super Map到ArcGIS平臺(tái)的點(diǎn)狀地圖符號(hào)共享[4];三是地圖符號(hào)共享渲染與表達(dá),尹章才設(shè)計(jì)了基于XSLT的圖示表達(dá)規(guī)則與地理數(shù)據(jù)庫(kù)驅(qū)動(dòng)的地圖表達(dá)機(jī)制[5],吳小芳探討了符號(hào)智能配置過(guò)程中常用繪制算法并研究了符號(hào)配置中可能出現(xiàn)的沖突問(wèn)題[6]。
綜上所述,GIS行業(yè)內(nèi)的專家、學(xué)者們針對(duì)ArcGIS、Super Map、CAD等平臺(tái)展開了深入的研究和探討,然而針對(duì)MapGIS平臺(tái)的地圖符號(hào)共享研究卻相對(duì)較少,本文以點(diǎn)狀地圖符號(hào)為切入點(diǎn),深入研究MapGIS地圖符號(hào)數(shù)據(jù)結(jié)構(gòu)與符號(hào)模型,豐富了地圖符號(hào)多平臺(tái)共享內(nèi)容,能夠?yàn)橄嚓P(guān)學(xué)者和專家提供技術(shù)依據(jù)。
MapGIS平臺(tái)支持對(duì)地圖符號(hào)的設(shè)計(jì)與存儲(chǔ),一個(gè)完整的MapGIS地圖符號(hào)庫(kù)由顏色庫(kù)、字體庫(kù)和符號(hào)庫(kù)構(gòu)成,地圖符號(hào)以文件組織形式存儲(chǔ)于安裝目錄下../MapGIS K9/Slib文件夾中,MapGIS地圖符號(hào)庫(kù)可以通過(guò)符號(hào)管理器打開,對(duì)符號(hào)庫(kù)中的地圖符號(hào)進(jìn)行編輯更新,如圖1所示。對(duì)于MapGIS地圖符號(hào)庫(kù)的訪問(wèn),可以通過(guò)MAPOBJECT組建進(jìn)行訪問(wèn),亦可以通過(guò)將地圖符號(hào)庫(kù)導(dǎo)出以XML格式文件進(jìn)行訪問(wèn)。
圖1 MapGIS地圖符號(hào)庫(kù)管理界面
MapGIS點(diǎn)狀符號(hào)可分為柵格符號(hào)、矢量符號(hào)和字體符號(hào)(注記)三類;柵格符號(hào)即為圖片符號(hào),支持BMP格式的圖片;字體符號(hào)一般作為注記使用,標(biāo)示字體的類型、字符內(nèi)容以及顏色、筆畫等基本信息;MapGIS矢量地圖符號(hào)則由基本圖元組合而成。在實(shí)際應(yīng)用中,以矢量符號(hào)應(yīng)用最為廣泛,也最為復(fù)雜,不同圖元的隨機(jī)組合,可構(gòu)造成為不同符號(hào)。因此,本文將從MapGIS點(diǎn)狀矢量地圖符號(hào)的構(gòu)圖模式為切入點(diǎn), 研究其基本構(gòu)圖模式。
MapGIS矢量地圖符號(hào)的基本單元是基本圖元,包括了折線、光滑曲線、圓心半徑弧、三點(diǎn)弧、矩形、平行四邊形、圓心半徑圓、三點(diǎn)內(nèi)切圓、三點(diǎn)外接圓、橢圓、正交線、正交矩形、用點(diǎn)連線等,如圖2所示。
圖2 MapGIS矢量地圖符號(hào)基本圖元
一個(gè)MapGIS點(diǎn)狀地圖符號(hào)包含了一個(gè)或多個(gè)符號(hào)圖元,圖元在1mm*1mm的正方形范圍內(nèi),通過(guò)疊加、組合的方式構(gòu)成,每一個(gè)圖元可通過(guò)一個(gè)或多個(gè)基本圖元組合而成,這些圖元的空間位置及其關(guān)系構(gòu)成了點(diǎn)狀符號(hào)的基本幾何信息;點(diǎn)狀地圖符號(hào)通過(guò)圖元編號(hào)、圖元類型、符號(hào)名稱、定位點(diǎn)描述其元數(shù)據(jù)信息;顏色庫(kù)描述了圖元輪廓和填充顏色。
1)圖元幾何模型
圖元幾何信息通過(guò)圖元基本點(diǎn)按照構(gòu)圖方式進(jìn)行組織。光滑曲線由起點(diǎn)、若干控制點(diǎn)及終點(diǎn)構(gòu)成;折線由若干個(gè)短點(diǎn)構(gòu)成;正交線由若干定點(diǎn)構(gòu)成,與折線不同的是,正交線的相鄰線段夾角總是90度;橢圓是由圓心、長(zhǎng)半徑、短半徑規(guī)定其幾何形狀、圓心半徑弧是由圓心、半徑、圓弧起點(diǎn)、終點(diǎn)以及其夾角構(gòu)成的弧段構(gòu)成;給定的不在一條直線上的三個(gè)點(diǎn),由這三個(gè)點(diǎn)構(gòu)成三角形,其內(nèi)切圓即為三點(diǎn)外切圓;三點(diǎn)外接圓與三點(diǎn)內(nèi)切元幾何信息類似,是任意給定三角形定點(diǎn)的外切圓;三點(diǎn)弧是給定空間內(nèi)任意三個(gè)共圓的點(diǎn)所在的圓弧弧段;圓心半徑圓通過(guò)圓心和半徑來(lái)確定,矩形則是由兩個(gè)對(duì)角的點(diǎn)確定,平行四邊形根據(jù)一條邊上的2個(gè)頂點(diǎn)及與該邊相鄰邊的另一定點(diǎn)構(gòu)成;正交矩形則是頂點(diǎn)為直角的矩形。
表1基本圖元幾何模型
MapGIS中的這些基本圖元的幾何信息均由基本點(diǎn)及各個(gè)圖元構(gòu)圖規(guī)則確定,在進(jìn)行點(diǎn)狀地圖符號(hào)構(gòu)圖時(shí),需要針對(duì)每一個(gè)圖元設(shè)定一個(gè)中心點(diǎn),以保證圖元在組合時(shí)相互關(guān)聯(lián)關(guān)系。
2)顏色庫(kù)
顏色庫(kù)主要針對(duì)線圖元的輪廓顏色、面圖元(區(qū)域)的顏色填充而言,MapGIS中的顏色庫(kù)主要采用CMYK和RGB兩種顏色體系,在符號(hào)顏色色標(biāo)編輯器中,可以對(duì)CMYK按照比重自定義顏色,或者根據(jù)RGB三原色的值定義顏色。在MapGIS顏色庫(kù)中,提供了1600種顏色,其中黑(K100,C0,M0,Y0和K0,C100,M100,Y100)、白、品紅、黃、青、紅、綠、藍(lán)這9種顏色不支持編輯外,其余均可以根據(jù)實(shí)際需求進(jìn)行自定義顏色,對(duì)這1600種顏色枚舉采取編號(hào)的方式存儲(chǔ)于顏色庫(kù)中。在設(shè)置圖元基本屬性時(shí),直接根據(jù)自定義的顏色所對(duì)應(yīng)的編號(hào),選擇對(duì)應(yīng)的顏色。
MapGIS點(diǎn)狀符號(hào)由符號(hào)元數(shù)據(jù)、圖元項(xiàng)組成,符號(hào)元數(shù)據(jù)定義了該點(diǎn)狀地圖符號(hào)的類型、裁剪標(biāo)志、符號(hào)編號(hào)、符號(hào)長(zhǎng)度、圖元項(xiàng)個(gè)數(shù)、符號(hào)中心定位點(diǎn)、符號(hào)名稱等信息;圖元項(xiàng)則是由若干圖元構(gòu)成的圖元數(shù)組,每一個(gè)圖元又由圖元元數(shù)據(jù)和幾何信息構(gòu)成,圖元元數(shù)據(jù)主要包括圖元類型、輪廓筆、外部顏色、填充顏色,圖元類型是12類基本圖元的編碼,輪廓筆則定義了當(dāng)前圖元的輪廓樣式,包括簡(jiǎn)單線、虛實(shí)線、點(diǎn)劃線等,內(nèi)部顏色則針對(duì)于封閉的面狀圖元而言,描述其內(nèi)部的填充顏色;幾何信息由圖元基本點(diǎn)的X,Y值和圖元點(diǎn)坐標(biāo)的序列,如圖2所示:
圖3 MapGIS點(diǎn)狀符號(hào)模型結(jié)構(gòu)
OMS是在PB+地圖符號(hào)模型基礎(chǔ)上加以改進(jìn)的一種地圖符號(hào)模型,它是依據(jù)圖形領(lǐng)域的PostScript成像模型原理并結(jié)合地圖分層思想構(gòu)建而成,OMS點(diǎn)狀地圖符號(hào)由基本符號(hào)圖層構(gòu)成,主要包括了字體點(diǎn)圖層、紋理點(diǎn)圖層(柵格)和路徑點(diǎn)圖層三種類型,字體點(diǎn)圖層主要針對(duì)于字體類點(diǎn)狀符號(hào)進(jìn)行存儲(chǔ),紋理點(diǎn)圖層針對(duì)圖片點(diǎn)符號(hào)進(jìn)行存儲(chǔ),路徑點(diǎn)圖層則是針對(duì)所有矢量化的點(diǎn)狀符號(hào)構(gòu)建,本研究針對(duì)MapGIS的圖元類矢量符號(hào),著重研究OMS點(diǎn)狀符號(hào)的路徑符號(hào)圖層的基本結(jié)構(gòu)
OMS點(diǎn)狀地圖符號(hào)的點(diǎn)字體符號(hào)是基于TrueType字體法,將字體作為一個(gè)點(diǎn)狀符號(hào),通過(guò)字體名稱、編碼、顏色、樣式等描述該種符號(hào)的基本樣式,該種方式可以較好地支持MapGIS的字體符號(hào);針對(duì)柵格地圖符號(hào),OMS采用紋理符號(hào)圖層,存儲(chǔ)圖片的子圖基本信息,如圖4所示:
圖4 OMS點(diǎn)狀符號(hào)模型
路徑符號(hào)圖層用路徑、筆畫和填充描述點(diǎn)狀矢量地圖符號(hào),路徑表達(dá)了點(diǎn)狀地圖符號(hào)的幾何信息,包括了直線、貝塞爾曲線、圓、橢圓、矩形、圓角矩形、B樣條線、星形等基本幾何單元;筆畫表達(dá)了點(diǎn)狀符號(hào)路徑的輪廓樣式,包括了簡(jiǎn)單筆畫(純色)、紋理筆畫、漸變色筆畫三類;填充描述點(diǎn)狀符號(hào)封閉路徑的填充樣式,包括了簡(jiǎn)單填充(純色填充)、陰影填充、紋理填充、漸變填充、點(diǎn)填充和線填充。
1)兩種地圖符號(hào)模型對(duì)比
從地圖符號(hào)結(jié)構(gòu)上看,MapGIS點(diǎn)狀地圖符號(hào)通過(guò)圖元方式組織,圖元由基本子圖元疊加構(gòu)成,是典型的圖元類地圖符號(hào);OMS點(diǎn)狀地圖符號(hào)采用了面向符號(hào)圖層的組織模式,兼容了TrueType字體法、PB路徑法的優(yōu)點(diǎn),具備了較好的兼容性。
從地圖符號(hào)幾何模型上看,MapGIS點(diǎn)狀地圖符號(hào)的基本圖元主要包括折線、曲線、空心圓、實(shí)心圓、橢圓、矩形、多邊形;OMS點(diǎn)狀地圖符號(hào)中的路徑圖層即包括了直線路徑、貝塞爾曲線路徑、B樣條曲線路徑、三角形、圓、橢圓、圓弧、矩形、圓角矩形、扇形、星型等路徑,囊括了MapGIS點(diǎn)狀地圖符號(hào)的基本圖元。
從地圖符號(hào)屬性模型上看,MapGIS點(diǎn)狀符號(hào)對(duì)圖元的輪廓和填充主要通過(guò)子圖元編號(hào)和顏色庫(kù)描述,所有子圖在圖符號(hào)中唯一標(biāo)識(shí),圖元填充色由符號(hào)庫(kù)中符號(hào)編碼描述;OMS點(diǎn)狀地圖符號(hào)的路徑圖層將屬性信息描述為筆畫和填充,用于修飾符號(hào)路徑的樣式。
2)MapGIS點(diǎn)狀地圖符號(hào)映射
通過(guò)MapGIS與OMS符號(hào)結(jié)構(gòu)對(duì)比,MapGIS點(diǎn)狀符號(hào)的映射實(shí)質(zhì)上即是圖元類地圖符號(hào)向基于路徑的PB地圖符號(hào)的映射,可幾何模型和符號(hào)屬性這兩個(gè)方面進(jìn)行映射。MapGIS點(diǎn)狀符號(hào)圖元按照其數(shù)據(jù)組織可以劃分為有折線、曲線、圓、圓弧、矩形五類圖元,圖元屬性包括了筆畫和顏色。
折線:折線是MapGIS最常用的基本圖元,由多段首尾相連的線段構(gòu)成,利用起點(diǎn)和終點(diǎn)描述線段幾何信息。在OMS符號(hào)中,存在與之對(duì)應(yīng)的直線路徑,可以將折線映射為MoveTo和LineTo指令。
曲線:MapGIS曲線不是傳統(tǒng)意義上的B樣條曲線或貝塞爾曲線,在圖形繪制是呈現(xiàn)曲線樣式,但實(shí)際數(shù)據(jù)模型中則是以連續(xù)的線段構(gòu)成,因此,可以映射為OMS中的直線路徑,將每一個(gè)線段存儲(chǔ)到一個(gè)直線路徑中。
空心圓和實(shí)心圓:兩者均屬于圓,由圓心坐標(biāo)點(diǎn)和半徑確定,空心圓無(wú)填充,實(shí)心圓為純色填充,可映射為OMS符號(hào)中的圓路徑,通過(guò)路徑圖層的填充樣式描述實(shí)心圓。
圓弧:圓弧由圓心,半徑,圓周上起始點(diǎn)確定,或起點(diǎn)及掃過(guò)的角度來(lái)確定,因此可以直接映射為OMS符號(hào)中的圓弧。其映射關(guān)系如圖5所示:
圖5 MapGIS點(diǎn)狀符號(hào)模型結(jié)構(gòu)映射圖
實(shí)驗(yàn)以MapGIS自帶符號(hào)庫(kù)和地質(zhì)符號(hào)庫(kù)為符號(hào)實(shí)驗(yàn)數(shù)據(jù),在C++設(shè)計(jì)一套面向CAD點(diǎn)狀符號(hào)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),用于存儲(chǔ)圖元基本信息,基于地圖符號(hào)共享平臺(tái)實(shí)現(xiàn)了從CAD點(diǎn)狀符號(hào)模型向OMS點(diǎn)狀地圖符號(hào)共享。
針對(duì)MapGIS點(diǎn)狀符號(hào)結(jié)構(gòu),抽取了MapGIS自帶符號(hào)庫(kù)中全部矢量點(diǎn)符號(hào),轉(zhuǎn)換為XML格式文件,該文件即為MapGIS點(diǎn)狀地圖符號(hào)庫(kù),符號(hào)庫(kù)根節(jié)點(diǎn)為SymbolLib節(jié)點(diǎn),根節(jié)點(diǎn)下包含了SymbolLibHead和Symbol兩類子節(jié)點(diǎn),其中SymbolLibHead描述了符號(hào)庫(kù)的名稱、符號(hào)數(shù)、標(biāo)識(shí)碼等基本屬性信息,Symbol為具體的點(diǎn)狀地圖符號(hào)節(jié)點(diǎn)。
Symbol節(jié)點(diǎn)即為本文研究的MapGIS點(diǎn)狀地圖符號(hào),一個(gè)MapGIS點(diǎn)狀符號(hào)的Sybol節(jié)點(diǎn)通常由一個(gè)SymbolHead節(jié)點(diǎn)和若干個(gè)SymbolItem節(jié)點(diǎn)構(gòu)成。SybolHead節(jié)點(diǎn)為MapGIS點(diǎn)狀地圖符號(hào)頭信息,存儲(chǔ)了符號(hào)名稱、符號(hào)中心點(diǎn)、包含圖元數(shù)等屬性信息;SymbolItem節(jié)點(diǎn)為圖元節(jié)點(diǎn),用于存儲(chǔ)MapGIS點(diǎn)狀地圖符號(hào)圖元信息,包括了圖元類別、圖元輪廓、圖元數(shù)目、填充以及圖元幾何信息,其存儲(chǔ)結(jié)構(gòu)如圖6所示:
圖6 MapGIS點(diǎn)狀地圖符號(hào)存儲(chǔ)結(jié)構(gòu)
在XML結(jié)構(gòu)基礎(chǔ)上設(shè)計(jì)了Symbol類、SymbolHead類、SymbolItem類、Geometry類等基本點(diǎn)狀地圖符號(hào)信息存儲(chǔ)結(jié)構(gòu)類,在進(jìn)行符號(hào)信息讀取與解析時(shí),由下而上地構(gòu)建地圖符號(hào)存儲(chǔ)類,最終完成對(duì)MapGIS點(diǎn)狀地圖符號(hào)的存儲(chǔ)。
MapGIS向OMS地圖符號(hào)共享實(shí)驗(yàn)基于MapGIS地圖符號(hào)存儲(chǔ)結(jié)構(gòu),采用C++語(yǔ)言構(gòu)建地圖符號(hào)屬性與幾何信息的映射模型,構(gòu)建了SymbolShare工廠,模型輸入為XML存儲(chǔ)結(jié)構(gòu),輸出為L(zhǎng)S格式的OMS地圖符號(hào)文件,設(shè)計(jì)了MapGIS向OMS點(diǎn)狀地圖符號(hào)共享工具,如圖7所示:
圖7 MapGIS地圖符號(hào)共享工具
以MapGIS點(diǎn)狀地圖符號(hào)的默認(rèn)點(diǎn)符號(hào)庫(kù)和為區(qū)域地質(zhì)圖圖例點(diǎn)狀地圖符號(hào)庫(kù)為實(shí)驗(yàn)數(shù)據(jù),其中MapGIS默認(rèn)點(diǎn)符號(hào)庫(kù)共計(jì)513個(gè)矢量點(diǎn)狀地圖符號(hào),區(qū)域地質(zhì)圖圖例點(diǎn)狀地圖符號(hào)1152個(gè)矢量地圖符號(hào),如圖8和圖10所示。針對(duì)上述兩類MapGIS點(diǎn)狀地圖符號(hào)數(shù)據(jù),采用符號(hào)圖元映射方法映射至OMS地圖符號(hào)結(jié)構(gòu)中,輸出結(jié)果如圖9和圖11:
圖8 MapGIS默認(rèn)地圖符號(hào)數(shù)據(jù)
圖9 默認(rèn)符號(hào)共享結(jié)果
圖10 區(qū)域地質(zhì)圖符號(hào)數(shù)據(jù)
圖11 區(qū)域地質(zhì)圖符號(hào)共享結(jié)果
為進(jìn)一步驗(yàn)證MapGIS點(diǎn)狀地圖符號(hào)向OMS地圖符號(hào)模型映射的可行性與實(shí)用性,設(shè)計(jì)了OMS地圖符號(hào)渲染實(shí)驗(yàn),檢驗(yàn)實(shí)驗(yàn)共享結(jié)果正確性。采用ArcGIS桌面軟件作為渲染平臺(tái),選取ArcObejcets嵌入工具,將轉(zhuǎn)換后的OMS點(diǎn)狀地圖符號(hào)加載到ArcMap中,對(duì)離散點(diǎn)進(jìn)行渲染,選用轉(zhuǎn)換后的礦井點(diǎn)狀符號(hào)和某種有色金屬點(diǎn)狀地圖符號(hào)為驗(yàn)證,在ArcGIS中渲染結(jié)果如圖12所示,上述兩類地圖符號(hào)能夠在ArcMap軟件中完成點(diǎn)符號(hào)渲染。實(shí)驗(yàn)結(jié)果表明MapGIS點(diǎn)狀地圖符號(hào)能夠通過(guò)該種共享方式正確繪制到ArcGIS平臺(tái)中。
圖12 共享后的點(diǎn)狀地圖符號(hào)在ArcGIS平臺(tái)中渲染效果
論文以MapGIS平臺(tái)的點(diǎn)狀地圖符號(hào)為研究對(duì)象,分析了MapGIS點(diǎn)狀地圖符號(hào)的符號(hào)庫(kù)結(jié)構(gòu)、構(gòu)圖模式以及符號(hào)模型;引入了OMS通用地圖符號(hào),研究了MapGIS和OMS兩種不同結(jié)構(gòu)的地圖符號(hào)結(jié)構(gòu),針對(duì)MapGIS地圖圖元,提出了圖元到路徑的映射模型;設(shè)計(jì)了MapGIS到OMS地圖符號(hào)轉(zhuǎn)換實(shí)驗(yàn),驗(yàn)證了該種模式方式的正確性,能夠解決MapGIS這種圖元類地圖符號(hào)到OMS地圖符號(hào)的共享。
[參 考 文 獻(xiàn)]
[1] 陳泰生,閭國(guó)年,吳明光,等.CAD點(diǎn)狀符號(hào)與TrueType符號(hào)模型對(duì)比、轉(zhuǎn)換與分析[J].中國(guó)圖像圖形學(xué)報(bào),2011,16(11):2067-2073.
[2] 駱琪.CAD與GIS符號(hào)共享方法研究——以ArcGIS和AutoCAD為例[D].南京:南京師范大學(xué),2012.
[3] 覃如府,許惠平,王家林,等.基于XML的通用地圖符號(hào)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)[J].同濟(jì)大學(xué)學(xué)報(bào)(自然科學(xué)版),2008, 36(08):1138-1142.
[4] 陳泰生,陳夢(mèng)琳,王本林,等.基于PB符號(hào)的圖元類點(diǎn)狀符號(hào)共享研究[J].地理與地理信息科學(xué),2014,30(5):7-11.
[5] 尹章才,李霖,朱海紅,等.基于XSLT的圖示表達(dá)規(guī)則的設(shè)計(jì)與實(shí)現(xiàn)[J].地球信息科學(xué),2005,7(04):135-139.
[6] 吳小芳,杜清運(yùn),徐智勇,等.復(fù)雜線狀符號(hào)的設(shè)計(jì)及優(yōu)化算法研究[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2006(7):632-635.