国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于SLD 的IHO S-52 開(kāi)源解決方案

2022-01-17 05:39亢孟軍吳雨錕張開(kāi)碩蘇世亮
測(cè)繪地理信息 2022年1期
關(guān)鍵詞:海圖水深開(kāi)源

亢孟軍 吳雨錕 張開(kāi)碩 蘇世亮 翁 敏

1 武漢大學(xué)資源與環(huán)境科學(xué)學(xué)院,湖北武漢,430079 2 城市空間信息工程北京市重點(diǎn)實(shí)驗(yàn)室,北京,100038 3 黑龍江地理信息工程院,黑龍江哈爾濱,150081

電子海圖是開(kāi)展各種海上航行活動(dòng)的數(shù)據(jù)基礎(chǔ),是極其重要的海洋信息及數(shù)據(jù)源。其圖示表達(dá)在行業(yè)和研究中具有重要意義。但電子海圖的發(fā)展與傳統(tǒng)GIS 的發(fā)展不相適應(yīng),具體表現(xiàn)在:①現(xiàn)行電子海圖顯示標(biāo)準(zhǔn)—— 國(guó)際海道測(cè)量組織(International Hydrographic Organization,IHO)發(fā)布的S-52[1]只面向電子航海圖,缺乏一個(gè)面向海洋地理信息全域的顯示標(biāo)準(zhǔn)[2];②S-52 符號(hào)化過(guò)程過(guò)于復(fù)雜,難以集成在常規(guī)GIS 軟件中;③S-52 與S-57[3]的 耦 合 表 達(dá) 方式限制了其開(kāi)放性和可擴(kuò)展性。 構(gòu)建S-52 的開(kāi)放解決方案,使其便于被開(kāi)源GIS 軟件集成和渲染是一項(xiàng)亟待解決的工作。

當(dāng)前對(duì)S-52 渲染解決方案的研究主要集中在符號(hào)庫(kù)的設(shè)計(jì)和渲染引擎的開(kāi)發(fā)方面。其中,符號(hào)庫(kù)設(shè)計(jì)的相關(guān)研究熱點(diǎn)在于選擇通用、便捷的符號(hào)組織載體存儲(chǔ)海圖符號(hào),如PostScript、TrueType、可縮放矢量圖形(scalable vector graphics,SVG )以及在ArcGIS 符號(hào)體系基礎(chǔ)上的擴(kuò)展[4-8],采用柵格圖片存儲(chǔ)符號(hào)也是一種備選方法,但是局限性大,僅適用于靜態(tài)的點(diǎn)狀符號(hào)[9]。SVG 作為一種開(kāi)放標(biāo)準(zhǔn)的矢量圖形語(yǔ)言,具有良好的交互功能,非常適用于表達(dá)電子海圖符號(hào)[10],本文選擇此方式組織圖元。

S-52 渲染引擎主要有兩種實(shí)現(xiàn)方式:①底層開(kāi)發(fā)。解析S-57 數(shù)據(jù),依照S-52 符號(hào)標(biāo)準(zhǔn),對(duì)其進(jìn)行實(shí)現(xiàn)及優(yōu)化改造[11,12],并設(shè)計(jì)渲染算法[13]及其他多種功能,集成構(gòu)建海圖綜合顯示平臺(tái)[14,15]。②開(kāi)源渲染解決思路。主要基于XML 構(gòu)建開(kāi)放式海圖符號(hào)的表達(dá)規(guī)則,并通過(guò)OpenLayers、Canvas 等開(kāi)源類庫(kù)在開(kāi)源WebGIS 軟件上搭建相關(guān)功能模塊[16],運(yùn)用矢量瓦片提高渲染速度。底層開(kāi)發(fā)的渲染引擎通常內(nèi)嵌于系統(tǒng),不具備良好的開(kāi)放性、共享性和數(shù)據(jù)的互操作性。而目前的開(kāi)源解決方案注重總體設(shè)計(jì)思路,對(duì)符號(hào)化規(guī)則的實(shí)現(xiàn)細(xì)節(jié)不足,并且其與現(xiàn)有開(kāi)源GIS 軟件結(jié)合不夠,技術(shù)落地仍有差距。

本文提供了一種基于開(kāi)放式地理信息系統(tǒng)協(xié)會(huì)(Open GIS Consortium,OGC)定義的圖層樣式描述規(guī)范(styled layer descriptor,SLD)的S-52 開(kāi)源解決方案,通過(guò)建立S-52 與SLD 的映射及符號(hào)轉(zhuǎn)換規(guī)則,實(shí)現(xiàn)開(kāi)源GIS 軟件對(duì)S-52 符號(hào)的規(guī)則的渲染。同時(shí),采用一張海圖配合一份SLD 配置文件的思路,在uDig 中實(shí)現(xiàn)了標(biāo)準(zhǔn)電子海圖的集成顯示。

1 SLD 與S-52 的 映 射 關(guān) 系

IHO S-52 規(guī)范符號(hào)演示庫(kù)中的復(fù)雜符號(hào)主要有4 種:①點(diǎn)符號(hào)或者是以面狀圖形中心點(diǎn)渲染的點(diǎn)符號(hào);②復(fù)雜線型符號(hào),線由兩個(gè)或多個(gè)不同圖元構(gòu)成;③復(fù)雜面型,以特定條紋或者圖像填充整個(gè)面狀區(qū)域;④注記符號(hào)。

