來源:SVG中國(CHINASVG.COM)
摘要:討論了基于SVG的網(wǎng)絡(luò)地圖符號的設(shè)計(jì)與顯示問題;首先介紹了常用地圖符號的描述模型和SVG的概念;然后根據(jù)地圖符號的結(jié)構(gòu)特征和SVG的自身特點(diǎn),提出基于SVG的地圖符號描述模型;重點(diǎn)進(jìn)行了點(diǎn)、線和面3種類型的基于SVG地圖符號設(shè)計(jì),為地圖符號的結(jié)構(gòu)化描述和符號庫共享提供了一種通用的實(shí)現(xiàn)方法,這些地圖符號可以在WebGIS中得到充分應(yīng)用。獲得的結(jié)論對于相關(guān)技術(shù)及專業(yè)的應(yīng)用研究具有一定的借鑒作用。
關(guān)鍵詞:SVG;地圖符號;WebGIS
圖形符號,也就是常說的地圖符號和圖表是地圖符號系統(tǒng)的主體,包括點(diǎn)狀符號、線狀符號和面狀符號[1]。SVG能描述任意復(fù)雜的圖形,但由于地圖符號的復(fù)雜性,在將地圖符號用SVG格式描述時(shí),還有許多問題有待解決。SVG目前僅支持一些基本的圖形元素,但遠(yuǎn)不能滿足應(yīng)用的要求。為了能夠有效地通過SVG來對地圖符號進(jìn)行描述,就必須將地圖符號按照SVG標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì)。
地圖符號的描述模型通常表現(xiàn)為3個(gè)層次:一是地圖符號圖元,是構(gòu)成地圖符號的基本要素;二是地圖符號模板,由圖元按照一定的規(guī)則構(gòu)成;三是地圖符號,按照一定的配置規(guī)則將空間信息用符號模板進(jìn)行符號化。配置規(guī)則是一種操作,點(diǎn)、線和面操作分別對應(yīng)于平移、映射和填充。文中操作是將文字配置在參考位置上,參考位置可以是點(diǎn)、線或面。當(dāng)為參考點(diǎn)時(shí),將文本平移到點(diǎn)位置;當(dāng)為線時(shí),將文本映射到線上,使得文本沿線配置;當(dāng)為面時(shí),可以將面分解為中心點(diǎn)、中軸線或邊界線,再在點(diǎn)或線上配置文本。符號模板包括點(diǎn)、線、面模板以及注記,并聲明了一系列形式化參數(shù)[2]。
SVG是W3C制定的基于XML開放標(biāo)準(zhǔn)的文本式標(biāo)記語言,支持矢量圖形,如矩形、圓形、橢圓形、多邊形、貝塞爾曲線等。同時(shí),SVG還引入了平面設(shè)計(jì)中路徑和剪裁路徑的概念,使得SVG與其他XML應(yīng)用的協(xié)作變得十分簡單,因此其擴(kuò)展性很強(qiáng),可以表達(dá)任意復(fù)雜的圖像[3]。還有靈活的坐標(biāo)控制手段,可以將用戶自定義的符號加入其中,可以說它是圖形、圖像和文字的有機(jī)統(tǒng)一。它提供了6種類型的對象,其中包括矢量圖形、圖像、漸變填充、濾鏡操作、可重復(fù)單元和文本。它對于圖形對象可進(jìn)行組合、添加樣式、幾何變換、復(fù)合等操作。特征集包括嵌套變換、剪切路徑、Alpha蒙版、濾鏡效果、模板對象和動畫效果,這些都極大地豐富了圖形圖像的顯示效果。
在理論上,這些SVG對象的組合可以構(gòu)筑任意復(fù)雜的圖形/圖像。根據(jù)功能不同,SVG的主
要對象可以歸為基本要素對象(矩形、圓、橢圓、直線、折線、曲線和多邊形)和頁面描述功能對象(文字、圖像、路徑、交互事件)兩大類[4]。這兩種對象可以組合成各種地圖符號模板,地圖符號模板經(jīng)過環(huán)境配置(填充、平移、重復(fù)、變形、變長、漸變、隨機(jī)和自定義屬性)構(gòu)成了地圖符號。描述模型如圖1所示。

