(91388部隊(duì) 湛江 524022)
水聲設(shè)備試驗(yàn)需要?jiǎng)佑枚喾N不同類型的船只,試驗(yàn)結(jié)束后,往往需要對各船只試驗(yàn)期間的態(tài)勢進(jìn)行復(fù)盤,以便于試驗(yàn)人員準(zhǔn)確地對試驗(yàn)結(jié)果進(jìn)行評估和評價(jià)。水聲設(shè)備試驗(yàn)態(tài)勢復(fù)盤軟件主要對試驗(yàn)期間各船只定位數(shù)據(jù)進(jìn)行處理,以圖形化的顯示界面,準(zhǔn)確、便捷地再現(xiàn)試驗(yàn)態(tài)勢和關(guān)鍵事件,提高數(shù)據(jù)處理和數(shù)據(jù)管理的自動(dòng)化程度,提高試驗(yàn)數(shù)據(jù)處理的效率。
WPF技術(shù)是一個(gè)應(yīng)用于Windows的圖形顯示系統(tǒng),是針對.NET而設(shè)計(jì)的一個(gè)Windows應(yīng)用程序開發(fā)平臺,它采用“數(shù)據(jù)驅(qū)動(dòng)”的程序開發(fā)模式,具有豐富的繪圖模型和文本模型,能夠?yàn)榻o用戶提供更具視覺效果的體驗(yàn)[1]。本文介紹了基于WPF技術(shù)的水聲設(shè)備試驗(yàn)態(tài)勢復(fù)盤軟件的基本原理和結(jié)構(gòu)組成,給出了設(shè)計(jì)方法和實(shí)現(xiàn)過程,并對一些關(guān)鍵問題進(jìn)行了闡述。
水聲設(shè)備試驗(yàn)態(tài)勢數(shù)據(jù)主要包括試驗(yàn)船只的經(jīng)緯度信息、水聲設(shè)備發(fā)現(xiàn)和丟失目標(biāo)等關(guān)鍵事件數(shù)據(jù),根據(jù)試驗(yàn)數(shù)據(jù)種類和態(tài)勢再現(xiàn)需求,軟件應(yīng)具備以下幾個(gè)功能:
1)具備數(shù)據(jù)預(yù)處理功能。一是采取數(shù)據(jù)修正或摒棄錯(cuò)誤數(shù)據(jù)等措施對手動(dòng)或自動(dòng)采集定位數(shù)據(jù)進(jìn)行誤差修正;二是能夠去除重復(fù)的定位數(shù)據(jù);三是能夠進(jìn)行多種格式數(shù)據(jù)轉(zhuǎn)換,如經(jīng)緯度坐標(biāo)轉(zhuǎn)換高斯坐標(biāo),非標(biāo)格式的時(shí)間、航速等數(shù)據(jù)轉(zhuǎn)為標(biāo)準(zhǔn)格式的數(shù)據(jù)。
2)態(tài)勢再現(xiàn)功能。具備在模擬地圖上再現(xiàn)試驗(yàn)態(tài)勢,顯示各船只的位置信息、角度信息和速度信息;能夠在模擬地圖上進(jìn)行試驗(yàn)區(qū)域標(biāo)注,加載自定義圖標(biāo)、圖形;能夠加快或減慢運(yùn)行速度,并能夠?qū)崿F(xiàn)軌跡、圖標(biāo)、圖形的縮放,拖拽等操作。
3)關(guān)鍵事件處理功能。一是具備關(guān)鍵事件結(jié)果初步判斷功能,將人工記錄的目標(biāo)信息和根據(jù)定位數(shù)據(jù)計(jì)算的真值信息進(jìn)行比對,給出判斷結(jié)果;二是能夠?qū)⑻幚砗蟮年P(guān)鍵事件信息按照時(shí)間順序在界面上顯示出來。
4)具備數(shù)據(jù)處理功能。能夠計(jì)算目標(biāo)的方位、距離變化率,顯示距離-時(shí)間、方位-時(shí)間和舷角-時(shí)間變化圖;能夠根據(jù)定位數(shù)據(jù)進(jìn)行距離、精度計(jì)算。
5)具備數(shù)據(jù)管理功能。將處理后的數(shù)據(jù)按照規(guī)定的格式存儲在數(shù)據(jù)庫中,實(shí)現(xiàn)數(shù)據(jù)產(chǎn)品加工、數(shù)據(jù)存儲和數(shù)據(jù)分發(fā)的管理。
水聲設(shè)備試驗(yàn)航路態(tài)勢復(fù)盤軟件主要功能如圖1所示。

