孫 濤 馬 野 孫明珠 李曉芳
(海軍大連艦艇學(xué)院艦炮系 大連 116018)
無人機(jī)導(dǎo)航信息系統(tǒng)是一種能實(shí)時(shí)顯示無人機(jī)偵查信息,同時(shí)能夠?qū)o人機(jī)進(jìn)行精確定位及導(dǎo)航的助行設(shè)備[1]。其最核心的部分是合理地使用電子導(dǎo)航(海)地圖,確定飛行位置等即時(shí)運(yùn)動(dòng)狀態(tài)信息,直觀準(zhǔn)確地實(shí)現(xiàn)飛行路線的規(guī)劃及修改。在以往的無人機(jī)導(dǎo)航信息系統(tǒng)設(shè)計(jì)中,許多設(shè)計(jì)沒有集成電子導(dǎo)航(海)地圖,不易于判斷規(guī)劃的合理性。在導(dǎo)航任務(wù)規(guī)劃中缺乏對(duì)預(yù)規(guī)劃航線的修改等,使得規(guī)劃可操作性差。針對(duì)當(dāng)前艦載無人機(jī)的發(fā)展現(xiàn)狀及發(fā)展需求,本文主要研究艦載無人機(jī)導(dǎo)航信息系統(tǒng)中的電子海圖解析和顯示功能,即研究如何讀取顯示S-57標(biāo)準(zhǔn)的電子海圖數(shù)據(jù),如何在海圖界面下實(shí)現(xiàn)對(duì)無人機(jī)的航線制定,如何實(shí)現(xiàn)在海圖界面上實(shí)現(xiàn)圖形化的交互操作。通過研究電子海圖技術(shù),為構(gòu)建專業(yè)的艦載無人機(jī)導(dǎo)航信息系統(tǒng)打下技術(shù)基礎(chǔ)。
選擇的編程語言為C#,集成開發(fā)環(huán)境為Microsoft Visual Studio 2008,選擇SuperMap Objects.NET 6R作為開發(fā)電子海圖軟件的核心。如圖1所示為SuperMap Objects.NET 6R功能結(jié)構(gòu)[2],本系統(tǒng)重點(diǎn)使用SuperMap Objects.NET 6R中的數(shù)據(jù)模塊和地圖模塊。
圖1 SuperMap Objects.NET 6R功能結(jié)構(gòu)
根據(jù)艦載無人機(jī)導(dǎo)航信息系統(tǒng)的實(shí)際需求,系統(tǒng)共分為四個(gè)部分:海圖瀏覽、路線規(guī)劃、信息查詢和系統(tǒng)數(shù)據(jù)庫。各部分功能相對(duì)獨(dú)立,又緊密相連,共同組成了艦載無人機(jī)導(dǎo)航信息系統(tǒng)。各部分的相互關(guān)系如圖2所示。
圖2 系統(tǒng)功能模塊之間的關(guān)系
艦載無人機(jī)導(dǎo)航信息系統(tǒng)是功能集成度很高的軟件,在同一個(gè)界面下集成了很多不同的功能。在對(duì)艦載無人機(jī)導(dǎo)航信息系統(tǒng)進(jìn)行操作時(shí),通過身份驗(yàn)證,打開海圖文件,讀取顯示海圖,之后可以根據(jù)實(shí)際情況選擇某一功能。在海圖瀏覽、路線規(guī)劃和信息查詢?nèi)蠊δ苤?,海圖瀏覽是其他兩個(gè)功能的基礎(chǔ)。系統(tǒng)運(yùn)行的流程如圖3所示。
圖3 系統(tǒng)運(yùn)行流程
根據(jù)系統(tǒng)的總體設(shè)計(jì)提出的要求,系統(tǒng)的結(jié)構(gòu)規(guī)模如圖4所示。
圖4 無人機(jī)導(dǎo)航信息系統(tǒng)的結(jié)構(gòu)
論文所使用的SuperMap Object.NET提供了對(duì)smw、sxw、shp、mif、tab等多種地圖數(shù)據(jù)格式的支持,但是不支持S-57數(shù)據(jù)格式。針對(duì)這種情況,使用SuperMap Deskpro把S-57數(shù)據(jù)轉(zhuǎn)換成GIS開發(fā)平臺(tái)可以支持的數(shù)據(jù)格式,以實(shí)現(xiàn)對(duì)電子海圖數(shù)據(jù)的支持。這種方法極大地降低了開發(fā)難度,節(jié)約了開發(fā)成本,但是系統(tǒng)不能直接讀取S-57數(shù)據(jù)格式,無法實(shí)時(shí)接收最新的S-57數(shù)據(jù)[3~4]。
海圖文件的讀取與顯示是整個(gè)系統(tǒng)的基礎(chǔ)。實(shí)現(xiàn)海圖讀取與顯示功能的程序流程如圖5所示。
圖5 海圖讀取與顯示程序流程
路線規(guī)劃是艦載無人機(jī)導(dǎo)航信息系統(tǒng)的核心功能,通過在海圖上標(biāo)繪點(diǎn)、線、面和文本各種要素,形成艦載無人機(jī)的飛行方案。分層結(jié)構(gòu)式電子海圖的基本結(jié)構(gòu)是將不同元素存在于不同圖層上[5]。圖層的創(chuàng)建是此功能實(shí)現(xiàn)的基礎(chǔ)。根據(jù)繪制對(duì)象屬性的不同,需要?jiǎng)?chuàng)建點(diǎn)、線、面和文本四種不同類型的圖層,每個(gè)圖層分別存儲(chǔ)顯示不同類型的元素。創(chuàng)建所需要的圖層后,就需要對(duì)創(chuàng)建一系列的方法來完成點(diǎn)、線、面和文本的繪制。這是一個(gè)很復(fù)雜的過程,按照傳統(tǒng)的編程思路,在繪制對(duì)象時(shí)需要定義一系列的事件,來捕獲鼠標(biāo)的動(dòng)作,比如移動(dòng)、單擊、拖拽等;不同的對(duì)象對(duì)事件的響應(yīng)也不同,需要調(diào)用不同的方法,這使得整個(gè)程序非常的復(fù)雜?;诮M件的GIS開發(fā)平臺(tái)提供的一系列功能接口大大簡化了這一過程[6]。在圖層的編輯方面,SuperMap Object.NET提供的多達(dá)30種不同元素的繪制以及完善的修改功能。實(shí)現(xiàn)這些功能,是需要改變MapControl.Action屬性的值,不需要定義事件,甚至不需要調(diào)用方法,大大降低了編程難度。實(shí)現(xiàn)路線規(guī)劃功能需要完成兩個(gè)步驟,首先創(chuàng)建編輯圖層,為繪制圖形元素提供基本條件;然后在所創(chuàng)建的圖層上繪制所需要的圖形,實(shí)現(xiàn)路線的規(guī)劃。
信息查詢是飛行信息系統(tǒng)最復(fù)雜的部分之一。地理空間數(shù)據(jù)具有多類、多層、多樣、多關(guān)系、多結(jié)構(gòu)等特點(diǎn),處理這些數(shù)據(jù),實(shí)現(xiàn)信息的查詢篩選,需要用到比較高級(jí)的技巧。
與一般的數(shù)據(jù)庫不同,電子海圖數(shù)據(jù)通常有不同的表現(xiàn)形式。工作空間包含了當(dāng)前使用的所有數(shù)據(jù)信息,同一條數(shù)據(jù),在Map對(duì)象中,數(shù)據(jù)表現(xiàn)為一個(gè)個(gè)不同屬性的圖像符號(hào),在Recordset對(duì)象中,數(shù)據(jù)直接表現(xiàn)為一組相關(guān)的數(shù)字和字符串,表現(xiàn)模式不同,但是其內(nèi)在本質(zhì)是一樣的,有著密切的內(nèi)部關(guān)系。使用電子海圖系統(tǒng),更多的是通過鼠標(biāo)在圖形界面下對(duì)海圖元素進(jìn)行直接的操作,因此圖形與數(shù)據(jù)之間的交互和轉(zhuǎn)換顯得尤其重要。
3.4.1 圖查信息
SuperMap Object.NET為圖形對(duì)象與數(shù)據(jù)對(duì)象的轉(zhuǎn)換提供了一系列方法,其中定義了兩個(gè)重要的類:Selection和Recordset。Selection選擇集類用于存儲(chǔ)處理海圖上被選中的對(duì)象。通過Map.FindSelection方法可以直接獲得當(dāng)前在海圖上被選中的對(duì)象,記錄在Selection對(duì)象中。Recordset記錄集類用于實(shí)現(xiàn)對(duì)矢量數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行操作。Recordset對(duì)象與Selection對(duì)象有著良好的互操作性,可以互相轉(zhuǎn)換。通常在獲取Selection對(duì)象后,通過Selection.ToRecordset方法可以獲得被選對(duì)象的全部數(shù)據(jù)。在對(duì)這些數(shù)據(jù)進(jìn)行處理后,返回到Selection對(duì)象中,就可以實(shí)現(xiàn)對(duì)目標(biāo)對(duì)象的高亮顯示。在圖形界面下選擇元素,獲取并顯示元素屬性,程序流程如圖6所示。
圖6 圖查信息程序流程
3.4.2 條件篩選
Recordset記錄集除了從Selection選擇集轉(zhuǎn)換,還可以通過SQL語句查詢獲取。利用SQL語句的靈活性和嚴(yán)謹(jǐn)性,為從大量海圖數(shù)據(jù)中查詢、篩選有效信息提供了高效的方法。
這里使用了SuperMap Object.NET中的DatasetVector.Query(QueryParameter)方法,其中 DatasetVector記錄了各圖層的矢量數(shù)據(jù)集,通過layer.Dataset屬性獲得,QueryParameter包含了查詢參數(shù),包括SQL語句。此方法最終返回給Recordset記錄集。程序流程如圖7所示。
圖7 條件篩選程序流程
3.4.3 查詢結(jié)果顯示
獲得的Recordset記錄集具有標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),可以方便的提取,修改其中的數(shù)據(jù)。為了能夠直觀顯示Recordset記錄集中的數(shù)據(jù),可以使用.NET框架中的DataGridView控件顯示,最終表現(xiàn)為數(shù)據(jù)表的形式。程序流程如圖8所示。
圖8 顯示查詢結(jié)果程序流程
附加信息包括經(jīng)緯度、比例、尺網(wǎng)格、當(dāng)前系統(tǒng)狀態(tài)等,涉及很多方面的內(nèi)容,為海圖作業(yè)提供了大量的輔助信息,同時(shí)便于作業(yè)者掌握當(dāng)前系統(tǒng)的狀態(tài),在整個(gè)電子海圖系統(tǒng)中占有重要地位。實(shí)現(xiàn)附加信息的基本思路是通過GIS開發(fā)平臺(tái)提供的數(shù)據(jù)接口獲得所需要的參數(shù),通過特定的格式在地圖上顯示出來。
相比其他功能模塊,系統(tǒng)數(shù)據(jù)庫并不提供直接的可操作的功能,但其對(duì)整個(gè)系統(tǒng)的安全性、可靠性和可維護(hù)性有重要的意義。系統(tǒng)數(shù)據(jù)庫可設(shè)計(jì)為三個(gè)部分:用戶信息、操作日志和錯(cuò)誤記錄。用戶信息數(shù)據(jù)庫主要存儲(chǔ)用戶的用戶名、登錄密碼、使用權(quán)限和登錄日志等信息。操作日志主要記錄使用無人機(jī)導(dǎo)航信息系統(tǒng)所進(jìn)行的操作,按操作的時(shí)間順序排列。錯(cuò)誤記錄主要記錄系統(tǒng)運(yùn)行過程中發(fā)生的錯(cuò)誤信息,便于查找錯(cuò)誤原因。數(shù)據(jù)庫本身必須加密,確保日志信息的安全,保證只有海圖系統(tǒng)本身才能訪問和修改數(shù)據(jù)庫。系統(tǒng)數(shù)據(jù)庫的運(yùn)行流程如圖9所示。
圖9 系統(tǒng)數(shù)據(jù)庫訪問與修改
經(jīng)過系統(tǒng)的總體設(shè)計(jì),可以構(gòu)建一個(gè)功能比較完善的軟件產(chǎn)品。如圖10所示是打開后顯示海圖的界面,左側(cè)是輔助面板,顯示全局圖和放大圖,下方狀態(tài)欄顯示當(dāng)前比例尺和經(jīng)緯度,上方功能區(qū)集成了所有的功能按鈕。
圖10 海圖顯示界面
艦載無人機(jī)是獲得信息的重要手段,如何有效地使用艦載無人機(jī)獲取的信息對(duì)提高信息化作戰(zhàn)具有重要意義。與電子海圖相結(jié)合,將大大提高艦載無人機(jī)導(dǎo)航信息系統(tǒng)的信息集成化程度,有利于信息的融合。同時(shí)利用電子海圖化的控制方法,將大大提高艦載無人機(jī)導(dǎo)航信息系統(tǒng)的使用效率[7~9,12]。論文從研究艦載無人機(jī)導(dǎo)航信息系統(tǒng)出發(fā),論述了如何在C#開發(fā)環(huán)境下,使用SuperMap Object.NET開發(fā)組件構(gòu)建一套功能相對(duì)完善的無人機(jī)導(dǎo)航信息系統(tǒng)。針對(duì)無人機(jī)導(dǎo)航信息系統(tǒng)的結(jié)構(gòu)和功能,設(shè)計(jì)電子海圖軟件,實(shí)現(xiàn)無人機(jī)導(dǎo)航信息系統(tǒng)的基本功能;實(shí)現(xiàn)瀏覽海圖的漫游、縮放等基本操作,能夠顯示全局圖和放大圖功能;實(shí)現(xiàn)在電子海圖上繪制各種幾何元素,實(shí)現(xiàn)無人機(jī)的路線規(guī)劃功能;實(shí)現(xiàn)對(duì)海圖元素信息進(jìn)行查詢和搜索;嘗試使用第三方工具箱構(gòu)建先進(jìn)的Ribbon界面,使整個(gè)程序美觀大方,可操作性強(qiáng)。
本文所設(shè)計(jì)的系統(tǒng)還有很多不足的地方,需要在今后的研究中擴(kuò)充和完善:一是無法直接讀取S-57海圖數(shù)據(jù),需要通過軟件轉(zhuǎn)換后才能讀取使用,這樣大大降低了使用效率,使得軟件無法讀取實(shí)時(shí)S-57數(shù)據(jù)的要求。下階段可以使用自行編寫的S-57解析模塊,或者使用一些商用的控件實(shí)現(xiàn)軟件對(duì)S-57的讀??;二是沒有實(shí)現(xiàn)對(duì)艦載無人機(jī)飛行路徑的實(shí)時(shí)跟蹤。作為艦載無人機(jī)導(dǎo)航信息系統(tǒng)的重要功能,對(duì)艦載無人機(jī)位置的實(shí)時(shí)顯示與跟蹤將為我們更好的掌握無人機(jī)的運(yùn)行狀態(tài)。下階段將加入位置路徑跟蹤功能,實(shí)時(shí)監(jiān)控艦載無人機(jī)實(shí)際飛行路徑與指定路徑是否匹配;三是沒有實(shí)現(xiàn)多海圖的拼接功能。當(dāng)前軟件只能讀取顯示單一的海圖文件,無法在大海域發(fā)揮作用。下階段軟件將能夠讀取多個(gè)連續(xù)的海圖數(shù)據(jù),并實(shí)現(xiàn)顯示上的拼接。
[1]薛偉.MapObjects地理信息系統(tǒng)程序設(shè)計(jì)[M].北京:國防工業(yè)出版社,2004.
[2]李杰,付夢(mèng)印,鄧志紅.MapInfo格式的地圖數(shù)據(jù)在嵌入式導(dǎo)航系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)工程與應(yīng)用,2003,13:214-217.
[3]李慶偉,李進(jìn)杰,盧巖.S-57標(biāo)準(zhǔn)電子海圖及其在航海中的應(yīng)用[J].天津航海,2008:01:7-10.
[4]汪春鵬,周常森.MAPINAFO格式地圖解析程序設(shè)計(jì)[J].測(cè)控技術(shù),2008(01):47-50.
[5]鄭海.電子航海圖系統(tǒng)[M].大連:海軍大連艦艇學(xué)院,2004.
[6]李歡.面向航海應(yīng)用的地理信息系統(tǒng)關(guān)鍵技術(shù)研究[D].國防科學(xué)技術(shù)大學(xué)研究生院,2004.
[7]曠志高,劉鼎臣.艦載無人機(jī)的發(fā)展綜述[J].飛航導(dǎo)彈,2003(02):16-19.
[8]趙濤.艦載無人機(jī)的發(fā)展[J].艦船電子工程,2010(04):21-24.
[9]李桂英,徐楊,岳宇博.小型無人機(jī)導(dǎo)航系統(tǒng)的探索與研究[J].價(jià)值工程,2011(03):150.
[10]馮玖,白尚旺,黨偉超.基于SOA的物流信息系統(tǒng)架構(gòu)研究[J].計(jì)算機(jī)與數(shù)字工程,2009(1).
[11]金亮,高飛,肖希.外軍軍事信息系統(tǒng)體系結(jié)構(gòu)框架技術(shù)概述[J].計(jì)算機(jī)與數(shù)字工程,2012(7).
[12]王春安,閆建國,屈耀紅.無人機(jī)導(dǎo)航系統(tǒng)的硬件設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2011,12:2999-3004.