郝江凌,王德強,李廣儒
(大連海事大學 航海學院,遼寧 大連 116026)
?
基于谷歌地球的船舶動態(tài)監(jiān)控系統(tǒng)的研究與開發(fā)
郝江凌*,王德強,李廣儒
(大連海事大學 航海學院,遼寧 大連 116026)
針對傳統(tǒng)的船舶動態(tài)監(jiān)控系統(tǒng)開發(fā)周期長、成本高的問題,提出一種基于谷歌地球(Google Earth)的開發(fā)方法。分析Google Earth應用程序開發(fā)接口,定義船舶動態(tài)數(shù)據(jù)結(jié)構(gòu);采用KML技術,提出標繪船位和航向的新方法;通過新的動態(tài)數(shù)據(jù)加載方法,解決海上動態(tài)物標實時顯示的問題;給出屏幕坐標到地理坐標的轉(zhuǎn)換公式和流程,為實現(xiàn)信息查詢提供理論基礎。采用這種技術對成山角水域以及營口港的船舶進行監(jiān)控,驗證了方法的可行性和有效性。
船舶動態(tài)監(jiān)控;Google Earth;KML;航行安全
當前廣泛應用的電子海圖都是以IHO S-52和IHO S-57規(guī)范為基礎的矢量海圖和瓦片海圖,采用點、線、面即圖標、線條和顏色填充來表達客觀物體,不具有真實感。對于狹窄水域、內(nèi)河和港口的船舶監(jiān)控,越來越多的用戶需要能夠模擬現(xiàn)實場景的監(jiān)控系統(tǒng)。
綜合國內(nèi)外船舶動態(tài)監(jiān)控系統(tǒng)的研究現(xiàn)狀,其底層的電子海圖平臺采用的開發(fā)技術主要有2種:①基于專業(yè)GIS軟件的二次開發(fā),如ArcGIS Engine、CMap SDK等[1-2];②采用底層源代碼的開發(fā),如VC++、開放圖形程序庫OpenGL等[3-4]。采用這2種方法構(gòu)建的電子海圖平臺,除了系統(tǒng)本身的研發(fā)外,還需要做大量的海圖數(shù)據(jù)工作,開發(fā)周期長,耗費成本高。
將谷歌地球(Google Earth,GE)引入到航運領域,主要基于以下2個原因:①它能夠顯示全球水域以及港口、碼頭等海上場景和設施,為水上物標的監(jiān)控提供了基礎,不需要額外進行地理數(shù)據(jù)的采集和測量;②基于Google Earth平臺的開發(fā)成本低,周期短,可為企業(yè)節(jié)約成本。利用谷歌地球應用程序接口(Google Earth API)和KML搭建船舶動態(tài)監(jiān)控系統(tǒng),為航運中小企業(yè)高效、快速實現(xiàn)虛擬現(xiàn)實的船舶動態(tài)可視化監(jiān)控。
打開Google Earth程序,首先要登錄遠程Google地球服務器。Google Earth會在服務器和本地之間打開一個會話通道,使用IsInitialized()函數(shù)進行注冊和初始化。但要注意的是,在Google Earth初始化之后執(zhí)行業(yè)務代碼之前,需要使用函數(shù)IsOnline()檢測是否注冊成功,否則會導致錯誤[5]。
當用戶觀察Google Earth三維球體時,需要操縱視場照相機(ViewCamera)才能模擬轉(zhuǎn)動頭部和眼球。IApplicationGE接口提供了一個獲得“視場照相機”對象的方法GetCamera。鏡頭的位置稱為視點,通過當前視場的內(nèi)容和觀察角度的反向推算獲得[6]。
在Google Earth中,任何一個物體的空間位置由3個屬性(三維)決定:經(jīng)度(longitude)、緯度(latitude)和高程(altitude)。高程是物體到地球表面的距離,m。
需要注意的是:從視點觀察一個物體時,除了要確定上述3個空間屬性外,還需確定傾角(tilt)和視程(Range),見圖1。
圖1 GE視場解析
傾角是視線方向和物體所在點地球表面的法線之間的角度,值范圍從0°~90°。傾角的值不能為負值,傾角值0°表示從正上方看,值為90°表示沿地平線查看。視程是指從視點到物體位置(由經(jīng)度、緯度和海拔高度決定)的距離,m。
IApplicationGE類是Google Earth COM API的基礎類。該類提供了應用程序訪問Google Earth的接口,通過該類的成員函數(shù),可以獲得其他類的接口[7]。Google Earth COM API 類庫中共有11個類,每個類的功能見表1。
表1 Google Earth COM API 類庫
KML采用面向?qū)ο蟮乃枷?,來描述和存儲地理信息并在GE客戶端中顯示。KML的基本功能主要包括:指定圖標和標簽,以識別地球表面的特定地點;創(chuàng)建不同的照相機位置,為每個用戶要素定義其獨特的觀察視角;使用附在地面或屏幕上的圖像疊加;定義樣式以指定要素外觀等。
船舶動態(tài)監(jiān)控系統(tǒng)涉及的內(nèi)容很多,不同的用戶有不同的業(yè)務需求,但基本功能都是船舶動態(tài)數(shù)據(jù)的組織和空間位置的顯示。船舶動態(tài)數(shù)據(jù)可能來源于AIS、GPS、雷達(ARPA),具有多種不同類型。所以,首先要解決數(shù)據(jù)融合的問題。
將不同數(shù)據(jù)源、不同類型的數(shù)據(jù)添加到KML中統(tǒng)一進行顯示,通常采用的方法是使用
這種方法針對船舶動態(tài)監(jiān)控系統(tǒng)來說太復雜,不直觀。通過對船舶動態(tài)信息的特點進行分析和抽取,將不同數(shù)據(jù)源的數(shù)據(jù)進行融合,形成一個全面、完備的統(tǒng)一數(shù)據(jù)結(jié)構(gòu),建立的船舶動態(tài)信息數(shù)據(jù)結(jié)構(gòu)見表2。
表2 船舶動態(tài)信息數(shù)據(jù)結(jié)構(gòu)
將船舶動態(tài)信息存儲到KML文件中,采用