圖1 主要功能圖
根據(jù)功能需求,軟件部分主要分為數(shù)據(jù)預(yù)處理模塊、運(yùn)行控制模塊、數(shù)據(jù)處理模塊、態(tài)勢再現(xiàn)模塊、顯示模塊和數(shù)據(jù)管理模塊六部分,態(tài)勢復(fù)盤軟件總體框架如圖2所示。
數(shù)據(jù)預(yù)處理模塊主要包括坐標(biāo)轉(zhuǎn)換、去除重復(fù)、野值剔除、數(shù)據(jù)插值、數(shù)據(jù)平滑、格式轉(zhuǎn)換等子模塊,完成采集數(shù)據(jù)的預(yù)處理工作;運(yùn)行控制模塊主要包括啟動(dòng)、暫停、結(jié)束、前進(jìn)、后退子模塊以及拖拽、滑動(dòng)、放大、縮小、刷新軌跡和運(yùn)行速度控制子模塊,用于實(shí)現(xiàn)試驗(yàn)態(tài)勢運(yùn)行控制;態(tài)勢再現(xiàn)模塊主要包括運(yùn)行控制參數(shù)和定位數(shù)據(jù)輸入模塊,圖形位置計(jì)算、圖形大小計(jì)算模塊和繪圖模塊,用于實(shí)現(xiàn)顯示圖形位置計(jì)算、圖形大小計(jì)算和圖形界面繪制和重載;數(shù)據(jù)處理模塊主要包括連接管理、兩點(diǎn)距離計(jì)算、態(tài)勢變化計(jì)算和精度計(jì)算模塊,用于完成各平臺之間連接關(guān)系管理、距離、相對態(tài)勢和精度計(jì)算;顯示模塊主要包括關(guān)鍵事件顯示、圖標(biāo)顯示、圖形顯示和態(tài)勢信息顯示子模塊,用于實(shí)現(xiàn)關(guān)鍵信息,各圖標(biāo)、圖形和態(tài)勢信息的顯示;數(shù)據(jù)管理模塊主要包括數(shù)據(jù)截取、數(shù)據(jù)存儲和數(shù)據(jù)導(dǎo)出子模塊,能夠按照時(shí)間對定位數(shù)據(jù)進(jìn)行截取,并按要求輸出標(biāo)準(zhǔn)格式數(shù)據(jù),能夠完成態(tài)勢數(shù)據(jù)的存儲和分發(fā)的管理。

