新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARCVIEW的ADS顯示系統(tǒng)的開發(fā)

基于ARCVIEW的ADS顯示系統(tǒng)的開發(fā)

作者: 時間:2006-05-07 來源:網(wǎng)絡(luò) 收藏

摘要:介紹了地理信息系統(tǒng)軟件ARCVIEW3.2的基本特點(diǎn)和ADS顯示系統(tǒng)的組成、結(jié)構(gòu)和功能,著重論述了ADS信息接收、基于ARCVIEW的ADS顯示和ADS信息統(tǒng)計的關(guān)鍵技術(shù)及其實(shí)現(xiàn)。

本文引用地址:http://www.butianyuan.cn/article/242342.htm

關(guān)鍵詞:地理信息系統(tǒng)GIS 自動相關(guān)監(jiān)視ADS 空中交通管制系統(tǒng) 套接字(Windows Socket)

地理信息系統(tǒng)(GIS,Geographical Information System是對現(xiàn)實(shí)世界中的各種對象的空間特征和屬性信息進(jìn)行存儲,將空間特征和屬性信息結(jié)合進(jìn)行分析,查詢并以直觀的形式(圖形)將結(jié)果顯示出來的一門新興學(xué)科。由美國環(huán)境系統(tǒng)研究所(ESRI)開發(fā)的ARCVIEW3.2地理信息系統(tǒng)軟件,具有空間分析能力強(qiáng)、支持多種數(shù)據(jù)格式和投影變換、顯示速度快、與其它程序的接口豐富和對地圖對象的控制方便等特點(diǎn)。這些特點(diǎn)使ARCVIEW比較適合開發(fā)動態(tài)目標(biāo)跟蹤系統(tǒng)。本文將介紹ARCVIEW在動態(tài)目標(biāo)跟蹤中的具體應(yīng)用。

自動相關(guān)監(jiān)視(ADS,Automatic Dependent Surveillance)系統(tǒng)作為空中交通管制系統(tǒng)中的一種新的監(jiān)視手段,它從機(jī)載導(dǎo)航設(shè)備獲得信息(至少包括飛機(jī)識別和4維位置信息),通過甚高頻(VHF)地空數(shù)據(jù)鏈,自動且實(shí)時地發(fā)送到地面接收和處理系統(tǒng),為空中交通管制部門和航空公司提供飛機(jī)在空中的信息。ADS系統(tǒng)可以為飛行在雷達(dá)覆蓋區(qū)以外,特別是海洋和荒漠空域的飛機(jī),提供監(jiān)視手段;將這些信息以直觀、易于分析的方式顯示出來是ADS系統(tǒng)的關(guān)鍵。通過地理信息系統(tǒng),可以將ADS系統(tǒng)的上述功能以圖形的方式在地圖上顯示出來,使信息的表達(dá)直接、方便,能大大提高空管部門和航空公司的決策分析能力,提高飛行的安全性。

1 ADS顯示系統(tǒng)設(shè)計

從信息流程來看,ADS顯示系統(tǒng)首先從ADS地面信息處理系統(tǒng)獲得ADS數(shù)據(jù)。然后在ADS顯示系統(tǒng)中進(jìn)行數(shù)據(jù)校正、濾波后在以基礎(chǔ)地理信息為底圖的地圖上顯示出來。在用戶需要進(jìn)行統(tǒng)計分析時,可結(jié)合基礎(chǔ)地理信息對ADS動態(tài)信息進(jìn)行統(tǒng)計分析。

從系統(tǒng)的信息流程可以將系統(tǒng)劃分為三個部分:

(1)ADS信息接收: 負(fù)責(zé)從ADS地面信息處理系統(tǒng)中獲得實(shí)時ADS數(shù)據(jù),并維護(hù)與ADS地面信息分發(fā)系統(tǒng)的連接。

(2)ADS信息顯示: 將ADS信息轉(zhuǎn)化為地圖要素在地圖上顯示出來,并提供偏航、近進(jìn)、進(jìn)入危險區(qū)報警和沖突檢測等功能。

(3)ADS信息統(tǒng)計分析: 根據(jù)地理要素(航線、管制區(qū)、機(jī)場),統(tǒng)計出該要素在某個時間段(點(diǎn))的航班的數(shù)量,進(jìn)行初步的流量分析。

系統(tǒng)的程序結(jié)構(gòu)如圖1所示。

2 ADS顯示系統(tǒng)的實(shí)現(xiàn)

ADS顯示系統(tǒng)的操作系統(tǒng)采用Windows NT Workstation 4.0,開發(fā)工具采用MS VC6.0、MS VB6.0和ESRI的ARCVIEW3.2。

2.1 ADS信息接收

通過共享文件和數(shù)據(jù)庫可實(shí)現(xiàn)不同進(jìn)程間的信息交換。但是,這需要數(shù)據(jù)獲得者定期查詢文件服務(wù)器或數(shù)據(jù)庫服務(wù)器。這對實(shí)時性要求高的系統(tǒng)來說是難以滿足要求的。在Windows 中,Windows Socket(套接字)提供了網(wǎng)絡(luò)上不同進(jìn)程的數(shù)據(jù)通信的理想方法。它能通過消息驅(qū)動來實(shí)時進(jìn)行數(shù)據(jù)通信。我們采用Windows Socket API實(shí)現(xiàn)ADS信息接收模塊與ADS信息分發(fā)系統(tǒng)的通信。

在ADS系統(tǒng)中可能有多個ADS顯示系統(tǒng)在運(yùn)行,為了建設(shè)分布式的網(wǎng)絡(luò)應(yīng)用系統(tǒng)和提高代碼的復(fù)用性,我們將ADS信息接收模塊設(shè)計成ActiveX控件。

我們?yōu)樵摽丶O(shè)計了以下事件和方法:InitSocket(),負(fù)責(zé)建立到數(shù)據(jù)分發(fā)模塊的連接;DataReady(),當(dāng)有數(shù)據(jù)分發(fā)到此控件時,自動觸發(fā)該事件;SendData(),向外發(fā)送數(shù)據(jù);Disconnect(),斷開連接。另外,控件在連接過程中會自動維護(hù)此連接,它定期測試鏈路狀態(tài),如發(fā)現(xiàn)異常,則啟動重新連接線程,重新建立連接。ADS信息接收的流程如圖2所示。

