亢孟軍 吳雨錕 張開碩 蘇世亮 翁 敏
1 武漢大學(xué)資源與環(huán)境科學(xué)學(xué)院,湖北武漢,430079 2 城市空間信息工程北京市重點(diǎn)實(shí)驗(yàn)室,北京,100038 3 黑龍江地理信息工程院,黑龍江哈爾濱,150081
電子海圖是開展各種海上航行活動的數(shù)據(jù)基礎(chǔ),是極其重要的海洋信息及數(shù)據(jù)源。其圖示表達(dá)在行業(yè)和研究中具有重要意義。但電子海圖的發(fā)展與傳統(tǒng)GIS 的發(fā)展不相適應(yīng),具體表現(xiàn)在:①現(xiàn)行電子海圖顯示標(biāo)準(zhǔn)—— 國際海道測量組織(International Hydrographic Organization,IHO)發(fā)布的S-52[1]只面向電子航海圖,缺乏一個面向海洋地理信息全域的顯示標(biāo)準(zhǔn)[2];②S-52 符號化過程過于復(fù)雜,難以集成在常規(guī)GIS 軟件中;③S-52 與S-57[3]的 耦 合 表 達(dá) 方式限制了其開放性和可擴(kuò)展性。 構(gòu)建S-52 的開放解決方案,使其便于被開源GIS 軟件集成和渲染是一項(xiàng)亟待解決的工作。
當(dāng)前對S-52 渲染解決方案的研究主要集中在符號庫的設(shè)計(jì)和渲染引擎的開發(fā)方面。其中,符號庫設(shè)計(jì)的相關(guān)研究熱點(diǎn)在于選擇通用、便捷的符號組織載體存儲海圖符號,如PostScript、TrueType、可縮放矢量圖形(scalable vector graphics,SVG )以及在ArcGIS 符號體系基礎(chǔ)上的擴(kuò)展[4-8],采用柵格圖片存儲符號也是一種備選方法,但是局限性大,僅適用于靜態(tài)的點(diǎn)狀符號[9]。SVG 作為一種開放標(biāo)準(zhǔn)的矢量圖形語言,具有良好的交互功能,非常適用于表達(dá)電子海圖符號[10],本文選擇此方式組織圖元。
S-52 渲染引擎主要有兩種實(shí)現(xiàn)方式:①底層開發(fā)。解析S-57 數(shù)據(jù),依照S-52 符號標(biāo)準(zhǔn),對其進(jìn)行實(shí)現(xiàn)及優(yōu)化改造[11,12],并設(shè)計(jì)渲染算法[13]及其他多種功能,集成構(gòu)建海圖綜合顯示平臺[14,15]。②開源渲染解決思路。主要基于XML 構(gòu)建開放式海圖符號的表達(dá)規(guī)則,并通過OpenLayers、Canvas 等開源類庫在開源WebGIS 軟件上搭建相關(guān)功能模塊[16],運(yùn)用矢量瓦片提高渲染速度。底層開發(fā)的渲染引擎通常內(nèi)嵌于系統(tǒng),不具備良好的開放性、共享性和數(shù)據(jù)的互操作性。而目前的開源解決方案注重總體設(shè)計(jì)思路,對符號化規(guī)則的實(shí)現(xiàn)細(xì)節(jié)不足,并且其與現(xiàn)有開源GIS 軟件結(jié)合不夠,技術(shù)落地仍有差距。
本文提供了一種基于開放式地理信息系統(tǒng)協(xié)會(Open GIS Consortium,OGC)定義的圖層樣式描述規(guī)范(styled layer descriptor,SLD)的S-52 開源解決方案,通過建立S-52 與SLD 的映射及符號轉(zhuǎn)換規(guī)則,實(shí)現(xiàn)開源GIS 軟件對S-52 符號的規(guī)則的渲染。同時,采用一張海圖配合一份SLD 配置文件的思路,在uDig 中實(shí)現(xiàn)了標(biāo)準(zhǔn)電子海圖的集成顯示。
IHO S-52 規(guī)范符號演示庫中的復(fù)雜符號主要有4 種:①點(diǎn)符號或者是以面狀圖形中心點(diǎn)渲染的點(diǎn)符號;②復(fù)雜線型符號,線由兩個或多個不同圖元構(gòu)成;③復(fù)雜面型,以特定條紋或者圖像填充整個面狀區(qū)域;④注記符號。
SLD 是一種基于XML 的樣式描述語言,具有豐富的擴(kuò)展性和良好的開放性,是一種重要的GIS符號共享方法,適用于描述復(fù)雜S-52 顯示規(guī)范符號庫[17]中的復(fù)雜符號樣式,能實(shí)現(xiàn)跨平臺的調(diào)用渲染。SLD 定義的渲染規(guī)則均包含在
表1 S-52 符號屬性與SLD 對應(yīng)關(guān)系Tab.1 Correspondence Between S-52 SymbolicProperties and SLD
S-52 中的復(fù)雜符號往往需要使用一個圖形或者圖形的有序組合來完成符號渲染,一個獨(dú)立的圖形稱為圖元。將S-52 轉(zhuǎn)換為SLD 并配置出電子海圖的技術(shù)流程,如圖1 所示。
圖1 S-52 與SLD 映射的技術(shù)流程Fig.1 Flow Chart of Mapping S-52 to SLD
1)簡單類型。簡單類型符號包括簡單點(diǎn)符號、單色線符號、純色填充面符號。這些符號可使用簡單的SLD 語句定義,它們分別由
2)特殊點(diǎn)符號。特殊點(diǎn)符號是指將特定圖像渲染在某一點(diǎn)狀目標(biāo)上或其周圍的符號類型。S-52 主要通過符號樣式、錨點(diǎn)坐標(biāo)等屬性描述對其進(jìn)行定義。可使用SLD 中的通過
3)復(fù)雜線型符號。復(fù)雜線型符號是指用多個不同或同一圖元等間距沿線狀目標(biāo)渲染的符號類型。S-52主要通過符號樣式、線寬等屬性描述對其進(jìn)行定義??墒褂肧LD 中的多個標(biāo)簽加載圖元;通過
圖2 復(fù)雜線型渲染對比(比例尺1∶25 000)Fig.2 Comparison of Complex Linestyles Rendering(Scale 1∶25 000)
4)復(fù)雜面狀符號。復(fù)雜面狀符號指邊界線是復(fù)雜線型或者需要填充點(diǎn)符號的符號類型。S-52主要通過圖元樣式、填充規(guī)則等屬性描述對其進(jìn)行定義??墒褂肧LD 中的標(biāo)簽設(shè)置圖片的偏移量;使用SLD中的
圖3 復(fù)雜面型渲染對比(比例尺1∶50 000)Fig.3 Comparison of Complex Area Rendering(Scale 1∶50 000)
5)屬性依賴渲染。屬性依賴渲染是指各種符號類型需要根據(jù)物標(biāo)具體的屬性值指定不同渲染規(guī)則的渲染模式。在SLD 中控制符號渲染方式的所有標(biāo)簽需放置于一個
圖4 面狀水深渲染結(jié)果對比(比例尺1∶250 000)Fig.4 Comparison of Area Water Depth Rendering(Scale 1∶250 000)
6)注記運(yùn)算渲染。注記運(yùn)算渲染是指直接渲染注記或根據(jù)屬性渲染注記的渲染模式。SLD 中包括OGC 標(biāo)準(zhǔn)提供的四則運(yùn)算和豐富的功能函數(shù),四則運(yùn)算通過標(biāo)簽