圖1 SVG地圖符號描述模型
基于SVG的地圖符號的具體設(shè)計(jì)符號模板是由圖元對象和頁面描述對象相結(jié)合構(gòu)成的,在SVG圖像顯示中是可重用的。通常做法是在文檔的定義部分(作為<defs></defs>元素的一部分)指定以后可在圖像主體中調(diào)用的標(biāo)識來創(chuàng)建。地圖符號是按照一定的規(guī)則,將符號模板配置在相應(yīng)的位置上顯示地理信息的。
3.1點(diǎn)狀符號
點(diǎn)狀符號是由不同形狀的幾何圖形單元組合構(gòu)成的,通過對點(diǎn)狀符號的幾何形狀特征進(jìn)行分析,可以將構(gòu)成點(diǎn)狀符號的幾何圖形單元分為:點(diǎn)、圓、圓弧、橢圓、矩形、多邊形、直線、折線等基本圖元。SVG提供了<circle>、<ellipse>、<line>、<polyline>、<rect>、<polygon>等6種基本的圖形元素,可以很好地對構(gòu)成點(diǎn)狀符號的基本圖元描述,從而實(shí)現(xiàn)對點(diǎn)狀符號描述。
點(diǎn)狀符號都有明確的定位點(diǎn)和方向性。根據(jù)點(diǎn)狀符號的方向性,可以將點(diǎn)狀符號分兩類:一類為固定方向的,如GPS點(diǎn)、三角點(diǎn)等,另一類為不固定方向的,如不依比例尺的車站、橋梁等,如圖2所示。

圖2 SVG點(diǎn)狀符號
具體方法如下(部分代碼):
<defs>
<polyline id="qiao" points="5,20"/>
</defs>
<use xlink:href = "# qiao" transform = "rotate(180) translate
(-80,-80)"/>
對于符號方向不固定的,方向的控制可以在調(diào)用該符號時(shí),通過設(shè)置圖形分組元素的屬性“rotate”(旋轉(zhuǎn))來實(shí)現(xiàn)。
3.2線狀符號
線狀符號用來表示空間上1維的地理現(xiàn)象,它有一個(gè)顯著的特點(diǎn)是都有一條有形或無形的空間定位線。根據(jù)線狀符號的分解特性和圖形的對稱特性,將線狀符號分為兩類。一類為普通的線狀符號,如等高線、等深線等,如圖3所示。另一類為模式化的線狀符號,這類符號以定位線為基準(zhǔn),以某一基本圖形單元為循環(huán)體沿定位線生成,如高速公路、鐵路等,如圖3所示。
SVG文檔中的大多數(shù)可視化元素都可以使用“style”(樣式)屬性來定義圖形的渲染方式。
“style”的參數(shù)多種多樣,幾乎涵蓋了從文字到圖形、從色彩到濾鏡等各個(gè)方面[5]。其中,參數(shù)fill說明圖形的填充樣式;參數(shù)stroke說明描邊線條的顏色。下面的幾個(gè)參數(shù)都是“stroke”的附加參數(shù)。
stroke-width:說明描邊線條的寬度;
stroke-linecap:說明描邊線條端點(diǎn)的繪制樣式,有“butt”(正常)、“round”(圓形)和“square”(方形)3種;
strokelinejoin:說明描邊線條拐角處的過渡形狀,有“miter”(正常)、“round”(圓弧)和“bevel”(斜面)3種;
strokedasharray:說明描邊線條的線型,用來定義虛線;
stroke-dashoffset:說明描邊模板(如虛線)的起始偏移量,缺省是從起點(diǎn)開始。
對第一類線狀符號而言描述比較簡單,使用折線<polyline>或路徑<path>描述,設(shè)置相應(yīng)的線色、線寬等參數(shù)即可。
第二類線狀符號的描述較復(fù)雜,不能直接使用<polyline>或<path>來實(shí)現(xiàn)。目前,都是用path和polyline描述線狀符號[3,6],實(shí)際上只提到了第一類線狀符號的描述,都沒有涉及到第二類線狀符號的描述。對于第二類線狀符號,從圖3可以看出,這類線狀符號的構(gòu)圖都以一個(gè)基本單元為基礎(chǔ)循環(huán)配置而成。文中描述這類符號的方法是:預(yù)先描述一個(gè)基本模板,然后在具體畫線時(shí)引用這個(gè)基本的模版,具體采用GIS中線狀符號的配置方法。

