周 玉 科,周 成 虎,馬 廷,高 錫 章,范 俊 甫
數(shù)字地圖要素樣式結(jié)構(gòu)化存儲表達(dá)研究與實現(xiàn)
周 玉 科,周 成 虎,馬 廷,高 錫 章,范 俊 甫
(中國科學(xué)院地理科學(xué)與資源研究所,資源與環(huán)境信息系統(tǒng)國家重點實驗室,北京 100101)
研究數(shù)字地圖要素樣式結(jié)構(gòu)化存儲問題,分析目前國內(nèi)外最新研究進(jìn)展和各種實現(xiàn)方式的優(yōu)缺點。從地圖要素樣式共享的目的入手,探索遵循國際標(biāo)準(zhǔn)的樣式實現(xiàn)方案;設(shè)計并使用XML的結(jié)構(gòu)化可擴(kuò)展特性,借助元編程的最新理念和Java編程語言實現(xiàn)兼容SLD標(biāo)準(zhǔn)的地圖樣式表達(dá)和存儲機(jī)制。實驗中定義了點、線、填充、字體等各種地圖符號的XML表達(dá)形式,并與SLD主題樣式相對應(yīng),與其他地圖樣式的轉(zhuǎn)換操作表明,該模式可以實現(xiàn)地圖要素樣式的自定義設(shè)計和共享傳播。
地圖可視化;要素樣式;XML;OGC SLD
如何用標(biāo)準(zhǔn)化的“語言”精確地描述人類空間標(biāo)記認(rèn)知過程、實現(xiàn)人機(jī)交互,是目前數(shù)字制圖領(lǐng)域的重要方向。桌面GIS和WebGIS原理都是受程序控制通過電子設(shè)備進(jìn)行顯示,因此可以在數(shù)據(jù)源和顯示層加入地圖要素樣式控制器來標(biāo)準(zhǔn)化的控制其樣式。OGC SLD(Styled Layer Descriptor)[1]為圖層的自定義式樣提供了XML文檔模式,用來規(guī)范地理要素符號信息的傳輸、存儲和表達(dá),使標(biāo)準(zhǔn)化、定量化的地圖要素樣式定制成為可能。地圖樣式標(biāo)準(zhǔn)化描述語言改變了傳統(tǒng)制圖條件下用戶只能被動地使用地圖的方式。本文研究地圖要素樣式結(jié)構(gòu)化描述的實現(xiàn)機(jī)制與已有成果,同時受SLD規(guī)范啟發(fā),使用純XML語言描述地圖要素的顏色主題、線劃樣式、標(biāo)簽(label)風(fēng)格、面狀填充等內(nèi)容,并可與SLD相互轉(zhuǎn)換。借鑒元編程的理念,將XML文檔中的節(jié)點映射為Java中的類與方法,簡單實現(xiàn)地圖符號樣式制作與存儲的編輯平臺,解決異構(gòu)平臺中地圖符號的共享。
數(shù)字地圖樣式的標(biāo)準(zhǔn)化和規(guī)范化是實現(xiàn)數(shù)字地圖樣式共享的前提和保障,只有遵循共同標(biāo)準(zhǔn)才能最終消除GIS地圖符號共享的障礙,以便實現(xiàn)地圖符號的互操作[2]。國內(nèi)外已有許多組織進(jìn)行數(shù)字地圖表達(dá)的標(biāo)準(zhǔn)化研究,并推出了相應(yīng)的標(biāo)準(zhǔn)規(guī)范。
國際上OGC SLD標(biāo)準(zhǔn)的發(fā)布使WMS服務(wù)的地圖可視化效果的擴(kuò)展定制成為可能。不遵循SLD規(guī)范的WMS服務(wù)只能通過服務(wù)器端預(yù)定義的樣式表現(xiàn)地圖,而合理使用SLD樣式描述可以實現(xiàn)分類制圖并且樣式來自客戶端。SLD標(biāo)準(zhǔn)基于XML-schema規(guī)范,schema中定義了地圖符號化的所有可能元素。SLD中重要元素之一是定義了規(guī)則元素(rule-element),可以將數(shù)據(jù)集按照給定的參數(shù)分類[3]。子元素包括點符號和線符號等,用來設(shè)置不同類型的符號,如填充與筆畫。OGC于2007年推出了符號編碼規(guī)范(Symbology Encoding,SE)作為SLD的補(bǔ)充,不久作為一個獨(dú)立規(guī)范進(jìn)行發(fā)布;SE在地圖符號定制方面比SLD有更多的可能性,它只包含SLD中無接口的編碼部分,因此可以應(yīng)用于網(wǎng)絡(luò)服務(wù)以外,如桌面應(yīng)用;SE推出的新功能包括高級線性標(biāo)識、標(biāo)簽和更好的按比例縮放的符號。
國內(nèi)一些標(biāo)準(zhǔn)化研究機(jī)構(gòu)和權(quán)威地圖制圖部門在地圖符號信息分類與編碼、地圖符號庫建立、普通地圖和專題地圖符號的繪制等方面都制定了相關(guān)規(guī)定,有效促進(jìn)了國內(nèi)地圖符號的生產(chǎn)和共享[4]。中國測繪科學(xué)研究院研究并制定了專題地圖信息分類與編碼,中科院地理所長期致力于地理信息共享標(biāo)準(zhǔn)的研究,使得國家基礎(chǔ)地理信息共享有規(guī)范可依。
現(xiàn)實應(yīng)用中,各GIS廠商使用獨(dú)立的地圖符號樣式庫實現(xiàn)標(biāo)準(zhǔn)和方式。地圖樣式的實現(xiàn)基本分為3類:采用高級編程語言利用面向?qū)ο蠹夹g(shù)描述;采用SVG等矢量圖形文件格式描述;使用XML形式的結(jié)構(gòu)化描述地圖樣式符號。如今GIS產(chǎn)品品牌繁多,有些產(chǎn)品使用Truetype字體符號庫對地圖符號進(jìn)行擴(kuò)展,有些產(chǎn)品提供了交互式的地圖符號交換格式和接口[5]。因為True Type遵循統(tǒng)一標(biāo)準(zhǔn),不同平臺之間可以在符號數(shù)據(jù)結(jié)構(gòu)、符號編碼、數(shù)據(jù)存儲方式、接口函數(shù)、操作系統(tǒng)等方面進(jìn)行符號共享。比如ArcGIS自帶豐富的符號庫,而且支持TrueType,這種企業(yè)標(biāo)準(zhǔn)可以實現(xiàn)符號庫的傳播性,但是具體到一個圖層樣式的定制則無法傳遞到其他產(chǎn)品的圖層中。Super Map、MapInfo等也都使用文件方式存儲和管理地圖符號庫資源,使點符號庫、線符號庫和面符號庫分別或一起存儲在符號文件中。Tile Mill是一個在線定制地圖樣式的控制器,實現(xiàn)網(wǎng)絡(luò)地圖樣式的自由定制,使用標(biāo)準(zhǔn)為SLD,因此Tile Mill生成的樣式同樣可應(yīng)用于遵循SLD標(biāo)準(zhǔn)的網(wǎng)絡(luò)或桌面的制圖系統(tǒng)中(http://mapbox.com/tilemill)。
以上的GIS產(chǎn)品實現(xiàn)中并沒有很多產(chǎn)品直接支持SLD標(biāo)準(zhǔn),有的甚至只是在TrueType級別實現(xiàn)共享,實際仍是一種緊耦合的共享方式,很少使用標(biāo)準(zhǔn)化描述語言(XML,XSD)表達(dá)地圖要素樣式。以上GIS產(chǎn)品的地圖樣式共享只是從符號庫上的基本映射統(tǒng)一達(dá)成共享,而沒有真正實現(xiàn)特定地圖要素樣式模板形成一種自然的過渡轉(zhuǎn)換,共享過程需要大量的編程操作。OGC SLD是第一個正式的地圖樣式規(guī)范,其最新版本為1.1,仍處在標(biāo)準(zhǔn)規(guī)范的初級階段。但是SLD仍存在不足[6],尤其是在專題制圖領(lǐng)域。當(dāng)前只能使用預(yù)定義好的符號(如圓形、矩形和十字)制作基本專題地圖:顏色分級地圖和比例符號地圖。SLD符號支持的圖形較少,因此符號的表現(xiàn)比較單一,并且符號的配置只能實現(xiàn)比較簡單的地圖可視化,不適合表達(dá)豐富多彩的地圖圖形信息。但是因為其遵循XML標(biāo)準(zhǔn)擴(kuò)展性較好,基于SLD可以嵌入預(yù)編譯好的外部圖形。
真正意義上的地理空間數(shù)據(jù)共享應(yīng)該包括地圖符號樣式共享的方式、標(biāo)準(zhǔn)等內(nèi)容,實現(xiàn)地圖符號跨GIS平臺共享的最佳方式是所有GIS軟件平臺采用國際統(tǒng)一標(biāo)準(zhǔn)的數(shù)據(jù)格式描述地圖符號[7]。由于SLD標(biāo)準(zhǔn)表達(dá)不夠完善和GIS應(yīng)用者對數(shù)據(jù)共享的關(guān)注多于對地圖樣式共享的關(guān)注,導(dǎo)致地圖要素樣式共享和分發(fā)較困難。但是遵循共同的標(biāo)準(zhǔn)應(yīng)該是地圖要素樣式設(shè)計的主體思想和基本原則。XML(可擴(kuò)展標(biāo)記語言)的可擴(kuò)展性和平臺無關(guān)性使矢量地理信息的網(wǎng)絡(luò)分發(fā)、融合與綜合變得更加容易,對于桌面地圖系統(tǒng)的地圖樣式共享同樣可以使用XML實現(xiàn)。本文提出一種良好兼容SLD國際標(biāo)準(zhǔn)的地圖要素樣式結(jié)構(gòu)化(XML)存儲設(shè)計,使用元編程思想實現(xiàn)地圖要素樣式與編程語言的映射。
XML是一種樸素的結(jié)構(gòu)化數(shù)據(jù)表示形式,在使用其描述地圖要素樣式時,可以很好地表達(dá)從數(shù)據(jù)集到圖層到要素的層次結(jié)構(gòu)[8]。在具體實現(xiàn)中,圖層作為樣式XML的根節(jié)點,然后派生出具體的子節(jié)點,最后形成一棵地圖要素樣式樹。XML地圖樣式描述由預(yù)定義標(biāo)簽與內(nèi)容組成,標(biāo)簽包括元素和屬性,內(nèi)容則是這些元素和屬性的值。從演繹方法看,地圖要素樣式標(biāo)簽主要分為點樣式、線樣式與面樣式,橫向又涉及各樣式的具體屬性(color、alpha等)。
在設(shè)計實現(xiàn)中,樣式(style)作為數(shù)據(jù)源圖層的一個子節(jié)點。預(yù)定義的style標(biāo)簽如圖1,包括樣式總集合styles、樣式子元素style,點樣式以vertex-Style表示,線樣式以linestringStyle表示,面樣式以fillStyle表示,另外還有獨(dú)立的樣式color Theming-Style設(shè)計顏色主題。
圖1 基本樣式分類Fig.1 Basic style class
詳細(xì)設(shè)計中,點要素樣式(vertexStyle)又分為矢量圖形和柵格圖片樣式。點矢量圖形樣式包括導(dǎo)入的矢量符號和用WKT描述的矢量符號。外部導(dǎo)入庫樣式會在XML中生成一個獨(dú)立的<style>節(jié)點元素,并對應(yīng)到Java的Importer類進(jìn)行繪制。WKT是OGC規(guī)定的以文本形式描述幾何對象的重要標(biāo)準(zhǔn)。在此利用WKT勾勒點狀矢量符號的輪廓,優(yōu)點是表現(xiàn)形式為純文本,操作時無需任何轉(zhuǎn)換操作也沒有表達(dá)損失。嵌入時采用的是硬編碼的形式,表現(xiàn)樣式有面狀、星形和其他形式。WKT的定義形式為<Line width>∶<Symbol extent>∶<WKT specification>,符號保存為 .wkt文件。如1∶10∶POLYGON((5 5,5-5,-5-5,-5 5,5 5),(1 1,1-1,-1-1,-1 1,1 1))內(nèi)容表現(xiàn)為一個回字形點狀符號。對于柵格圖像形式的符號,需要放入預(yù)定義文件夾,在XML中存儲路徑;對于點狀矢量符號可以有顯示邊框、顯示填充、點狀邊框等選項。
標(biāo)簽樣式可根據(jù)要素的某屬性來標(biāo)注。對應(yīng)的XML存儲形式如表1,該樣式設(shè)置標(biāo)簽內(nèi)容為要素名稱,字體為宋體,顏色為黑色,角度和高度未設(shè)置,自動檢測重疊標(biāo)注,還可設(shè)置標(biāo)簽顯示的比例范圍。
表1 地圖標(biāo)簽表現(xiàn)樣式XML存儲節(jié)點Table 1 XML store node of map label style
線性樣式分為lineStringEndpointStyle、lineS-tringSegmentStyle、lineString VertexStyle 3種基本類型,分別描述線端點樣式、線段實體樣式和線串中節(jié)點類型。lineStringEndpointStyle樣式設(shè)計可分為首尾點的開放式箭頭和實心箭頭。lineStringSegment-Style樣式結(jié)構(gòu)相對簡單,相當(dāng)于SLD中的simple-Line,包括實線、虛線、點線、點劃線和空白線,其含有線形狀代碼,指示繪圖時使用筆刷類型。lineString-VertexStyle繼承于vertexStyle,指定線串中非首尾節(jié)點的表現(xiàn)形式,使用規(guī)則與vertexStyle相同,包括星形、圓形、十字形、方形、三角形和柵格位圖。
填充模式(fillPattern)主要包括面的顏色主題樣式(color ThemingStyle)和填充內(nèi)容。面要素的輪廓與線性樣式相關(guān),可以在填充與線輪廓間設(shè)立關(guān)聯(lián)關(guān)系。填充效果大體分為矢量與柵格圖像填充,其中矢量填充使用WKT描述,由具體編程語言進(jìn)行繪制。圖2為柵格填充與矢量填充示例,顏色主題化可以根據(jù)要素的某個屬性分級進(jìn)行渲染。
圖2 柵格影像填充與矢量填充Fig.2 Raster fill and vector fill styles
由于各GIS廠商地圖符號格式不公開及數(shù)據(jù)結(jié)構(gòu)定義的差異,通過傳統(tǒng)的符號格式轉(zhuǎn)換方法很難實現(xiàn)地圖符號信息的交互與共享[9]。以上設(shè)計從邏輯上實現(xiàn)樣式與SLD的兼容,而物理存儲和訪問方面使用預(yù)留Java和XML轉(zhuǎn)換接口的形式實現(xiàn)兼容。
地圖樣式物理文件讀寫機(jī)制的關(guān)鍵是樣式XML標(biāo)簽的自動生成和組合,平臺采用元編程思想,利用Java語言編程實現(xiàn)樣式文件生成和配置。元編程通過程序控制預(yù)定義模板自動生成代碼,最重要的應(yīng)用方式是代碼與文件(jar、dll、XML等)的反射機(jī)制,達(dá)到運(yùn)行時決定程序的運(yùn)行模式和參數(shù)設(shè)置的目的。具體操作中由Java2XML類庫實現(xiàn)Java代碼到XML的映射并進(jìn)行樣式持久化,快速生成地圖要素符號樣式文檔。接口設(shè)計通過在代碼中將圖層要素樣式的Java類以get、set的方式暴露,在用戶交互設(shè)置后利用序列化方法將Java類屬性反射到XML文檔中。圖3顯示了通過Java語言作為中間橋接,實現(xiàn)自定義地圖要素樣式與SLD的相互轉(zhuǎn)換。
圖3 兼容SLD的樣式實現(xiàn)Fig.3 Implementation of SLD-compatible style
利用物理訪問接口,可實現(xiàn)樣式文檔的文件式存儲和數(shù)據(jù)庫存儲。實際應(yīng)用中首選方案是文件式存儲,通常為.XML的文本文件。該方案易于復(fù)制傳播,可快速進(jìn)行編輯和預(yù)覽,缺點是缺少版本管理和訪問約束,不能在要求樣式高度一致的項目中使用。第二方案是將XML文檔導(dǎo)入 MySql、Access等數(shù)據(jù)庫中,構(gòu)建要素樣式應(yīng)用庫,優(yōu)點是易于實現(xiàn)樣式的并發(fā)控制和分布式訪問,但配置較復(fù)雜。兩種方案中,關(guān)鍵步驟均是XML結(jié)構(gòu)讀寫時的解析和驗證,采用DOM(Document Object Model)接口進(jìn)行XML文檔解析。通過DOM定位到地圖符號庫XML文檔的每個元素,可以讀取或?qū)懭刖庉嬈脚_中任意符號的信息,再結(jié)合Java編程技術(shù),實現(xiàn)不同GIS平臺要素樣式的通用化管理和轉(zhuǎn)換。
本文實現(xiàn)了兼容SLD標(biāo)準(zhǔn)的地圖要素樣式結(jié)構(gòu)化存儲。平臺以XML文檔為要素樣式載體,基于JTS Topology Suite、geotools開源庫,利用Java語言的JAI技術(shù)實現(xiàn)地圖要素樣式繪制和渲染。通過要素樣式編輯器可定制樣式的渲染風(fēng)格、要素可見的比例尺范圍、顏色主題、標(biāo)簽設(shè)置和細(xì)節(jié)裝飾等內(nèi)容,并有簡單的預(yù)設(shè)填充風(fēng)格可供選擇。
為測試本文設(shè)計方案對SLD標(biāo)準(zhǔn)的兼容性和實用性,選擇Geoserver地圖服務(wù)器作為比較對象。Geoserver是Java開發(fā)的 WMS/WF/WCS服務(wù)器(http://geoserver.org),良好兼容 OGC各種標(biāo)準(zhǔn)。首先在Geoserver中定義線形SLD樣式,然后將此樣式存儲為XML導(dǎo)入該平臺,比較同一圖層在兩平臺中可視化效果。該線形樣式簡單的設(shè)置為:1像素,藍(lán)色線劃。從圖4可以看出,在相同的縮放比下兩圖層展現(xiàn)效果基本一致。實驗結(jié)果初步說明該設(shè)計對SLD標(biāo)準(zhǔn)具有兼容性和實用性。
圖4 Geoserver與實驗平臺SLD顯示效果對比Fig.4 SLD result comparison between Geoserver and test platform
針對目前地圖要素樣式共享沒有統(tǒng)一標(biāo)準(zhǔn)的狀況,嘗試使用XML建立與SLD兼容的樣式描述與存儲機(jī)制,在此基礎(chǔ)上開發(fā)地圖要素樣式編輯器工具。本文提供的地圖要素樣式結(jié)構(gòu)化存儲與表達(dá)方法充分利用結(jié)構(gòu)化描述信息的跨平臺特性,可以在實際工作中靈活運(yùn)用。最后測試表明,基于XML/SLD的地圖要素樣式描述模型是解決地圖符號規(guī)范化描述及不同GIS軟件間地圖要素風(fēng)格共享問題的一種有效方法。
[1]OGC.Styled Layer Descriptor(SLD)implementation specification[S].Open GIS Consortium,2002.208-219.
[2]杜道生.地理信息標(biāo)準(zhǔn)化的最新進(jìn)展[J].地球信息科學(xué),2003(2):74-78.
[3]CHEN T S.Study on analysis and sharing of ArcGIS symbol and SLD symbol[A].3rd International Conference on Computational Intelligence and Industrial Application(PACIIA)[C].2010.
[4]陶陶.地理信息系統(tǒng)中的地圖符號共享方法研究[D].南京師范大學(xué),2005.
[5]王均,王紅,陳向東.數(shù)字制圖中地圖符號的標(biāo)準(zhǔn)化研究[J].地球信息科學(xué),2003(2):16-18.
[6]BRINKHOFF T.Towards a declarative portrayal and interaction model for GIS and LBS[A].Proc.8th Conference on Geographic Information Science(AGILE 2005)[C].IEEE Press,2005.449-458.
[7]陶陶,閭國年,李艷娜.基于通用一體化符號編輯器的符號共享模式研究[J].地理與地理信息科學(xué),2005,21(4):28.
[8]謝文君,孟令奎,黃長青,等.一種基于XML的Web GIS研究與實現(xiàn)[J].地理空間信息,2006,4(2):59.
[9]尹章才.地圖表達(dá)機(jī)制及其基于可擴(kuò)展標(biāo)記語言的描述[D].武漢大學(xué),2005.
Research and Implementation on Structured Store and Expression of Digital Map Feature Style
ZHOU Yu-ke,ZHOU Cheng-h(huán)u,MA Ting,GAO Xi-zhang,F(xiàn)AN Jun-fu
(StateKeyLaboratoryofResourcesandEnvironmentalInformationSystem,Institute ofGeographicSciencesandNaturalResourcesResearch,CAS,Beijing100101,China)
In modern time digital map is the important way to express geographical information.The way to design and show map feature style affects people′s abilities to explore the regulation and character of the distribution of spatial objects.Firstly,in this paper,the problem about structure store of map feature style is researched and the newest trend in this domain is analyzed,also advantage and shortcoming of some map style solutions are reviewed.Secondly in order to implement the share of feature style,a standard-complied solution is explored.In the design phase with the easy to extended and structured advantage of XML and Java program language,a SLD-complied map style expression mechanism is built.Following the meta-programming idea,it is easy to map custom feature styles to SLD styles.In the experiment,vertex,linestring,fill and font styles are defined in XML format,so they can be exchanged with other SLD styles and be designed freely by users.
map visualization;feature style;XML;OGC SLD
P208
A
1672-0504(2012)03-0007-04
2011-12- 21;
2012-02-27
國家自然科學(xué)基金項目(40830529、41171307);國家科技支撐計劃(2011BAH06B03、2011BAH24B10)
周玉科(1984-),男,博士研究生,研究方向為空間分析算法。E-mail:zyk@lreis.ac.cn