2.2 ADS信息的顯示

ADS信息顯示是在ARCVIEW3.2中處理的,而ARCVIEW3.2無法使用ActiveX控件。但是ARCVIEW3.2能通過DDE技術(shù)與其它應(yīng)用程序通信。我們通過VB開發(fā)一個數(shù)據(jù)傳輸模塊。該模塊通過ActiveX控件從ADS信息分發(fā)系統(tǒng)得到ADS數(shù)據(jù),由DDE傳輸?shù)剑粒遥茫郑桑牛祝常仓?。ARCVIEW3.2得到ADS?shù)據(jù)后,再進(jìn)行顯示處理。下面分別就VB與ARCVIEW的數(shù)據(jù)通訊和信息顯示進(jìn)行論述。

2.2.1 數(shù)據(jù)通訊

ARCVIEW與VB建立DDE會話的源代碼如下:

Label1.LinkTopic=″ArcView|System″

Label1.LinkMode=vbLinkManual。

建立DDE會話后,將要從VB到ARCVIEW的數(shù)據(jù)賦給VB中的變量就可進(jìn)行傳輸。對數(shù)字和字符串其傳送格式不同:

對于字符串,在VB中的形式為AirNum=””B-2447””,即帶引號的字符串。

對于數(shù)字,只要將其轉(zhuǎn)化為普通字符串,如latstr =”45.45”。

在實(shí)際應(yīng)用過程中,我們發(fā)現(xiàn)數(shù)字如果按數(shù)字形式傳輸容易出錯。如果將其轉(zhuǎn)化為字符,再按字符串傳輸則可解決此問題。從VB到ARCVIEW的數(shù)據(jù)傳輸源代碼如下:

cmd = ″av.run″ + ″″″function.move″″″ + ″,{″ + redrawstr + ″,″ + Airnum + ″,″ + Flightnum + ″,″ + latstr + ″,″ + longstr + ″,″ + acarsstr + ″,″ + lastxstr + ″,″ + lastystr + ″}

Label1.LinkExecute(cmd)

2.2.2 信息顯示

在ARCVIEW3.2中,能顯示在地圖上的地圖對象有兩種Theme圖層和Label標(biāo)注。

·Theme是ARCVIEW的基礎(chǔ)顯示對象。對每個對應(yīng)圖層,在ARCVIEW中都有一個屬性表與之相對應(yīng)。圖層保存在文件中,對它的屬性進(jìn)行查詢和進(jìn)行空間分析都極其方便。但是,當(dāng)對圖層的一個元素進(jìn)行更新時,整個圖層和位于其上的地圖對象(如Label)都要隨著刷新,這樣既浪費(fèi)時間又使得圖面閃爍比較厲害。