圖3 SVG線狀符號
具體方法如下(部分代碼):
<symbol id="symbolized">
<polyline points="5,20"/>
</symbol>
<use xlink:href="#symbolized" mce_href="#symbolized" fill = "none" stroke = "
black" stroke-width="16"/>
3.3面狀符號
面狀符號都有一個(gè)或多個(gè)有形或無形的封閉邊界線,為了區(qū)別地物的性質(zhì)和地理現(xiàn)象空間分布的數(shù)量、質(zhì)量等特征,面狀符號常采用一定的填充方式。根據(jù)填充方式的不同,面狀符號可分為3類:第一類是用顏色填充的面狀符號,如依比例尺的湖泊、河流等;第二類是用暈線填充的面狀符號,如依比例尺的沼澤地、鹽田等;第三類是用點(diǎn)狀符號填充的面狀符號,如草地、森林等。
對于第一類面狀符號只需設(shè)置填充顏色即可實(shí)現(xiàn);對于第二類和第三類可以采用模式填充的方法實(shí)現(xiàn),文中主要針對后兩類面狀符號的描述進(jìn)行闡述。后兩類面狀符號描述的方法是:首先定義填充的模式(pattern),也就是定義用于填充的圖案,定義模式的元素是<pattern>,并設(shè)置該模式的“id”屬性;然后,在被填充區(qū)域渲染時(shí)引用該模式,模式的引用格式是url(#id)。模式的定義原理是:首先,定義一個(gè)矩形區(qū)域作為基本的填充單元,然后,按面狀符號的構(gòu)圖規(guī)律描述填充的圖案,如圖4所示。

圖4 SVG面狀符號
具體方法如下(部分代碼):
<pattern id="pattern1" ">
<pathd="M2.52 L2.54"/>
</pattern>
<g>
<path style="fill:url(#pattern1)" d="M9.522 z"/>
</g>
SVG作為一種圖形標(biāo)記語言,不僅具有描述圖形的功能,還可以直接顯示圖形符號,這是其他標(biāo)記方法不能實(shí)現(xiàn)的。地圖是傳遞地理信息的工具,地圖符號則是傳遞地理信息的手段,最終地理信息都要以地圖符號的形式表現(xiàn)出來。因此,這就涉及到地圖的符號化,簡而言之,就是地圖符號的使用。實(shí)際上,可以把每一種點(diǎn)狀符號看作是一個(gè)基本的圖形單元、把每一種線狀符號看作是一種線型樣式、把每一種面狀符號看作是一種模式填充的方式,這樣,地圖符號的引用,可以歸結(jié)為對基本圖形單元、線型樣式和模式填充方式的引用。一幅SVG格式的鄭州市地圖實(shí)現(xiàn)如圖5所示。

圖5 WebGIS中的SVG應(yīng)用
具有統(tǒng)一的標(biāo)準(zhǔn)和開放性是SVG優(yōu)點(diǎn)所在,統(tǒng)一的標(biāo)準(zhǔn)便于加強(qiáng)交流與共享,開放性有利于自身發(fā)展強(qiáng)大。另外,體積小、可縮放、可鏈接等特點(diǎn)使SVG成為未來網(wǎng)上圖形傳輸發(fā)展方向。通過SVG地圖符號描述地理信息,相信它必將成為推動WebGIS和空間信息技術(shù)發(fā)展的動力。
和萬禮,崔鐵軍,劉興科 信息工程大學(xué)測繪學(xué)院,河南鄭州 450052
陳應(yīng)東 68029部隊(duì),甘肅蘭州 730020)
- 參考文獻(xiàn):
[1]華一新.地理信息系統(tǒng)[M].北京:解放軍出版社,2001:267290.
[2]尹章才,李霖.基于SVG的地圖符號描述模型研究[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2004,(6)
:544547.
[3]孫少紅,邊馥苓.SVG網(wǎng)絡(luò)圖像標(biāo)準(zhǔn)支持下的地圖顯示[J].測繪信息與工程,2002,(8):1516.
[4]周強(qiáng)中,談俊忠.SVG在WebGIS中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2003,(1):108121.
[5]劉嘯,畢永年.基于XML的SVG應(yīng)用指南[M].北京:北京科海集團(tuán)公司,2001:3943.
[6]周文生,胡鵬,賈永紅.Web環(huán)境下SVG地圖瀏覽器的設(shè)計(jì)與實(shí)現(xiàn)[J].測繪學(xué)院學(xué)報(bào),2003,(2)
:4347.