曾新勵(lì) 廖靖
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):DOI:10.16661/j.cnki.1672-3791.2312-5042-5345
通信作者:曾新勵(lì)(1991—),男,碩士,工程師,?研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)。E-mail:1361116508@qq.com。
摘??要:WebGIS是互聯(lián)網(wǎng)環(huán)境下存儲(chǔ)、管理、分析和發(fā)布出版空間信息數(shù)據(jù)的分布式計(jì)算機(jī)應(yīng)用系統(tǒng)。首先在分析WebGIS服務(wù)端的基礎(chǔ)上,基于GeoServer對(duì)外發(fā)布離線瓦片與矢量圖層地圖服務(wù),然后設(shè)計(jì)并構(gòu)建了基于OpenLayers的WebGIS客戶(hù)端,客戶(hù)端調(diào)用地圖服務(wù)分別加載相應(yīng)URL地址返回的圖層影像數(shù)據(jù)進(jìn)行圖層疊加,最后通過(guò)解析航空器ADSB實(shí)時(shí)位置信息數(shù)據(jù),將航班信息通過(guò)WebSocket的方式主動(dòng)推送到客戶(hù)端,客戶(hù)端在圖層上顯示實(shí)時(shí)航班動(dòng)態(tài),能直觀地顯示出進(jìn)出機(jī)場(chǎng)飛行中的航班信息。此方案開(kāi)發(fā)的WebGIS服務(wù)平臺(tái)具有良好的可擴(kuò)展性,結(jié)構(gòu)層次清晰,提高了開(kāi)發(fā)效率,為開(kāi)源組件實(shí)現(xiàn)WebGIS空間應(yīng)用研究提供了新的思路,可運(yùn)用于智慧機(jī)場(chǎng)建設(shè)等領(lǐng)域。
關(guān)鍵詞:GeoServer ?OpenLayers??WebGIS客戶(hù)端??網(wǎng)絡(luò)地圖服務(wù)
中圖分類(lèi)號(hào):P208;TP311.52
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,機(jī)場(chǎng)對(duì)地理信息系統(tǒng)的需求不斷增加,地理信息系統(tǒng)(Geographic Information System, GIS)為航空信息管理提供基礎(chǔ)數(shù)據(jù),利用網(wǎng)絡(luò)傳輸協(xié)議來(lái)存儲(chǔ)、管理、分析和發(fā)布出版空間信息數(shù)據(jù)供用戶(hù)檢索和分析,為機(jī)場(chǎng)運(yùn)營(yíng)和維護(hù)決策方面提供有效的數(shù)據(jù)支撐,是智慧機(jī)場(chǎng)建設(shè)發(fā)展的必然趨勢(shì)。WebGIS是利用Web技術(shù)和GIS技術(shù)的結(jié)合以擴(kuò)展和完善地理信息系統(tǒng)的一項(xiàng)技術(shù),基于網(wǎng)絡(luò)的B/S架構(gòu)在服務(wù)端和客戶(hù)端之間通過(guò)互聯(lián)網(wǎng)進(jìn)行信息交換。目前流行的開(kāi)源WebGIS軟件打破了傳統(tǒng)商業(yè)GIS軟件高價(jià)格對(duì)利用和發(fā)布空間數(shù)據(jù)的限制,其開(kāi)放源代碼使軟件平臺(tái)具有更高的開(kāi)放性和可擴(kuò)展性,更低的開(kāi)發(fā)和維護(hù)成本,用戶(hù)可以根據(jù)需要靈活配置。
1 關(guān)鍵技術(shù)分析
1.1 OGC相關(guān)標(biāo)準(zhǔn)
OGC是英文Open?Geospatial Consortium開(kāi)放地理空間信息協(xié)會(huì)的簡(jiǎn)稱(chēng),主要研究地理信息服務(wù)、內(nèi)容、信息處理以及數(shù)據(jù)共享[1]。OGC組織各成員單位制定了開(kāi)放式地理數(shù)據(jù)的互操作規(guī)范OpenGIS,依照該規(guī)范應(yīng)用開(kāi)發(fā)者能夠在單一的環(huán)境和工作流中使用分布在網(wǎng)絡(luò)上的任何地理數(shù)據(jù),構(gòu)建本地化的地理信息服務(wù)軟件系統(tǒng)。OGC的規(guī)范中比較重要的和WebGIS中用的最多的服務(wù)規(guī)范有WMS(Web?Map Service)、WFS(Web?Feature Service)和WMTS(Web?Map Tile Service)。
1.2 WMTS切片地圖服務(wù)
WMTS切片地圖服務(wù)主要是把地圖以若干個(gè)固定比例尺寸圖塊的形式提供服務(wù)。切片地圖即地圖瓦片技術(shù),將一定坐標(biāo)范圍投影后的地圖,在不同分辨率層次下按照固定比例切割成若干行列的正方形圖片。切割后的每張圖片也叫作Tile瓦片,瓦片模型表示的地圖范圍相同,從瓦片模型頂層到底層,分辨率越來(lái)越高,瓦片按指定格式預(yù)先緩存在文件系統(tǒng)或數(shù)據(jù)庫(kù)中,形成金字塔模型的靜態(tài)地圖緩存。WMTS規(guī)范定義了兩個(gè)基礎(chǔ)性操作接口:GetCapabilities(請(qǐng)求地圖服務(wù)相關(guān)元數(shù)據(jù)XML文檔)、GetTile(根據(jù)參數(shù)請(qǐng)求取得png、jpeg等格式的瓦片圖塊),提供了一種預(yù)定義圖塊的形式進(jìn)行數(shù)字地圖服務(wù)發(fā)布的標(biāo)準(zhǔn)化方法[2]。
1.3 GeoServer
GeoServer是標(biāo)準(zhǔn)J2EE架構(gòu)的開(kāi)源WebGIS服務(wù)器[3],全面遵循OGC網(wǎng)絡(luò)地圖服務(wù)和網(wǎng)絡(luò)要素服務(wù)規(guī)范,利用GeoServer可以方便地將地理位置信息數(shù)據(jù)轉(zhuǎn)換為圖層影像發(fā)布地圖。GeoServer支持多種數(shù)據(jù)源,支持上百種投影方式,能夠?qū)⒕W(wǎng)絡(luò)地圖輸出為png、jpg、gif、pbf等多種格式資源,并且還支持Google Maps和Google Earth,地圖影像疊加后能做出生動(dòng)的應(yīng)用[4]。
1.4 OpenLayers
2?基于GeoServer和OpenLayers的WebGIS設(shè)計(jì)
2.1 總體結(jié)構(gòu)
WebGIS地理信息服務(wù)系統(tǒng)涉及客戶(hù)端顯示、地圖服務(wù)器、空間數(shù)據(jù)存儲(chǔ)表示,在邏輯上按照層次抽象成三層結(jié)構(gòu)進(jìn)行開(kāi)發(fā),包括與用戶(hù)交互的視圖層、提供數(shù)據(jù)的中間層和空間數(shù)據(jù)存儲(chǔ)層。視圖層體現(xiàn)為WebGIS客戶(hù)端,選用OpenLayers作為地圖可視化渲染引擎作為前端用戶(hù)交互平臺(tái),視圖層響應(yīng)用戶(hù)請(qǐng)求,通過(guò)HTTP連接到中間層。中間層體現(xiàn)為WebGIS服務(wù)端,根據(jù)請(qǐng)求類(lèi)型分別調(diào)用提供空間數(shù)據(jù)的GeoServer地圖服務(wù)器和提供業(yè)務(wù)數(shù)據(jù)處理的Web服務(wù)器,GeoServer服務(wù)器將空間數(shù)據(jù)存儲(chǔ)層中的空間信息以圖層形式返回視圖層,與此同時(shí)Web服務(wù)器加載帶有地理信息屬性的業(yè)務(wù)數(shù)據(jù)返回視圖層,經(jīng)OpenLayers疊加優(yōu)化后渲染到Web客戶(hù)端實(shí)現(xiàn)對(duì)空間數(shù)據(jù)的顯示和用戶(hù)交互。
2.2 WebGIS服務(wù)端
服務(wù)端的搭建選用開(kāi)源的Tomcat服務(wù)器,將GeoServer和開(kāi)發(fā)的Web項(xiàng)目都部署到Tomcat下。要使用GeoServer發(fā)布地圖服務(wù)首先要登錄其提供的Web管理界面進(jìn)行配置,主要包括工作空間、數(shù)據(jù)存儲(chǔ)、圖層、圖層樣式和圖層組,按照OGC開(kāi)放地理信息標(biāo)準(zhǔn)完成空間數(shù)據(jù)的編輯和發(fā)布。一個(gè)工作空間下可以包含多個(gè)數(shù)據(jù)存儲(chǔ),各個(gè)數(shù)據(jù)存儲(chǔ)有獨(dú)立的字符集編碼。GeoWebCache作為GeoServer中集成好的一個(gè)模塊,可以用于矢量地圖切圖,也可用于緩存和發(fā)布預(yù)先切好或下載好的目標(biāo)區(qū)域瓦片數(shù)據(jù)。將已經(jīng)切好的瓦片數(shù)據(jù)存儲(chǔ)在服務(wù)器上,當(dāng)客戶(hù)端請(qǐng)求一張新底圖和瓦片時(shí),GeoWebCache將攔截這些調(diào)用,返回預(yù)先緩存過(guò)的地圖瓦片,提高地圖加載速度,實(shí)現(xiàn)更好的用戶(hù)瀏覽效果,同時(shí)也便于對(duì)較大數(shù)據(jù)量的地圖切片緩存進(jìn)行移植復(fù)用和私有化部署[7]。
2.3 電子地圖數(shù)據(jù)制作
通常機(jī)場(chǎng)系統(tǒng)位于內(nèi)部局域網(wǎng),不具備連接外網(wǎng)的能力,而Google Maps需要持續(xù)連接公網(wǎng)才能獲得實(shí)時(shí)地圖數(shù)據(jù),因此有必要建立本地離線地圖服務(wù)。使用電子地圖下載工具將已經(jīng)切好的不同分辨率層級(jí)的目標(biāo)區(qū)域瓦片數(shù)據(jù)存儲(chǔ)在服務(wù)器上,使用GeoWebCache對(duì)外發(fā)布提供服務(wù)。
機(jī)場(chǎng)位于遠(yuǎn)離城市地區(qū),離線地圖不具備較高的場(chǎng)面覆蓋精度。因此機(jī)場(chǎng)地圖使用工程項(xiàng)目DWG格式的CAD設(shè)計(jì)文件經(jīng)過(guò)ArcMap格式轉(zhuǎn)換與矢量配圖,形成Shapefile格式的點(diǎn)、線、面的矢量數(shù)據(jù),配圖后對(duì)效果進(jìn)行檢查確保經(jīng)緯度無(wú)偏移。使用GeoServer發(fā)布本地文件中Shapefile格式的矢量數(shù)據(jù),將其添加到數(shù)據(jù)存儲(chǔ),新建圖層并對(duì)待發(fā)布圖層使用uDig軟件進(jìn)行sld樣式渲染,并導(dǎo)出sld樣式發(fā)布到GeoServer使得地圖更美觀鮮明,之后即可完成電子地圖的發(fā)布并對(duì)外提供WMS服務(wù)。
本文選用Google離線地圖作為客戶(hù)端加載的地圖底圖,同時(shí)將機(jī)場(chǎng)地圖動(dòng)態(tài)添加為WMS服務(wù)作為疊加層,與全球數(shù)據(jù)統(tǒng)一顯示,以增強(qiáng)用戶(hù)體驗(yàn)。
2.4 WebGIS客戶(hù)端
客戶(hù)端選用OpenLayers作為WebGIS地圖顯示引擎。OpenLayers提供了Map類(lèi)作為網(wǎng)頁(yè)中動(dòng)態(tài)地圖展示的一個(gè)容器,Map類(lèi)提供了地圖圖層、縮放比例、投影信息、地圖顯示范圍等多個(gè)屬性的設(shè)置,可以向Map中添加Layer圖層和Control控件。Layer類(lèi)用于描述圖層數(shù)據(jù)源及格式信息,Control類(lèi)提供各種控件實(shí)現(xiàn)地圖的縮放、查詢(xún)、編輯等功能,F(xiàn)eature類(lèi)用于在Layer圖層中添加圖形要素信息。
在國(guó)際上,每個(gè)坐標(biāo)系統(tǒng)都會(huì)被分配一個(gè) EPSG 代碼,WGS84 的代碼為EPSG:4326,由 Google提出的Web墨卡托代碼為EPSG:3857,Google Maps數(shù)據(jù)基于Web墨卡托投影。OpenLayers支持多種地圖數(shù)據(jù)源類(lèi)型,支持常用的三維WGS84經(jīng)緯度坐標(biāo)數(shù)據(jù)到二維平面Web墨卡托坐標(biāo)的自動(dòng)投影轉(zhuǎn)換[8]。
下面以O(shè)penLayers調(diào)用GeoServer發(fā)布的WMS地圖服務(wù)和Google 離線瓦片數(shù)據(jù)為例說(shuō)明如何在客戶(hù)端實(shí)現(xiàn)地圖數(shù)據(jù)和航班動(dòng)態(tài)數(shù)據(jù)的加載。主要用到OpenLayers的Map類(lèi)、Layer類(lèi)、Source類(lèi)和Feature類(lèi),在瀏覽器請(qǐng)求頁(yè)面時(shí)各Layers圖層分別加載相應(yīng)URL地址返回的圖層影像數(shù)據(jù)進(jìn)行疊加渲染,最底層圖層實(shí)現(xiàn)離線瓦片數(shù)據(jù)的讀取和顯示,底層圖層上疊加顯示機(jī)場(chǎng)矢量地圖,最上層Source圖層用于表示地圖上航班位置信息,在Source圖層中通過(guò)添加Feature對(duì)象表示航班位置信息。
系統(tǒng)后臺(tái)把每架航班定義為一個(gè)Flight類(lèi)對(duì)象,對(duì)象中包含航班呼號(hào)、經(jīng)度、緯度、高度、飛行速度、角度、始發(fā)站、目的站、24位地址碼等屬性,通過(guò)解析航空器ADSB實(shí)時(shí)位置信息數(shù)據(jù),將每架航班信息封裝到Flight對(duì)象中通過(guò)WebSocket的方式主動(dòng)推送到客戶(hù)端。OpenLayers客戶(hù)端結(jié)合從后臺(tái)Web服務(wù)器獲取的航空器ADSB實(shí)時(shí)位置信息數(shù)據(jù),將瀏覽器內(nèi)存中的航班對(duì)象在頁(yè)面中動(dòng)態(tài)更新或創(chuàng)建成新的Feature類(lèi),設(shè)置好圖標(biāo)、經(jīng)緯度和角度參數(shù)添加到Source圖層,F(xiàn)eature對(duì)象載入地圖圖層上后客戶(hù)端呈現(xiàn)出實(shí)時(shí)航班動(dòng)態(tài)地圖,直觀地顯示出進(jìn)出機(jī)場(chǎng)飛行中的航班信息。
3?結(jié)語(yǔ)
本文分析了以開(kāi)源的GeoServer作為地理信息數(shù)據(jù)服務(wù)的發(fā)布端,以O(shè)penLayers作為客戶(hù)端地圖顯示引擎,構(gòu)建WebGIS應(yīng)用程序開(kāi)發(fā)框架的整體過(guò)程??蚣軐?shí)現(xiàn)了基本的WebGIS功能,并結(jié)合航空器ADSB數(shù)據(jù)實(shí)例,實(shí)現(xiàn)了航空器實(shí)時(shí)位置信息的監(jiān)視功能,可以直觀地了解到機(jī)場(chǎng)空域此刻正在執(zhí)行飛行的航班動(dòng)態(tài),將難以用文字表述的信息呈現(xiàn)在動(dòng)態(tài)地圖界面,達(dá)到了良好的用戶(hù)體驗(yàn)效果,為機(jī)場(chǎng)生產(chǎn)運(yùn)營(yíng)保障提供非常有價(jià)值的信息。隨著開(kāi)源GIS功能的不斷完善,WebGIS將在地理信息展示、共享和利用上發(fā)揮更重要的作用,用戶(hù)可以結(jié)合自身需求融入更多地理信息資源,實(shí)現(xiàn)功能更強(qiáng)大的WebGIS平臺(tái)。
參考文獻(xiàn)
[1] 木嘯林,牛坤龍,蔡世榮,等.開(kāi)源網(wǎng)絡(luò)地理信息系統(tǒng)的技術(shù)體系與研究進(jìn)展[J].計(jì)算機(jī)工程與應(yīng)用,2022,58(15):37-51.
[2] 代林海,秦榮波.Geoserver的WMS服務(wù)分析與應(yīng)用[J].測(cè)繪,2021,44(2):67-70,78.
[3] 金巖.基于GIS的數(shù)據(jù)展示平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2016.
[4] 吳瑞龍,何華貴,張鵬程,等.基于GeoServer REST的矢量地圖服務(wù)自動(dòng)發(fā)布研究與應(yīng)用[J].測(cè)繪地理信息,2021,46(S1):32-35.
[5] 吳國(guó)超,王豹,葛鋆添.基于GeoServer的矢量數(shù)據(jù)自動(dòng)發(fā)布與在線配圖方案的研究與實(shí)現(xiàn)[J].電子元器件與信息技術(shù),2022,6(10):9-12.
[6] 劉旭,趙錚,陳建華,等.一種面向空間分析的開(kāi)源GeoServer服務(wù)自動(dòng)發(fā)布與切片方法[J].物探化探計(jì)算技術(shù),2022,44(1):110-116.
[7] 張濤.基于切片技術(shù)的電子地圖制作與發(fā)布[J].科技資訊,2018,16(17):7-8.
[8] 胡振彪,趙軍,韓磊,等.矢量電子地圖瓦片制作性能評(píng)估與應(yīng)用[J].測(cè)繪科學(xué),2020,45(2):138-144,165.