圖2 軟件總體框架圖
應(yīng)用程序設(shè)計(jì)一般包括數(shù)據(jù)模型、業(yè)務(wù)邏輯、用戶界面和界面邏輯4層功能性代碼[2]。數(shù)據(jù)模型是現(xiàn)實(shí)世界中事物和邏輯的抽象,業(yè)務(wù)邏輯是數(shù)據(jù)之間的關(guān)系與交互,用戶界面由控件構(gòu)成,用于把數(shù)據(jù)顯示給用戶并接收用戶的輸入,界面邏輯是控件與控制之間的關(guān)系與交互。在保持代碼可維護(hù)的前提下,如何讓數(shù)據(jù)能夠順暢、靈活的到達(dá)界面并靈活顯示,同時(shí)方便的接收用戶的操作歷來的都是軟件開發(fā)的核心問題。常用的設(shè)計(jì)模式主要包括 MVC(Model-View-Controler)模式、MVP(Model-View-Presenter)模式等[3],上述模式采用“事件驅(qū)動(dòng)模式”,容易使界面邏輯和業(yè)務(wù)邏輯糾纏在一起,造成代碼復(fù)雜難懂,隱藏的缺陷難以排除,也不便于后續(xù)軟件的擴(kuò)展。
WPF技術(shù)的最大特點(diǎn)就是實(shí)現(xiàn)“數(shù)據(jù)驅(qū)動(dòng)模式”[4],人機(jī)交互界面采用XAML語言完成設(shè)計(jì),業(yè)務(wù)邏輯層使用C#進(jìn)行開發(fā),這樣使數(shù)據(jù)占主動(dòng)地位,弱化了控件和控件事件,實(shí)現(xiàn)界面和后臺邏輯的剝離,大大簡化了程序設(shè)計(jì)難度和維護(hù)的成本,因此,本系統(tǒng)采用WPF技術(shù)進(jìn)行設(shè)計(jì)和開發(fā)。
MySQL數(shù)據(jù)庫是一個(gè)中小型的關(guān)系型數(shù)據(jù)庫,被廣泛應(yīng)用于因特網(wǎng)上的中小型網(wǎng)站,它具有速度快、體積小、總體成本底、開放源代碼,成為很多網(wǎng)站或應(yīng)用程序?yàn)榻档烷_發(fā)成本而選擇此數(shù)據(jù)庫的最主要原因[5]。綜合考慮軟件設(shè)計(jì)周期、成本、難度等因素,后臺數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫管理系統(tǒng)。
考慮部分試驗(yàn)船只的位置數(shù)據(jù)為經(jīng)緯度數(shù)格式,需要轉(zhuǎn)換為高斯坐標(biāo)后再參與數(shù)據(jù)處理計(jì)算,軟件設(shè)置了大地坐標(biāo)轉(zhuǎn)換高斯坐標(biāo)子程序。
地心大地坐標(biāo)系的定義是[6]:地球橢球的中心與地球質(zhì)心相合,橢球的短軸與地球自轉(zhuǎn)軸相合,大地緯度為過地面點(diǎn)的橢球法線與橢球赤道面的夾角,大地經(jīng)度L為過地面點(diǎn)的橢球子午面與格林尼治平大地子午面之間的夾角,大地高H為地面點(diǎn)沿橢球法線至橢球面的距離。于是,任一地面點(diǎn)在地球坐標(biāo)系中的坐標(biāo),可表示為( )X,Y,Z 或(B,L,H),B為維度。采用高斯-克略格投影平面坐標(biāo)x,y計(jì)算公式如下[7]:

其中:
1)X為赤道兩期的子午線弧長(克拉索夫斯基橢球)

3)l為計(jì)算點(diǎn)大地經(jīng)度與投影帶中央子午線經(jīng)度之差

由上式計(jì)算的x,y值存在負(fù)值,為了便于測量作業(yè),規(guī)定以中央經(jīng)線和赤道的交叉點(diǎn)為原點(diǎn)坐標(biāo),x值在北半球?yàn)檎习肭驗(yàn)樨?fù),y值在中央經(jīng)線以東為正,中央經(jīng)線以西為負(fù),由于我國均位于北半球,x值皆為正值,為了避免y值出現(xiàn)負(fù)號,規(guī)定各投影帶的坐標(biāo)縱軸均西移500km,為了表明點(diǎn)的帶號,又規(guī)定在其前面冠以帶號,這種坐標(biāo)稱為“通用坐標(biāo)”[8]。
數(shù)據(jù)預(yù)處理算法主要包括野值剔除、數(shù)據(jù)插值和數(shù)據(jù)平滑。含有粗大誤差的數(shù)據(jù)稱為異常數(shù)據(jù),它會對測量結(jié)果產(chǎn)生明顯的歪曲,一旦發(fā)現(xiàn)含有粗大誤差的數(shù)據(jù),應(yīng)將其從測量序列中剔除[9]。試驗(yàn)平臺船只的高斯坐標(biāo)為(Xm,Ym)、試驗(yàn)?zāi)繕?biāo)船只的高斯坐標(biāo)為(Xw,Yw)。
令變量 XM、YM、XW、YM為V,時(shí)間變量為U ,則Vi按式(8)計(jì)算:

式中ε為隨機(jī)誤差。
a與b的估值按式(9)和式(10)計(jì)算:

