本站小編為你精心準(zhǔn)備了水聲設(shè)備試驗(yàn)航勢(shì)復(fù)盤軟件設(shè)計(jì)及實(shí)現(xiàn)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
摘要:根據(jù)水聲設(shè)備試驗(yàn)對(duì)航路態(tài)勢(shì)復(fù)盤需求,設(shè)計(jì)出軟件的總體結(jié)構(gòu)和主要功能,利用WPF技術(shù),結(jié)合C#語言和MySQL數(shù)據(jù)庫管理系統(tǒng),開發(fā)了基于WPF技術(shù)的水聲設(shè)備試驗(yàn)態(tài)勢(shì)復(fù)盤軟件,并詳細(xì)介紹了一些關(guān)鍵問題的解決方法和實(shí)現(xiàn)過程。通過使用該軟件,能夠提高數(shù)據(jù)處理的效率,便于試驗(yàn)人員評(píng)估分析試驗(yàn)結(jié)果。
關(guān)鍵詞:水聲設(shè)備;WPF;MySQL;數(shù)據(jù)庫
1引言
水聲設(shè)備試驗(yàn)需要?jiǎng)佑枚喾N不同類型的船只,試驗(yàn)結(jié)束后,往往需要對(duì)各船只試驗(yàn)期間的態(tài)勢(shì)進(jìn)行復(fù)盤,以便于試驗(yàn)人員準(zhǔn)確地對(duì)試驗(yàn)結(jié)果進(jìn)行評(píng)估和評(píng)價(jià)。水聲設(shè)備試驗(yàn)態(tài)勢(shì)復(fù)盤軟件主要對(duì)試驗(yàn)期間各船只定位數(shù)據(jù)進(jìn)行處理,以圖形化的顯示界面,準(zhǔn)確、便捷地再現(xiàn)試驗(yàn)態(tài)勢(shì)和關(guān)鍵事件,提高數(shù)據(jù)處理和數(shù)據(jù)管理的自動(dòng)化程度,提高試驗(yàn)數(shù)據(jù)處理的效率。WPF技術(shù)是一個(gè)應(yīng)用于Windows的圖形顯示系統(tǒng),是針對(duì).NET而設(shè)計(jì)的一個(gè)Windows應(yīng)用程序開發(fā)平臺(tái),它采用“數(shù)據(jù)驅(qū)動(dòng)”的程序開發(fā)模式,具有豐富的繪圖模型和文本模型,能夠?yàn)榻o用戶提供更具視覺效果的體驗(yàn)[1]。本文介紹了基于WPF技術(shù)的水聲設(shè)備試驗(yàn)態(tài)勢(shì)復(fù)盤軟件的基本原理和結(jié)構(gòu)組成,給出了設(shè)計(jì)方法和實(shí)現(xiàn)過程,并對(duì)一些關(guān)鍵問題進(jìn)行了闡述。
2總體方案
2.1主要功能水聲設(shè)備試驗(yàn)態(tài)勢(shì)數(shù)據(jù)主要包括試驗(yàn)船只的經(jīng)緯度信息、水聲設(shè)備發(fā)現(xiàn)和丟失目標(biāo)等關(guān)鍵事件數(shù)據(jù),根據(jù)試驗(yàn)數(shù)據(jù)種類和態(tài)勢(shì)再現(xiàn)需求,軟件應(yīng)具備以下幾個(gè)功能:1)具備數(shù)據(jù)預(yù)處理功能。一是采取數(shù)據(jù)修正或摒棄錯(cuò)誤數(shù)據(jù)等措施對(duì)手動(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)勢(shì)再現(xiàn)功能。具備在模擬地圖上再現(xiàn)試驗(yàn)態(tài)勢(shì),顯示各船只的位置信息、角度信息和速度信息;能夠在模擬地圖上進(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)行比對(duì),給出判斷結(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ī)定的格式存儲(chǔ)在數(shù)據(jù)庫中,實(shí)現(xiàn)數(shù)據(jù)產(chǎn)品加工、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)分發(fā)的管理。水聲設(shè)備試驗(yàn)航路態(tài)勢(shì)復(fù)盤軟件主要功能如圖1所示。
2.2軟件總體框架根據(jù)功能需求,軟件部分主要分為數(shù)據(jù)預(yù)處理模塊、運(yùn)行控制模塊、數(shù)據(jù)處理模塊、態(tài)勢(shì)再現(xiàn)模塊、顯示模塊和數(shù)據(jù)管理模塊六部分,態(tài)勢(shì)復(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)勢(shì)運(yùn)行控制;態(tài)勢(shì)再現(xiàn)模塊主要包括運(yùn)行控制參數(shù)和定位數(shù)據(jù)輸入模塊,圖形位置計(jì)算、圖形大小計(jì)算模塊和繪圖模塊,用于實(shí)現(xiàn)顯示圖形位置計(jì)算、圖形大小計(jì)算和圖形界面繪制和重載;數(shù)據(jù)處理模塊主要包括連接管理、兩點(diǎn)距離計(jì)算、態(tài)勢(shì)變化計(jì)算和精度計(jì)算模塊,用于完成各平臺(tái)之間連接關(guān)系管理、距離、相對(duì)態(tài)勢(shì)和精度計(jì)算;顯示模塊主要包括關(guān)鍵事件顯示、圖標(biāo)顯示、圖形顯示和態(tài)勢(shì)信息顯示子模塊,用于實(shí)現(xiàn)關(guān)鍵信息,各圖標(biāo)、圖形和態(tài)勢(shì)信息的顯示;數(shù)據(jù)管理模塊主要包括數(shù)據(jù)截取、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)導(dǎo)出子模塊,能夠按照時(shí)間對(duì)定位數(shù)據(jù)進(jìn)行截取,并按要求輸出標(biāo)準(zhǔn)格式數(shù)據(jù),能夠完成態(tài)勢(shì)數(shù)據(jù)的存儲(chǔ)和分發(fā)的管理。
2.3軟件設(shè)計(jì)思路應(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(Mod⁃el-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)界面和后臺(tái)邏輯的剝離,大大簡化了程序設(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ì)周期、成本、難度等因素,后臺(tái)數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫管理系統(tǒng)。
3關(guān)鍵問題解決方法
3.1經(jīng)緯度坐標(biāo)轉(zhuǎn)高斯坐標(biāo)考慮部分試驗(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),可表示為(XYZ)或(BLH),B為維度。采用高斯-克略格投影平面坐標(biāo)x,y計(jì)算公式如下[7]:由上式計(jì)算的x,y值存在負(fù)值,為了便于測(cè)量作業(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ù)號(hào),規(guī)定各投影帶的坐標(biāo)縱軸均西移500km,為了表明點(diǎn)的帶號(hào),又規(guī)定在其前面冠以帶號(hào),這種坐標(biāo)稱為“通用坐標(biāo)”[8]。
3.2數(shù)據(jù)野點(diǎn)剔除和平滑方法數(shù)據(jù)預(yù)處理算法主要包括野值剔除、數(shù)據(jù)插值和數(shù)據(jù)平滑。含有粗大誤差的數(shù)據(jù)稱為異常數(shù)據(jù),它會(huì)對(duì)測(cè)量結(jié)果產(chǎn)生明顯的歪曲,一旦發(fā)現(xiàn)含有粗大誤差的數(shù)據(jù),應(yīng)將其從測(cè)量序列中剔除[9]。試驗(yàn)平臺(tái)船只的高斯坐標(biāo)為(X)mYm、試驗(yàn)?zāi)繕?biāo)船只的高斯坐標(biāo)為(X)wYw。令變量XM、YM、XW、YM為V,時(shí)間變量為U,則Vi按式(8)計(jì)算:Vi=a+b*Ui+ε(8)式中ε為隨機(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è)備測(cè)量的各平臺(tái)船只軌跡數(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ù)平滑,對(duì)軌跡數(shù)據(jù)平滑一般采用線性平滑算法。
3.3繪圖系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)繪圖系統(tǒng)主要用于完成試驗(yàn)船只軌跡的繪制。要繪制軌跡就需要建立相應(yīng)的坐標(biāo)系統(tǒng),有兩種方法可以實(shí)現(xiàn)上述目標(biāo),一是使用開發(fā)平臺(tái)集成的坐標(biāo)系統(tǒng);二是使用自定義的坐標(biāo)系統(tǒng)?;谖④?。NET3.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ù)即可完成對(duì)軌跡的繪制、刷新、移動(dòng)、拖拽等操作,這樣可以大大簡化程序復(fù)雜度,使軟件具有良好的可維護(hù)性,缺點(diǎn)是運(yùn)行開銷大,當(dāng)需要繪制的軌跡點(diǎn)數(shù)量增大時(shí),繪圖的速度會(huì)減慢。第二種方法是通過WPF2D繪圖功能,在自定義的坐標(biāo)系統(tǒng)上繪制試驗(yàn)船只軌跡,顯示效果如圖3b所示。WPF2D繪圖功能可以創(chuàng)建豐富多彩的可視化元素,如點(diǎn)、直線、曲線、矩形、橢圓等[12]。使用WPF繪圖功能繪制軌跡的基本思路為先通過坐標(biāo)轉(zhuǎn)換模塊將定位數(shù)據(jù)格式有大地坐標(biāo)轉(zhuǎn)換為高斯坐標(biāo),然后繪制可視化元素來表示船只的軌跡。為減小繪制可視化元素造成的內(nèi)存開銷,可以使用Line元素繪制軌跡圖。Line屬于輕量級(jí)的可視化元素,當(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代碼為<LineStroke=“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)。
3.4圖形位置和大小計(jì)算為了增加軟件的直觀性,軟件態(tài)勢(shì)復(fù)盤顯示界面要能夠以圖形或圖標(biāo)的方式顯示船只、海區(qū)的經(jīng)緯度、固定物體等標(biāo)識(shí)信息,并且用戶進(jìn)行拖拽、滑動(dòng)、放大、縮小等鼠標(biāo)動(dòng)作時(shí),各種圖形和圖標(biāo)也隨之進(jìn)行移動(dòng)、放大和縮小,因此需要對(duì)各種標(biāo)識(shí)的位置和大小進(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)勢(shì)復(fù)盤界面上。
3.5數(shù)據(jù)處理模塊數(shù)據(jù)處理模塊主要包括兩點(diǎn)距離、態(tài)勢(shì)變化計(jì)算和精度計(jì)算子程序,用于完成試驗(yàn)船和配合船間距離、態(tài)勢(shì)和精度數(shù)據(jù)的計(jì)算,便于試驗(yàn)人員分析試驗(yàn)結(jié)果,圖5為態(tài)勢(shì)變化界面效果圖。態(tài)勢(shì)變化計(jì)算主要是計(jì)算船只間距離、方位和舷角隨時(shí)間的變化情況,距離計(jì)算過程如下:首先將定位數(shù)據(jù)由大地坐標(biāo)轉(zhuǎn)換為高斯坐標(biāo),再根據(jù)式(14)計(jì)算配合船只距離。式中D0為試驗(yàn)船與配合船的水平距離,(x1y1)為試驗(yàn)船的高斯坐標(biāo),(x2y2)為配合船的高斯坐標(biāo)。135目標(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ì)算主要包括測(cè)向精度、測(cè)距精度計(jì)算,常用的計(jì)算方法由二階原點(diǎn)矩和二階中心矩。測(cè)向精度的計(jì)算方法如式(17)、(18)、(19),測(cè)距精度參照測(cè)向精度,式中β'i為方位或舷角的真值,βi為聲納測(cè)量值,---Dβ為系統(tǒng)誤差,σ¶為二階中心矩,σβ為二階原點(diǎn)矩。由于聲速傳播速度慢,外置定位設(shè)備測(cè)量的是t時(shí)刻的試驗(yàn)船和目標(biāo)的位置數(shù)據(jù),水聲設(shè)備測(cè)量的是t-Dt時(shí)刻的配合船的位置,因此在進(jìn)行精度計(jì)算時(shí)需按照式(20)要進(jìn)行聲傳播延時(shí)修正。Dt為聲傳播延時(shí),C為所測(cè)量的聲速數(shù)據(jù),由此可以求出(t-Dt)時(shí)刻的配合船只的高斯坐標(biāo)。
4結(jié)語
本文提出的水聲設(shè)備試驗(yàn)態(tài)勢(shì)復(fù)盤軟件是在Windows操作系統(tǒng)平臺(tái)上進(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)人員評(píng)估分析試驗(yàn)結(jié)果。
參考文獻(xiàn)
[1]李成剛,馮靜,凌玲.基于WPF的交互式繪圖系統(tǒng)的開發(fā)[J].電子技術(shù)應(yīng)用,2011,30(6):54-56.
[2]王小科,呂雙.C#從入門到精通[M].北京:清華大學(xué)出版社,2010:545-547.
[3]王建平.MVC/MVP集成模式網(wǎng)絡(luò)課堂虛擬實(shí)驗(yàn)室的設(shè)計(jì)與研究[D].長沙:湖南大學(xué),2008:23-26.
[4]劉鐵猛.深入淺出WPF[M].北京:中國水利水電出版社,2010:8-10.
[5]王珊,陳紅.數(shù)據(jù)庫系統(tǒng)原理教程[M].北京:清華大學(xué)出版社,1998:27-32.
[6]李延興,張靜華,張俊青,等.一種由地心直角坐標(biāo)到大地坐標(biāo)的直接轉(zhuǎn)換[J].大地測(cè)量與地球動(dòng)力學(xué),2007,27(2):37-47.
[7]孔祥元,郭際明,劉宗泉.大地測(cè)量學(xué)基礎(chǔ)[M].武漢:武漢大學(xué)出版社,2010:30-41.
[8]張海軍,李仁杰,傅學(xué)慶.地理信息原理與實(shí)踐[M].北京:科學(xué)出版社,2009:195-198.
[9]吳石林,張玘.誤差分析與數(shù)據(jù)處理[M].北京:清華大學(xué)出版社,2010:45-48.
[10]邱軼兵.試驗(yàn)設(shè)計(jì)與數(shù)據(jù)處理[M].北京:中國科學(xué)技術(shù)大學(xué)出版社,2008年:31-33.
[11]索利斯.C#圖解教程[M].北京:人民郵電出版社,2013:135-137.
[12]MatthewMacDonald,王德才.WPF編程寶典-C#2010版[M].北京:清華大學(xué)出版社,2010:324-328.
作者:曹占啟 梁民贊 崔滋剛 單位:91388部隊(duì)