蔡苑彬,劉 露,陳 犖,熊 偉,陳宏盛
(1.國防科技大學(xué) 電子科學(xué)與工程學(xué)院 信息工程系, 湖南 長沙410073)
基于地圖制圖腳本的交互式圖例動態(tài)生成方法
蔡苑彬1,劉 露1,陳 犖1,熊 偉1,陳宏盛1
(1.國防科技大學(xué) 電子科學(xué)與工程學(xué)院 信息工程系, 湖南 長沙410073)
現(xiàn)有圖例生成方法依靠人工編輯生成靜態(tài)圖例,無法根據(jù)地圖視口內(nèi)容的變化而動態(tài)改變,給圖層豐富、樣式復(fù)雜的地圖交互帶來了不便。針對上述問題,提出一種基于地圖制圖腳本的交互式動態(tài)圖例生成方法,通過解析腳本,篩選內(nèi)容、生成圖例等步驟,根據(jù)地圖視口內(nèi)容自動生成圖例。
腳本制圖;圖例;自動圖例;移動互聯(lián)網(wǎng);互聯(lián)網(wǎng)GIS
互聯(lián)網(wǎng)GIS中圖層信息量不斷增加,內(nèi)容動態(tài)性不斷增強(qiáng),相對于傳統(tǒng)的靜態(tài)地圖而言,如何動態(tài)生成互聯(lián)網(wǎng)地圖的圖例成為一個重要問題。
OpenStreetMap開放了全球的街道數(shù)據(jù),降低了大眾制圖的門檻;MapBox采用腳本化的地圖制圖模式,探索出網(wǎng)頁制圖的最佳方式。隨之,腳本化地圖制圖模式在移動互聯(lián)網(wǎng)時代逐漸興起,成為互聯(lián)網(wǎng)GIS富有前景的技術(shù)之一。但是,目前主要的移動互聯(lián)網(wǎng)GIS中,已有的圖例存在動態(tài)性不足的問題。ArcGIS Online的圖例是靜態(tài)的,它無法根據(jù)地圖視口內(nèi)容的變化而變化;MapBox的圖例依賴人工編輯代碼,無法自動生成;OpenStreetMap制作的圖例具有很好的動態(tài)特性,但是沒有提供生成圖例的接口。
針對上述問題,提出了一種基于地圖制圖腳本的交互式動態(tài)圖例生成方法,并通過在某交互式Web地理信息系統(tǒng)中的應(yīng)用實(shí)例來驗(yàn)證方法的可行性。
1.1 電子地圖中的圖例生成方法
在傳統(tǒng)的GIS軟件中(如ArcGIS),系統(tǒng)通過簡單的人機(jī)交互后,可以自動生成地圖圖例。但是,生成的圖例更多是為傳統(tǒng)紙質(zhì)地圖服務(wù)的,無法根據(jù)地圖視口不斷變化而動態(tài)地改變自身內(nèi)容。
OpenStreetMap為它的標(biāo)準(zhǔn)地圖數(shù)據(jù)制作了動態(tài)圖例——隨著地圖視口尺度的縮放,圖例內(nèi)容會相應(yīng)地改變。但它并沒有提供圖例生成的接口,用戶無法為自己的地圖生成圖例。
總之,傳統(tǒng)的圖例生成方法不能同時解決兩種情況下的問題:①地圖內(nèi)容不斷變化的情況,即地圖中的圖層有可能動態(tài)增刪,圖例也應(yīng)該產(chǎn)生相應(yīng)變化;②地圖視口不斷變化,圖例應(yīng)該根據(jù)視口中的地圖內(nèi)容動態(tài)變化。
1.2 腳本化制圖
腳本化制圖是指采用腳本描述語言來定義地圖中各要素的制圖樣式,并通過腳本解釋引擎軟件將腳本描述轉(zhuǎn)化為實(shí)際的制圖命令。Open Geospatial Consortium(OGC)在2000年制定了Web Map Service(WMS)標(biāo)準(zhǔn)[1,2],其中Styled Layer Descriptor(SLD)制定了描述地圖樣式的標(biāo)準(zhǔn)。在該標(biāo)準(zhǔn)中,地圖被定義為由樣式化圖層按照一定的次序疊加形成的對象。一個樣式化的圖層則是由一個圖層以及描述該圖層繪制樣式的信息組成。按照這種定義,一個地圖可以表示為 :其中,Layer為一個圖層;Style為圖層的樣式。
Mapnik(開源的地圖繪制引擎)的作者M(jìn)ichal Migurski,受SLD思想的啟發(fā),提出將地圖的繪制信息表述為(Layer,Style)元組的集合,并用XML編碼表示。地圖繪制引擎通過讀取xml文件進(jìn)行地圖繪制。但用xml文件描述地圖樣式仍然過于復(fù)雜,不利于用戶編寫。最后,Michal Migurski借鑒CSS的語法,編制了制圖腳本語言CartoCSS,進(jìn)一步簡化了地圖樣式的描述。
隨著腳本制圖技術(shù)的發(fā)展,出現(xiàn)了若干基于腳本制圖的系統(tǒng),如采用Geo-graphic Style Sheets腳本的Cartagem[3]和使用MapCSS腳本的OpenStreetMap。
地圖制圖腳本有2種基本組成要素——選擇器和聲明語句。其中,選擇器定義地圖制圖操作的主體對象,例如地圖、圖層、帶過濾條件的對象集等;聲明語句定義該主體對象的具體制圖樣式。語法結(jié)構(gòu)可以用下面的代碼描述。
Selector {
Declaration;
Selector {
Declaration;
}
}
其中,Selector為選擇器,Declaration為聲明語句。
以CartoCSS制圖腳本為例,以下是一個將“highway”線圖層中class為1的線對象繪制為紅色的腳本示例。其中,選擇器有兩個:一為highway圖層,用#highway表示,二為屬性class為1的線對象,用[class=1]表示;聲明語句為“l(fā)ine-color=#ff0000”,表示顏色為紅色的線樣式。
# highway {
[ class=1] {
line-color = #ff0000;
}
}
通過總結(jié)分析,制圖腳本的語法特征可以用下面的式子來建模:
其中,Style表示一個繪制樣式——描述對象的某種繪制屬性。StyleSet(樣式集)定義為一個選擇器及其內(nèi)部所有聲明語句組成的集合。聲明語句可以是一個樣式,也可以是一個樣式集。
方法的總體思路是為每個地圖符號生成一個圖例單元,再將所有的圖例單元組成最后的圖例。圖例單元是一個地圖符號的注解,它由一個地圖符號以及描述該符號的文字組成。具體由下面四個步驟實(shí)現(xiàn)。
3.1 腳本的解析
從腳本的第一個樣式集開始,把它的選擇器及其內(nèi)部的非樣式集的聲明語句歸到一起,形成元組:
它代表一個制圖對象以及制圖對象的制圖樣式。它在語義上表示一個地圖符號,包含了生成一個圖例單元所需的信息。因此,解析腳本的目的就是從腳本中提取所有這樣的元組。
對于樣式集里面的選擇器,它表示的制圖對象是其所有父選擇器與自身的交集,因此為:
其中n為父選擇器個數(shù)。用式(4)替代式(3)中的Selector,可以得到:
顯然,式(3)是n=1時式(4)的一種特殊情況,可以一并表示為式(4)。為了方便表達(dá),我們把式(4)定義的元組稱為 “基本樣式集”。
3.2 圖例單元的篩選
經(jīng)過§3.1得到的基本樣式集包含了整幅地圖的圖例單元。但是,從交互友好性的角度出發(fā),最好只顯示與當(dāng)前地圖內(nèi)容相匹配的圖例單元。為此,需要將不屬于當(dāng)前地圖視口的圖例單元篩選掉。文章提出以下3種圖例單元的篩選方法。
1)利用地圖視口的縮放尺度篩選。在基本樣式集中,選擇器可以是帶有尺度篩選條件的制圖對象,其尺度篩選條件表示為[min,max]。min為圖例單元生效的最小尺度;max為最大尺度,滿足0≤min<max<∞。如果當(dāng)前尺度cur滿足(max-cur)*(min-cur)<0,則保留。
2)利用地圖視口范圍篩選。為了減少計算復(fù)雜度,這里以圖層為單元進(jìn)行篩選。如果一個圖層與當(dāng)前地圖視口沒有交集,則隸屬于該圖層的圖例單元都不予保留,否則全部保留。
3)利用樣式類型篩選。遍歷基本樣式集中的樣式,如果其中包含有非空間數(shù)據(jù)的樣式(沒有圖例單元與之對應(yīng)),就篩選掉該基本樣式集,否則保留。
3.3 圖例單元的生成
圖例單元由一個地圖符號以及描述該符號的文字組成。因此,它可以表示為下面的數(shù)據(jù)結(jié)構(gòu):
struct legendItem {
img symbol;
string note;
int type;
}
其中symbol是符號的圖像;note是說明符號含義的文字;type表示圖例單元的類型,0表示圖例單元的符號是圖層的默認(rèn)符號,1表示其他情況。type字段用于排版,它可以根據(jù)排版需求設(shè)定更多的類型。
這一步要為§3.2篩選出來的基本樣式集生成圖例單元結(jié)構(gòu)(legendItem),也即生成地圖符號(symbol)、符號注解(note)和類型(type)3個字段。
矢量數(shù)據(jù)有點(diǎn)線面3種類型,分別需要“點(diǎn)、線、面”3個模板來繪制其符號;柵格數(shù)據(jù)的圖例只包含色彩信息,可以用面模板繪制。因此,繪制地圖符號,需要點(diǎn)線面三個模板(其中點(diǎn)模板為只包含一個點(diǎn)的矢量數(shù)據(jù))。
生成地圖符號圖像的過程為:從基本樣式的選擇器中獲取它所在的圖層。然后根據(jù)圖層的數(shù)據(jù)類型,將對應(yīng)的數(shù)據(jù)模板以及樣式交給制圖引擎,由制圖引擎繪制符號圖像。過程如圖1所示。
圖 1 符號圖像生成流程圖
生成符號注解和類型的過程為:遍歷基本樣式集的所有選擇器。如果其中包含帶屬性過濾條件的對象,說明圖例單元描述的是圖層中符合某種屬性特征的空間對象,其符號注解表示為所有屬性過濾條件的交,類型標(biāo)記為1;否則,說明圖例單元描述的是圖層的默認(rèn)符號,其符號注解用圖層名表示,類型標(biāo)記為0。
3.4 圖例的html表達(dá)
這一步先生成每個圖例單元的html,再將它們合并到一個html中,形成最終成果。
1)生成圖例單元的html。根據(jù)圖例的設(shè)計方案編寫圖例單元的html模板,用特殊的符號標(biāo)定symbol和note的位置。再用圖例單元中對應(yīng)的字段替代標(biāo)定的符號,生成圖例單元的html。舉例如下:
template[0] =”<div> <img src= ((symbol))> ((note))</div>”
template[1]=” <div> <img src= ((symbol))> ((note))</div>”
如果圖例單元的class為i,選擇template[i]作為模板。先將圖例單元的symbol圖像轉(zhuǎn)為base64字符串,并取代模板中的“((symbol))”;再用圖例單元的note字符串替換模板中的“((note))”。
2)合并圖例單元html。利用類似的方法,先設(shè)計圖例的html模板,然后將圖例單元的html添加到標(biāo)記的位置,生成最終的html。
本文方法是根據(jù)高性能地理計算平臺HiGIS[4]的需求提出來的。HiGIS提供了腳本地圖制圖的環(huán)境,用戶通過編寫CartoCSS腳本來設(shè)定地圖樣式。實(shí)驗(yàn)程序以后臺服務(wù)的形式集成到HiGIS中,并向前端提供http接口。對于一幅制作好的地圖,實(shí)驗(yàn)程序可以根據(jù)前端發(fā)送的地圖視口范圍和縮放尺度等信息生成地圖圖例,并返回給前端繪制。下面通過兩個例子來說明方法的可行性。
圖2的兩幅圖是在HiIGIS平臺上利用OSM數(shù)據(jù)制作的中國街道地圖的截圖。兩幅圖分別對應(yīng)于Tile Web Service (TMS)劃分的第11、12層。從圖a到圖b,地圖進(jìn)行了放大操作。二級公路由原來的黃色變成了灰色,更低級的道路被繪制出來。同時,左側(cè)的圖例也發(fā)生相應(yīng)變化,說明本方法能夠根據(jù)地圖視口的縮放尺度來篩選圖例內(nèi)容。
圖2 不同尺度下的圖例
圖3的兩幅圖同為中國街道地圖第14層的截圖。從圖a到圖b,地圖進(jìn)行了平移操作。在圖a中,地圖視口內(nèi)沒有土地利用圖層的內(nèi)容,所以圖例中也沒有該圖層的內(nèi)容。在圖b中,地圖視口內(nèi)出現(xiàn)了土地利用圖層的內(nèi)容,所以圖例中也包含了該圖層符號的注解(紅色虛框標(biāo)出)。這說明本方法可以根據(jù)地圖視口的范圍來篩選圖例內(nèi)容。
本文方法既可以在瀏覽地圖時實(shí)時生成圖例,也可以在制圖中自動快速生成圖例。由于方法具有快速和自動的優(yōu)勢,可以用于應(yīng)急成圖[5]和自動成圖[6]中的圖例生成。
本文方法并沒有將圖例的友好交互潛能挖掘完全,比如地圖數(shù)據(jù)與圖例符號之間的聯(lián)動,通過圖例改變地圖樣式,隨鼠標(biāo)事件改變圖例狀態(tài)等。這些交互特性在傳統(tǒng)的GIS軟件中較容易實(shí)現(xiàn),但是在基于腳本制圖的技術(shù)背景下,實(shí)現(xiàn)這些友好交互特性頗具挑戰(zhàn)性,值得進(jìn)一步探討。
[1] ISO 19128.Geographic information - Web map server interface[S].
[2] Gahegan M, Smart W, Masoud-Ansari S,etal. A Semantic Web Map Mediation Service: Interactive Redesign and Sharing of Map Legends[C]. 1st ACM SIGSPATIAL International Workshop on Spatial Semantics and Ontologies,2011
[3] Boulos M N, Warren J, Gong J, etal.Web GIS in Practice VIII: HTML5 and the Canvas Element for Interactive Online Mapping[J/OL]. International Journal of Health Geographics
[4] Liu L, Yang A, Chen L,etal. HiGIS -When GIS Meets HPC[C].12th International Conference on GeoComputation,Wuhan,2013
[5] 和海霞,楊思全,黃河,等. 應(yīng)急遙感快速制圖技術(shù)研究[J].國土資源遙感,2012(3):159-164
[6] 劉光孟,汪云甲,劉萬增,等. 地圖制圖模板自適應(yīng)生成技術(shù)研究[EB/OL]. http://www.paper.edu.cn,2014-01-01
[7] 霍 佳,王英杰,王映輝,等. 基于Web 的統(tǒng)計電子地圖發(fā)布系統(tǒng)設(shè)計[J].計算機(jī)工程,2009,35(4): 258-260
圖3 不同視口范圍下的圖例
P208
B
1672-4623(2014)05-0154-04
10.3969/j.issn.1672-4623.2014.05.057
蔡苑彬,碩士,研究方向?yàn)榈貓D制圖學(xué)。
2014-03-14。
項(xiàng)目來源:國家863計劃資助項(xiàng)目(2011AA120305,2011AA120306)。