重復(fù)上述過程,直至沒有奇異點(diǎn)為止。再利用a+b*Ui計(jì)算出中間點(diǎn)的坐標(biāo)值v0作為平滑后中間點(diǎn)的坐標(biāo)值,其余點(diǎn)的平滑依此類推。起始和結(jié)尾的7個(gè)點(diǎn)的平滑坐標(biāo)值分別利用起始與結(jié)尾15個(gè)點(diǎn)求得的a、b,再由公式a+b*Ui計(jì)算得出。
自動(dòng)采集設(shè)備測量的各平臺船只軌跡數(shù)據(jù)中存在跳點(diǎn),需要進(jìn)行平滑處理。數(shù)據(jù)平滑都是在基于實(shí)際的數(shù)據(jù)之上,根據(jù)平滑過程中實(shí)際統(tǒng)計(jì)數(shù)據(jù)的改變情況,平滑算法可以分為兩大類[10]:一類是修改所有實(shí)際統(tǒng)計(jì)數(shù)據(jù)的參數(shù)平滑算法;另一類是修改部分實(shí)際統(tǒng)計(jì)數(shù)據(jù)的參數(shù)平滑算法。修改所有實(shí)際統(tǒng)計(jì)數(shù)據(jù)的參數(shù)平滑算法主要有加法平滑、Good-Turing估計(jì)、折扣參數(shù)平滑、線性平滑、基于扣留估計(jì)的參數(shù)平滑,對軌跡數(shù)據(jù)平滑一般采用線性平滑算法。
繪圖系統(tǒng)主要用于完成試驗(yàn)船只軌跡的繪制。要繪制軌跡就需要建立相應(yīng)的坐標(biāo)系統(tǒng),有兩種方法可以實(shí)現(xiàn)上述目標(biāo),一是使用開發(fā)平臺集成的坐標(biāo)系統(tǒng);二是使用自定義的坐標(biāo)系統(tǒng)。
基于微軟。NET 3.5框架下的圖表控件,可以支持各種各樣的圖形顯示,如點(diǎn)狀圖、餅圖、柱狀圖、曲線圖、面積圖、排列圖等,同時(shí)也支持3D樣式的圖表顯示[11]。使用該控件繪制軌跡的基本思路如下,先通過坐標(biāo)轉(zhuǎn)換模塊將定位數(shù)據(jù)由大地坐標(biāo)轉(zhuǎn)換為高斯坐標(biāo),然后使用圖表控件LineCharts工具繪制并顯示出來,顯示效果如圖3(a)所示,其軌跡本質(zhì)是由一系列點(diǎn)連接而成。圖表控件自帶坐標(biāo)系統(tǒng),使用該控件相應(yīng)函數(shù)即可完成對軌跡的繪制、刷新、移動(dòng)、拖拽等操作,這樣可以大大簡化程序復(fù)雜度,使軟件具有良好的可維護(hù)性,缺點(diǎn)是運(yùn)行開銷大,當(dāng)需要繪制的軌跡點(diǎn)數(shù)量增大時(shí),繪圖的速度會減慢。

圖3 繪制船只軌跡圖
第二種方法是通過WPF 2D繪圖功能,在自定義的坐標(biāo)系統(tǒng)上繪制試驗(yàn)船只軌跡,顯示效果如圖3b所示。WPF 2D繪圖功能可以創(chuàng)建豐富多彩的可視化元素,如點(diǎn)、直線、曲線、矩形、橢圓等[12]。使用WPF繪圖功能繪制軌跡的基本思路為先通過坐標(biāo)轉(zhuǎn)換模塊將定位數(shù)據(jù)格式有大地坐標(biāo)轉(zhuǎn)換為高斯坐標(biāo),然后繪制可視化元素來表示船只的軌跡。
為減小繪制可視化元素造成的內(nèi)存開銷,可以使用Line元素繪制軌跡圖。Line屬于輕量級的可視化元素,當(dāng)數(shù)據(jù)量較大時(shí),使用Line能夠顯著降繪制大量形狀造成的開銷。Line表示連接一個(gè)點(diǎn)和另一個(gè)點(diǎn)的直線,起點(diǎn)和終點(diǎn)有4個(gè)屬性設(shè)置:X1、Y1、X2、Y2,繪制一條從點(diǎn)(0,0)伸展到點(diǎn)(10,100)的直線XAML代碼為
<Line Stroke=“Blue” X1=“0” Y1=“0” X2=“100”Y2=“100”/Line>
方法二需要自定義坐標(biāo)系統(tǒng),雖然增加了代碼復(fù)雜度,但在數(shù)據(jù)量不多的情況下,基本能夠滿足軟件的設(shè)計(jì)需求,因此本軟件的繪圖系統(tǒng)采用方法二進(jìn)行來實(shí)現(xiàn)。
為了增加軟件的直觀性,軟件態(tài)勢復(fù)盤顯示界面要能夠以圖形或圖標(biāo)的方式顯示船只、海區(qū)的經(jīng)緯度、固定物體等標(biāo)識信息,并且用戶進(jìn)行拖拽、滑動(dòng)、放大、縮小等鼠標(biāo)動(dòng)作時(shí),各種圖形和圖標(biāo)也隨之進(jìn)行移動(dòng)、放大和縮小,因此需要對各種標(biāo)識的位置和大小進(jìn)行計(jì)算。軟件設(shè)計(jì)了圖形位置和大小計(jì)算模塊,其計(jì)算過程如圖4所示,用戶使用鼠標(biāo)產(chǎn)生 MouseMove、MouseButtonDown、MouseWheel等事件,軟件在鼠標(biāo)事件中獲取鼠標(biāo)位置和滑動(dòng)量等參數(shù),通過坐標(biāo)系統(tǒng)將移動(dòng)位置和滑動(dòng)量參數(shù)轉(zhuǎn)換為屏蔽像素的參數(shù),最后調(diào)用UpDate子程序更新圖形的位置和大小到態(tài)勢復(fù)盤界面上。