·Label是浮動在圖層之上的地理對象,它沒有屬性與之對應(yīng),它是動態(tài)停留在內(nèi)存中的。對它的操作非常靈活??蓪γ總€Label對象單獨(dú)進(jìn)行移動、改變形狀和刪除而不影響圖面上其它的地圖對象。因此,Label的刷新速度快,不影響圖面。由于Label沒有屬性數(shù)據(jù),所以對它的屬性查詢和空間分析就特別困難。

在ADS系統(tǒng)中,被監(jiān)控的飛機(jī)的數(shù)量多,飛機(jī)的位置信息變化快,如果將這些飛機(jī)以Theme來顯示是無法辦到的,只能采用Label。由于Label沒有屬性表。為了能象對圖層那樣方便地查詢飛機(jī)不在圖面上的信息,我們構(gòu)造了一個輔助屬性表。這個表保存在ACCESS數(shù)據(jù)庫中,ARCVIEW通過ODBC讀取表中的內(nèi)容。在實(shí)際使用過程中,發(fā)現(xiàn)這種效果比較理想,既能滿足顯示速度和圖面質(zhì)量的要求,又能象查詢圖層那樣方便地查詢航班的信息。

2.3 ADS信息統(tǒng)計分析

對各種空域特征的ADS信息統(tǒng)計的處理方式是類似的。其中統(tǒng)計某段航線在某段時間內(nèi)的航班數(shù)量最具典型性,下面就此問題進(jìn)行論述。

對航線的ADS信息統(tǒng)計是建立在航線數(shù)據(jù)和ADS動態(tài)數(shù)據(jù)的基礎(chǔ)上的。因此獲取航線的地理數(shù)據(jù)和ADS動態(tài)數(shù)據(jù)是非常重要的。

在民用航空中,航線是由航段組成的,而航段是由兩個導(dǎo)航點(diǎn)組成的一條線段。不同的航線可能包含同一航段。為了處理問題方便和節(jié)省存儲空間,我們將航線庫設(shè)計為三個表:AirRoute,存儲組成航線的航段代號;RouteSeg,存儲組成航段的導(dǎo)航點(diǎn)的代號;WayPoint,存儲導(dǎo)航臺的位置數(shù)據(jù)。這三個表的關(guān)系如圖3所示。它們存儲在基礎(chǔ)地理信息數(shù)據(jù)庫中。

ADS動態(tài)數(shù)據(jù)的航班標(biāo)識和航班四維位置信息(經(jīng)度、緯度、時間、高度)對ADS 信息統(tǒng)計分析是非常重要的。這些信息已由ADS信息地面信息處理系統(tǒng)存入ADS動態(tài)信息數(shù)據(jù)庫的Todisplay表中。

通過ODBC API可實(shí)現(xiàn)訪問遠(yuǎn)程的基礎(chǔ)地理信息數(shù)據(jù)庫和ADS動態(tài)信息數(shù)據(jù)庫。用ODBC API訪問遠(yuǎn)程數(shù)據(jù)庫的步驟如下:

(1) 申請環(huán)境句柄。

fg=SQLAllocEnv(henv)

(2) 申請連接句柄。

fg=SQLAllocConnect(henv,hDbc)

(3) 建立到數(shù)據(jù)庫的連接。

fg=SQLConnect(hDbc,strDNS,SQL_NTS,strUIDSQL_NTS,strPW, SQL_NTS)

(4) 要獲取數(shù)據(jù),還要申請語句句柄。

fg=SQLAllocStmt(hDbc,hstmt)

(5) 執(zhí)行要得到的數(shù)據(jù)的SQL語句。

fg=SQLExecDirect(hstmt,strSql,Len(strSql)

(6) 可通過SQLGetData()取得所返回的數(shù)據(jù)。

根據(jù)輸入的航線信息,通過ODBC API獲得航線的地理數(shù)據(jù)并確定包含這條航線的最大矩形范圍,再通過ODBC API從ADS動態(tài)信息數(shù)據(jù)庫中獲得在要分析的時間段內(nèi)且在航線的矩形范圍內(nèi)的ADS動態(tài)數(shù)據(jù)。然后對這些數(shù)據(jù)在ARCVIW中進(jìn)行空間分析。確定在這個時間段內(nèi)在航線緩沖區(qū)內(nèi)的數(shù)據(jù)并將結(jié)果顯示在地圖上。

該系統(tǒng)已在中國民航空管局總調(diào)度室運(yùn)行了1年多,系統(tǒng)穩(wěn)定可靠,得到了用戶的好評。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