• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      S-57海圖的SLD符號(hào)渲染研究

      2016-12-26 11:58:18劉天堯趙宇鵬萬(wàn)佳馨劉善偉
      地理空間信息 2016年4期
      關(guān)鍵詞:海圖水深圖層

      劉天堯,趙宇鵬,萬(wàn)佳馨,劉善偉*

      (1.中國(guó)石油大學(xué)(華東),山東 青島 266580;2.中海石油環(huán)保服務(wù)(天津)有限公司博士后科研工作站,山東 青島 266061;3.東華理工大學(xué),江西 南昌 330013)

      S-57海圖的SLD符號(hào)渲染研究

      劉天堯1,趙宇鵬2,萬(wàn)佳馨3,劉善偉1*

      (1.中國(guó)石油大學(xué)(華東),山東 青島 266580;2.中海石油環(huán)保服務(wù)(天津)有限公司博士后科研工作站,山東 青島 266061;3.東華理工大學(xué),江西 南昌 330013)

      隨著海洋事業(yè)的發(fā)展,以S-57海圖為底圖的海洋WebGIS應(yīng)用需求日益增多,但由于S-57海圖數(shù)據(jù)格式和海圖符號(hào)規(guī)則的特殊性,缺乏簡(jiǎn)單通用的WebGIS符號(hào)化渲染方法。分析S-57海圖符號(hào)的渲染復(fù)雜度,利用SLD進(jìn)行海圖符號(hào)化渲染,以多個(gè)典型海圖符號(hào)為例,探討海圖符號(hào)的屬性值運(yùn)算渲染、復(fù)雜線(xiàn)型渲染、依屬性渲染等相關(guān)問(wèn)題,并給出對(duì)應(yīng)的SLD渲染方法。通過(guò)實(shí)驗(yàn)結(jié)果對(duì)比,表明SLD可以滿(mǎn)足S-57海圖WebGIS通用符號(hào)化渲染的需求,并且擁有較好的渲染效果。

      SLD;S-57海圖;WebGIS;符號(hào)化

      目前,海洋WebGIS系統(tǒng)需求日益增長(zhǎng),AIS船訊信息系統(tǒng)[1]、港口貨物調(diào)配分析系統(tǒng)、海洋溢油應(yīng)急系統(tǒng)[2]等相繼建立起來(lái)。S-57海圖是重要的數(shù)據(jù)源,但在數(shù)據(jù)結(jié)構(gòu)、符號(hào)表示和渲染規(guī)則上與陸地地形圖差別顯著[3],傳統(tǒng)渲染方式在經(jīng)濟(jì)性、可擴(kuò)展性、通用性等方面存在諸多不足,因此,建立一種簡(jiǎn)單通用且適合于WebGIS系統(tǒng)的S-57海圖渲染方法,對(duì)于海洋GIS的應(yīng)用和發(fā)展具有重要意義。在WebGIS開(kāi)發(fā)中對(duì)S-57海圖的調(diào)用一般采用2種方式:一是由專(zhuān)用海圖繪制軟件渲染S-57海圖生成柵格圖像金字塔切片進(jìn)行調(diào)用[4],但專(zhuān)用海圖渲染軟件和服務(wù)一般價(jià)格昂貴,而且柵格切片在海圖矢量拓?fù)潢P(guān)系操作或運(yùn)算上會(huì)表現(xiàn)出明顯的局限性;二是在瀏覽器端編寫(xiě)符號(hào)渲染規(guī)則進(jìn)行實(shí)時(shí)渲染[5],雖然能夠保留S-57海圖的矢量性,但由于海圖符號(hào)規(guī)則異常復(fù)雜,會(huì)給瀏覽器帶來(lái)沉重的負(fù)擔(dān),而且通用性不強(qiáng)。作為GIS領(lǐng)域中一種重要的GIS符號(hào)共享方法[6],OGC(open GIS consortium)的SLD(Styled Layer Descriptor)以其豐富的擴(kuò)展性和良好的開(kāi)放性[7]在專(zhuān)題圖的繪制[8]、三維城市渲染[9]、SLD標(biāo)準(zhǔn)改進(jìn)等多方面擁有眾多研究成果。而且SLD最初提出時(shí)就是為了描繪WMS(Web Map Service)、WFS(Web Feature Service) 和 WCS(Web Coverage Service)等WebGIS服務(wù),在WebGIS符號(hào)渲染方面有著其他渲染方式無(wú)法比擬的優(yōu)勢(shì)。作為XML的擴(kuò)展,SLD具有很強(qiáng)的通用性,既可以在服務(wù)器端進(jìn)行編寫(xiě),對(duì)S-57海圖進(jìn)行渲染生成切片,也可以在客戶(hù)端進(jìn)行編寫(xiě)并傳回服務(wù)器端,還可以直接由客戶(hù)端根據(jù)SLD進(jìn)行渲染,多種方式靈活組合能夠有效平衡前后臺(tái)負(fù)載。不僅如此,SLD還擁有豐富的功能函數(shù)、邏輯判斷能力和靈活的語(yǔ)法規(guī)則,非常適合復(fù)雜符號(hào)的渲染工作,是一種通用性好且功能強(qiáng)大的WebGIS渲染方式。

      本文在參考SLD多方面研究的基礎(chǔ)上,嘗試使用SLD進(jìn)行S-57海圖符號(hào)化渲染工作,以多個(gè)典型海圖圖層為例,重點(diǎn)論述屬性值運(yùn)算渲染、復(fù)雜線(xiàn)型渲染、依屬性渲染等S-57海圖渲染關(guān)鍵問(wèn)題,對(duì)S-57海圖的SLD渲染進(jìn)行適用性評(píng)價(jià),給出不同類(lèi)型海圖圖層對(duì)應(yīng)的SLD渲染方法。

      1 實(shí)驗(yàn)數(shù)據(jù)及軟件

      本文采用的S-57海圖數(shù)據(jù)是由中國(guó)電子海圖發(fā)行中心發(fā)行的中國(guó)近海及周邊海域的部分S-57海圖,選用的海圖涉及多種比例尺,海域位置分散,具有代表性,具體圖號(hào)及描述如表1所示。

      表1 S-57海圖數(shù)據(jù)列表

      實(shí)驗(yàn)軟件主要有3個(gè):GDAL/OGR1.9.2、GeoServer2.5和eLaneViewer2.0。GDAL/OGR是著名的GIS開(kāi)源庫(kù),支持眾多矢量、柵格數(shù)據(jù)的格式轉(zhuǎn)換,可以直接解析S-57海圖,并將其轉(zhuǎn)換成shpfile格式;GeoServer是著名的開(kāi)源WMS、WFS地圖服務(wù)發(fā)布軟件,以SLD作為符號(hào)渲染方式,對(duì)SLD各功能特性具有良好的支持。eLaneViewer是一款免費(fèi)的S-57/S-52海圖瀏覽器,支持S-57海圖及海圖更新數(shù)據(jù),顯示符合IHO S-52標(biāo)準(zhǔn)。

      本文使用GDAL/OGR進(jìn)行數(shù)據(jù)預(yù)處理,將S-57海圖轉(zhuǎn)化為GIS通用格式shpfile數(shù)據(jù),利用GeoServer加載轉(zhuǎn)換后的海圖數(shù)據(jù),編寫(xiě)對(duì)應(yīng)海圖圖層的SLD渲染樣式,發(fā)布WMS服務(wù)并進(jìn)行預(yù)覽,將顯示結(jié)果與eLaneViewer直接加載S-57數(shù)據(jù)的顯示效果進(jìn)行對(duì)比分析。

      2 海圖符號(hào)渲染分析

      2.1 屬性值運(yùn)算渲染

      水深點(diǎn)圖層(SOUNDG_point)是S-57海圖中計(jì)算能力需求最高的圖層之一。本文以此圖層為例,檢驗(yàn)SLD的計(jì)算能力是否滿(mǎn)足海圖渲染需求。具體渲染規(guī)則如下:當(dāng)水深值小于或等于30 m時(shí),為該字段整數(shù)部分在左上角、小數(shù)部分在左下角所構(gòu)成的圖形,如果小數(shù)部分為0,則小數(shù)部分不顯示;當(dāng)水深值大于30 m時(shí),只顯示整數(shù)部分。

      水深點(diǎn)圖層渲染的關(guān)鍵問(wèn)題是如何將水深字段中的屬性值的整數(shù)與小數(shù)部分拆離,這需要屬性值計(jì)算的功能,而SLD語(yǔ)言本身并沒(méi)有定義該功能,我們可以通過(guò)加入ogc擴(kuò)展引入四則運(yùn)算功能和功能函數(shù)。ogc擴(kuò)展屬于SLD官方擴(kuò)展,SLD解析器默認(rèn)進(jìn)行支持,可以滿(mǎn)足絕大部分計(jì)算需求。

      對(duì)于水深點(diǎn)的整數(shù)和小數(shù)部分,由于位置不同,需要分別構(gòu)建文字符號(hào)標(biāo)簽〈TextSymbolizer〉,真正的賦值工作需要在〈Label〉標(biāo)簽中完成,因此計(jì)算功能也需要在此標(biāo)簽中進(jìn)行。

      整數(shù)部分計(jì)算主要使用2個(gè)功能函數(shù),將字段DEPTH屬性值利用功能函數(shù)floor(向下取整)得到Double型的整數(shù)部分,再用功能函數(shù)parseInt(Integer強(qiáng)制類(lèi)型轉(zhuǎn)換)將其轉(zhuǎn)化為Integer型,以避免出現(xiàn)小數(shù)點(diǎn),即可得到整數(shù)部分。

      小數(shù)部分使用了Mul(乘法)和Sub(減法)四則運(yùn)算,首先DEPTH與整數(shù)部分相減獲得實(shí)際小數(shù)值,然后將小數(shù)乘以10獲得小數(shù)部分?jǐn)?shù)值(floor型),再利用功能函數(shù)round(四舍五入,返回值為Integer,一定程度可以替代功能函數(shù)parseInt)將其轉(zhuǎn)化為Integer型,即可獲得整數(shù)部分。

      對(duì)于小數(shù)部分的偏移,可以為其嵌套〈sld:DisplacementX〉和〈sld:DisplacementY〉標(biāo)簽分別對(duì)X方向和Y方向進(jìn)行按像素偏移。水深值在大于30 m和小于30 m時(shí)渲染規(guī)則并不相同,但涉及到的是依屬性值渲染相關(guān)內(nèi)容(如圖1),將實(shí)際渲染結(jié)果與海圖軟件渲染結(jié)果進(jìn)行對(duì)比可以看出,擁有靈活嵌套的、具備四則運(yùn)算能力和豐富功能函數(shù)的SLD,可以滿(mǎn)足S-57海圖計(jì)算要求最高的水深圖層計(jì)算需求。

      圖1 水深點(diǎn)渲染效果對(duì)比

      海圖屬性值運(yùn)算方法總結(jié)如下:同一字段屬性值的整數(shù)與小數(shù)顯示規(guī)則不同時(shí),可利用SLD符號(hào)可疊加特性構(gòu)建2個(gè)符號(hào)層,分別進(jìn)行取整數(shù)和取小數(shù)運(yùn)算,再進(jìn)行相關(guān)樣式規(guī)則的編寫(xiě);同一符號(hào)層中可利用四則運(yùn)算和數(shù)學(xué)功能函數(shù)進(jìn)行嵌套組合,完成運(yùn)算需求。通過(guò)對(duì)其他需要屬性運(yùn)算的S-57海圖圖層進(jìn)行實(shí)際渲染檢驗(yàn)表明,以上運(yùn)算方法對(duì)S-57海圖渲染規(guī)則具有良好的適用性。

      2.2 復(fù)雜線(xiàn)型渲染

      S-57海圖中很多線(xiàn)圖層和面圖層的邊線(xiàn)是由2種或3種圖形按一定規(guī)則構(gòu)成的,線(xiàn)型結(jié)構(gòu)比較復(fù)雜。海底電纜線(xiàn)圖層(CBLSUB_line)是一個(gè)典型的由3種圖形構(gòu)成的線(xiàn)圖層,其海圖軟件渲染效果如圖3c所示。

      SLD可以利用〈GraphicStroke〉標(biāo)簽定義位圖格式的線(xiàn)型,但只能使用單一圖片,如果圖片沿線(xiàn)條路徑方向上的長(zhǎng)度過(guò)長(zhǎng),則會(huì)造成直線(xiàn)在彎曲處有明顯斷裂,如圖3a所示,電纜線(xiàn)單張節(jié)點(diǎn)圖片長(zhǎng)達(dá)85 px,在彎曲處按切線(xiàn)進(jìn)行渲染,造成線(xiàn)段不連貫。為了保證線(xiàn)型的平滑連貫,本文將大節(jié)點(diǎn)拆分,將每個(gè)小圖形皆當(dāng)作一個(gè)小節(jié)點(diǎn),然后利用SLD符號(hào)層的可疊加性按插空的方式進(jìn)行疊加。

      對(duì)海底電纜線(xiàn)圖層而言,一個(gè)大節(jié)點(diǎn)中擁有5個(gè)小節(jié)點(diǎn),因此將其分為5條線(xiàn)的疊加,方法如下:對(duì)于第n條線(xiàn),通過(guò)〈OnlineResource〉引入該線(xiàn)的節(jié)點(diǎn)圖片,利用〈CssParameter name="stroke-dasharray"〉XnLXn〈 CssParameter 〉和 〈CssParameter name="strokedashoffset"〉Yn〈 CssParameter 〉標(biāo)簽控制筆繪長(zhǎng)度和偏移量,其中Xn為當(dāng)前小節(jié)點(diǎn)圖片的像素長(zhǎng)度,L為大節(jié)點(diǎn)像素長(zhǎng)度,Yn為第n個(gè)小節(jié)點(diǎn)筆觸起點(diǎn)相對(duì)大節(jié)點(diǎn)末端的左偏移量,如圖2所示。

      圖2 SLD多線(xiàn)疊加示意圖

      按照上述方法構(gòu)建5個(gè)〈LineSymbolizer〉,在同一規(guī)則〈Rule〉中進(jìn)行疊加,效果如圖3b所示。由渲染效果對(duì)比可以看出,使用SLD 5線(xiàn)疊加方式渲染的電纜線(xiàn)自然平滑,可以滿(mǎn)足S-57海圖電纜線(xiàn)圖層的渲染需求。

      圖3 電纜線(xiàn)渲染效果對(duì)比

      復(fù)雜線(xiàn)型渲染方法如下:首先將線(xiàn)要素進(jìn)行節(jié)點(diǎn)劃分,找出最大重復(fù)節(jié)點(diǎn),判斷節(jié)點(diǎn)長(zhǎng)度是否大于20 像素。如果小于20像素,則進(jìn)行單線(xiàn)渲染,如果大于20像素則將該大節(jié)點(diǎn)拆分為n個(gè)小節(jié)點(diǎn)(n為大節(jié)點(diǎn)所包含的小節(jié)點(diǎn)個(gè)數(shù)),利用n線(xiàn)疊加的方式進(jìn)行渲染。大量實(shí)驗(yàn)表明,該方法對(duì)S-57海圖的SLD渲染具有普適性。

      2.3 依屬性值渲染

      S-57海圖中許多圖層的渲染需要依照某一個(gè)或幾個(gè)字段的屬性值的取值范圍分別進(jìn)行對(duì)應(yīng)的樣式渲染。以深度范圍面圖層(DEPARE_polygon)為例,有2個(gè)字段DRVAL1和DRVAL2,分別代表該面元素的最大和最小水深,需要根據(jù)水深規(guī)則分別渲染不同的顏色,如表2所示。

      表2 深度范圍圖層渲染規(guī)則

      使用SLD的屬性值過(guò)濾(ogc:Filter)功能、SLD比較運(yùn)算(Comparison Operators)和邏輯運(yùn)算(Logical Operators)功能,可以實(shí)現(xiàn)對(duì)單個(gè)字段或幾個(gè)字段取值的篩選過(guò)濾。例如對(duì)于第一條水深規(guī)則,可以構(gòu)建2個(gè)〈ogc:PropertyIsEqualTo〉(屬性等于)標(biāo)簽,分別構(gòu)建“DRVAL1=1”和“DRVAL2=-5”2個(gè)條件,然后利用〈ogc:And〉(且)標(biāo)簽將2條件進(jìn)行連接,對(duì)于第5條大于等于條件可使用〈ogc:PropertyIsGreaterT hanOrEqualTo〉(屬性大于等于)標(biāo)簽實(shí)現(xiàn)。每一條水深規(guī)則分別用一個(gè)〈Rule〉標(biāo)簽包裹,最后將所有〈Rule〉按順序疊放即可實(shí)現(xiàn)依屬性值渲染,對(duì)比效果如圖4所示。

      圖4 水深范圍渲染效果對(duì)比

      依屬性值渲染方法如下:為每一個(gè)屬性值范圍構(gòu)建一個(gè)規(guī)則標(biāo)簽,分別在每個(gè)規(guī)則標(biāo)簽中利用SLD的過(guò)濾功能和比較運(yùn)算的靈活嵌套來(lái)確定該規(guī)則標(biāo)簽的屬性值范圍,最后將所有規(guī)則標(biāo)簽進(jìn)行疊加。實(shí)驗(yàn)表明,該方法滿(mǎn)足S-57海圖的渲染需要。

      2.4 綜合效果預(yù)覽

      解決了屬性值運(yùn)算渲染、復(fù)雜線(xiàn)型渲染和依屬性值渲染3個(gè)問(wèn)題之后,可以滿(mǎn)足SLD的S-57電子海圖符號(hào)化渲染需要。為了展示SLD海圖渲染的整體效果,圖層渲染后可利用GeoServer將同一海圖文件的圖層合并為一個(gè)圖層組并進(jìn)行切片預(yù)覽。鼠標(biāo)點(diǎn)擊可查詢(xún)海圖要素屬性值,整體效果如圖5所示。

      圖5 GeoServer預(yù)覽效果

      3 結(jié) 語(yǔ)

      針對(duì)S-57海圖在WebGIS符號(hào)化方面缺少簡(jiǎn)單通用的渲染方法的問(wèn)題,提出利用SLD進(jìn)行海圖渲染,并進(jìn)行適用性分析,討論S-57海圖的屬性值運(yùn)算渲染、復(fù)雜線(xiàn)型渲染和依屬性渲染問(wèn)題,提出對(duì)應(yīng)的SLD編寫(xiě)方法。通過(guò)實(shí)際渲染效果對(duì)比分析表明,所給方法可以滿(mǎn)足S-57海圖的渲染需求,并具有良好的渲染效果,為基于S-57海圖的WebGIS符號(hào)渲染提供了一種簡(jiǎn)單通用的解決方法,為基于S-57電子海圖的海洋GIS系統(tǒng)開(kāi)發(fā)提供了底圖基礎(chǔ)。參考文獻(xiàn)

      [1] 徐建設(shè),史保勇.基于電子海圖的船舶航線(xiàn)顯示與監(jiān)控系統(tǒng)設(shè)計(jì)[J].地理空間信息,2008,6(4):46-48

      [2] 廖國(guó)祥,熊德琪,翟偉康,等.基于WebGIS的海上溢油應(yīng)急信息系統(tǒng)的構(gòu)建[J].計(jì)算機(jī)工程,2007,33(12):272-274

      [3] 姜鳳輝,李樹(shù)軍,王臻.現(xiàn)代海圖符號(hào)研究[J].測(cè)繪工程,2010(4):16-18

      [4] 杜國(guó)駿.基于Android的瓦片式電子海圖系統(tǒng)的研究[D].大連:大連海事大學(xué),2013

      [5] 王曉.基于Html5的矢量地圖發(fā)布關(guān)鍵技術(shù)研究[D].南京:南京師范大學(xué),2011

      [6] 陶陶,閭國(guó)年,張書(shū)亮,等.GIS地圖符號(hào)共享研究進(jìn)展與展望[J].中國(guó)圖像圖形學(xué)報(bào),2007,12(8):1 326-1 332

      [7] 周玉科,周成虎,馬廷,等.?dāng)?shù)字地圖要素樣式結(jié)構(gòu)化存儲(chǔ)表達(dá)研究與實(shí)現(xiàn)[J].地理與地理信息科學(xué),2012,28(3):7-10

      [8] Rautenbach V,Coetzee S,Iwaniak A.Orchestrating OGC Web Services to Produce Thematic Maps in a Spatial Information Infrastructure[J].Computers, Environment and Urban Systems, 2013(37):107-120

      [9] Over M,Schilling A,Neubauer S,et al.Generating Webbased 3D City Models from OpenStreetMap:The Current Cituation in Germany[J].Computers, Environment and Urban Systems,2010,34(6):496-507

      P208

      B

      1672-4623(2016)04-0062-03

      10.3969/j.issn.1672-4623.2016.04.021

      劉天堯,碩士,研究方向?yàn)閃ebGIS應(yīng)用與開(kāi)發(fā)。

      2015-01-16。

      項(xiàng)目來(lái)源:工信部海洋工程裝備科研項(xiàng)目(201212)。(*為通訊作者)

      猜你喜歡
      海圖水深圖層
      書(shū)法靜水深流
      河北水利(2022年10期)2022-12-29 11:48:12
      基于水深分段選擇因子的多光譜影像反演水深
      紙海圖AI小改正制作模式探討
      航海(2020年4期)2020-08-17 16:13:40
      少林功夫拳(三)
      少林與太極(2018年9期)2018-09-28 08:37:34
      巧用混合圖層 制作抽象動(dòng)感森林
      點(diǎn)亮兵書(shū)——《籌海圖編》《海防圖論》
      孫子研究(2016年4期)2016-10-20 02:38:06
      電子海圖在內(nèi)河船舶綜合導(dǎo)航系統(tǒng)中的應(yīng)用探討
      圖層法在地理區(qū)域圖讀圖中的應(yīng)用
      GPS RTK技術(shù)在水深測(cè)量中的應(yīng)用
      淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
      河南科技(2014年6期)2014-04-04 08:00:42
      临猗县| 时尚| 陆良县| 三台县| 合肥市| 嘉鱼县| 萝北县| 仪征市| 元阳县| 昌宁县| 盐池县| 南昌县| 太和县| 泰宁县| 绥阳县| 遂平县| 阜南县| 精河县| 阳东县| 黎川县| 滦南县| 昌江| 河池市| 临猗县| 蓬安县| 措美县| 台北市| 盘山县| 广河县| 平陆县| 昔阳县| 林西县| 同仁县| 汾西县| 明水县| 栾川县| 阿荣旗| 三原县| 长子县| 冷水江市| 平邑县|