SLD 是一種基于XML 的樣式描述語(yǔ)言,具有豐富的擴(kuò)展性和良好的開(kāi)放性,是一種重要的GIS符號(hào)共享方法,適用于描述復(fù)雜S-52 顯示規(guī)范符號(hào)庫(kù)[17]中的復(fù)雜符號(hào)樣式,能實(shí)現(xiàn)跨平臺(tái)的調(diào)用渲染。SLD 定義的渲染規(guī)則均包含在標(biāo)簽下,利用其子標(biāo)簽 分別實(shí)現(xiàn)點(diǎn)狀符號(hào)、線狀符號(hào)、面狀符號(hào)及注記符號(hào)的渲染。其相關(guān)標(biāo)簽與屬性對(duì)應(yīng)情況如表1 所示。

表1 S-52 符號(hào)屬性與SLD 對(duì)應(yīng)關(guān)系Tab.1 Correspondence Between S-52 SymbolicProperties and SLD

S-52 中的復(fù)雜符號(hào)往往需要使用一個(gè)圖形或者圖形的有序組合來(lái)完成符號(hào)渲染,一個(gè)獨(dú)立的圖形稱為圖元。將S-52 轉(zhuǎn)換為SLD 并配置出電子海圖的技術(shù)流程,如圖1 所示。

圖1 S-52 與SLD 映射的技術(shù)流程Fig.1 Flow Chart of Mapping S-52 to SLD

2 關(guān)鍵S-52 符號(hào)的SLD 定義

1)簡(jiǎn)單類型。簡(jiǎn)單類型符號(hào)包括簡(jiǎn)單點(diǎn)符號(hào)、單色線符號(hào)、純色填充面符號(hào)。這些符號(hào)可使用簡(jiǎn)單的SLD 語(yǔ)句定義,它們分別由 標(biāo)簽完成渲染,并可以使用子標(biāo)簽等指定圖像及定位、虛線參數(shù)及拐角類型、填充顏色及透明度等屬性。

2)特殊點(diǎn)符號(hào)。特殊點(diǎn)符號(hào)是指將特定圖像渲染在某一點(diǎn)狀目標(biāo)上或其周圍的符號(hào)類型。S-52 主要通過(guò)符號(hào)樣式、錨點(diǎn)坐標(biāo)等屬性描述對(duì)其進(jìn)行定義。可使用SLD 中的及其子標(biāo)簽通過(guò)加載 或 者 標(biāo) 簽 設(shè) 定 的 資源對(duì)象將符號(hào)渲染在指定位置,并可設(shè)置透明度、大小、旋轉(zhuǎn)角、錨點(diǎn)、偏移量以調(diào)整其顯示細(xì)節(jié)。

3)復(fù)雜線型符號(hào)。復(fù)雜線型符號(hào)是指用多個(gè)不同或同一圖元等間距沿線狀目標(biāo)渲染的符號(hào)類型。S-52主要通過(guò)符號(hào)樣式、線寬等屬性描述對(duì)其進(jìn)行定義??墒褂肧LD 中的多個(gè)標(biāo)簽完成渲染。其子標(biāo)簽通過(guò)標(biāo)簽指定標(biāo)簽加載圖元;通過(guò)標(biāo)簽設(shè)置起始顯示位置及顯示間隔。其中,使用設(shè)置當(dāng)前圖元寬度與該圖元渲染間隔寬度;使用設(shè)定當(dāng)前圖元的左偏移量大小。例如,ACHARES51符號(hào)由兩種圖元組合而成,其渲染效果見(jiàn)圖2。

圖2 復(fù)雜線型渲染對(duì)比(比例尺1∶25 000)Fig.2 Comparison of Complex Linestyles Rendering(Scale 1∶25 000)

4)復(fù)雜面狀符號(hào)。復(fù)雜面狀符號(hào)指邊界線是復(fù)雜線型或者需要填充點(diǎn)符號(hào)的符號(hào)類型。S-52主要通過(guò)圖元樣式、填充規(guī)則等屬性描述對(duì)其進(jìn)行定義??墒褂肧LD 中的標(biāo)簽填充面狀符號(hào),此時(shí)點(diǎn)狀符號(hào)會(huì)被渲染至中心點(diǎn),通過(guò)標(biāo)簽設(shè)置圖片的偏移量;使用SLD中的標(biāo)簽渲染其邊界。例如,ENTRES51 符號(hào)由兩種圖元疊加的復(fù)雜線型符號(hào)和一個(gè)中心點(diǎn)符號(hào)疊加而成,其渲染效果見(jiàn)圖3。

圖3 復(fù)雜面型渲染對(duì)比(比例尺1∶50 000)Fig.3 Comparison of Complex Area Rendering(Scale 1∶50 000)

5)屬性依賴渲染。屬性依賴渲染是指各種符號(hào)類型需要根據(jù)物標(biāo)具體的屬性值指定不同渲染規(guī)則的渲染模式。在SLD 中控制符號(hào)渲染方式的所有標(biāo)簽需放置于一個(gè)標(biāo)簽下,標(biāo)簽可以指定標(biāo)簽,利用OGC 提供的3 種類型操作(空間操作、比較操作、邏輯操作)實(shí)現(xiàn)條件控制??蓛H渲染滿足條件的目標(biāo),因此,通過(guò)設(shè)定多個(gè)不同的標(biāo)簽,可實(shí)現(xiàn)按照屬性值渲染的目的。面狀水深渲染結(jié)果見(jiàn)圖4。

圖4 面狀水深渲染結(jié)果對(duì)比(比例尺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)算通過(guò)標(biāo)簽

實(shí)現(xiàn),功能函數(shù)使用標(biāo)簽實(shí)現(xiàn)。復(fù)雜的注記通常需要用到唯一的控制函數(shù)“if_then_else”,該函數(shù)能夠并列與互相嵌套。使用標(biāo)簽調(diào)用屬性表中數(shù)據(jù),利用標(biāo)簽渲染注記,設(shè)置字體、偏移量、標(biāo)簽等多種屬性,在其子標(biāo)簽