圖4 圖形位置和大小計(jì)算過程
數(shù)據(jù)處理模塊主要包括兩點(diǎn)距離、態(tài)勢變化計(jì)算和精度計(jì)算子程序,用于完成試驗(yàn)船和配合船間距離、態(tài)勢和精度數(shù)據(jù)的計(jì)算,便于試驗(yàn)人員分析試驗(yàn)結(jié)果,圖5為態(tài)勢變化界面效果圖。
態(tài)勢變化計(jì)算主要是計(jì)算船只間距離、方位和舷角隨時(shí)間的變化情況,距離計(jì)算過程如下:首先將定位數(shù)據(jù)由大地坐標(biāo)轉(zhuǎn)換為高斯坐標(biāo),再根據(jù)式(14)計(jì)算配合船只距離。式中D0為試驗(yàn)船與配合船的水平距離,(x1,y1)為試驗(yàn)船的高斯坐標(biāo),(x2,y2)為配合船的高斯坐標(biāo)。

目標(biāo)的方位由式(15)和式(16)得出,其中:γ為收斂角,L0為中央子午線所在的經(jīng)度,L1為t時(shí)刻目標(biāo)所在的經(jīng)度,B1為t時(shí)刻目標(biāo)所在的緯度。由試驗(yàn)船的航向和配合船的方位可進(jìn)一步計(jì)算出配合船的舷角:

精度計(jì)算主要包括測向精度、測距精度計(jì)算,常用的計(jì)算方法由二階原點(diǎn)矩和二階中心矩。測向精度的計(jì)算方法如式(17)、(18)、(19),測距精度參照測向精度,式中為方位或舷角的真值,βi為聲納測量值,為系統(tǒng)誤差,為二階中心矩,為二階原點(diǎn)矩。

由于聲速傳播速度慢,外置定位設(shè)備測量的是t時(shí)刻的試驗(yàn)船和目標(biāo)的位置數(shù)據(jù),水聲設(shè)備測量的是t-Δt時(shí)刻的配合船的位置,因此在進(jìn)行精度計(jì)算時(shí)需按照式(20)要進(jìn)行聲傳播延時(shí)修正。Δt為聲傳播延時(shí),C為所測量的聲速數(shù)據(jù),由此可以求出(t-Δt)時(shí)刻的配合船只的高斯坐標(biāo)。


圖5 態(tài)勢變化界面
本文提出的水聲設(shè)備試驗(yàn)態(tài)勢復(fù)盤軟件是在Windows操作系統(tǒng)平臺上進(jìn)行開發(fā)的,實(shí)現(xiàn)過程中使用了WPF、C#以及MySQL等技術(shù)。通過歷次的水聲設(shè)備試驗(yàn)驗(yàn)證,該系統(tǒng)具有良好的人機(jī)交互性和穩(wěn)定性,能夠滿足實(shí)際的工程需求,能夠顯著提高試驗(yàn)人員數(shù)據(jù)處理的效率,便于試驗(yàn)人員評估分析試驗(yàn)結(jié)果。