摘 要: 介紹了地理信息系統(tǒng)軟件ARCVIEW3.2的基本特點(diǎn)和ADS顯示系統(tǒng)的組成,、結(jié)構(gòu)和功能,,著重論述了ADS信息接收,、基于ARCVIEW的ADS顯示和ADS信息統(tǒng)計(jì)的關(guān)鍵技術(shù)及其實(shí)現(xiàn),。
關(guān)鍵詞: 地理信息系統(tǒng)GIS 自動(dòng)相關(guān)監(jiān)視ADS 空中交通管制系統(tǒng) 套接字(Windows Socket)
地理信息系統(tǒng)(GIS,,Geographical Information System)是對(duì)現(xiàn)實(shí)世界中的各種對(duì)象的空間特征和屬性信息進(jìn)行存儲(chǔ),,將空間特征和屬性信息結(jié)合進(jìn)行分析,,查詢(xún)并以直觀的形式(圖形)將結(jié)果顯示出來(lái)的一門(mén)新興學(xué)科,。由美國(guó)環(huán)境系統(tǒng)研究所(ESRI)開(kāi)發(fā)的ARCVIEW3.2地理信息系統(tǒng)軟件,,具有空間分析能力強(qiáng)、支持多種數(shù)據(jù)格式和投影變換,、顯示速度快,、與其它程序的接口豐富和對(duì)地圖對(duì)象的控制方便等特點(diǎn)。這些特點(diǎn)使ARCVIEW比較適合開(kāi)發(fā)動(dòng)態(tài)目標(biāo)跟蹤系統(tǒng),。本文將介紹ARCVIEW在動(dòng)態(tài)目標(biāo)跟蹤中的具體應(yīng)用,。
自動(dòng)相關(guān)監(jiān)視(ADS,Automatic Dependent Surveillance)系統(tǒng)作為空中交通管制系統(tǒng)中的一種新的監(jiān)視手段,,它從機(jī)載導(dǎo)航設(shè)備獲得信息(至少包括飛機(jī)識(shí)別和4維位置信息),,通過(guò)甚高頻(VHF)地空數(shù)據(jù)鏈,,自動(dòng)且實(shí)時(shí)地發(fā)送到地面接收和處理系統(tǒng),為空中交通管制部門(mén)和航空公司提供飛機(jī)在空中的信息,。ADS系統(tǒng)可以為飛行在雷達(dá)覆蓋區(qū)以外,,特別是海洋和荒漠空域的飛機(jī),提供監(jiān)視手段,;將這些信息以直觀,、易于分析的方式顯示出來(lái)是ADS系統(tǒng)的關(guān)鍵。通過(guò)地理信息系統(tǒng),,可以將ADS系統(tǒng)的上述功能以圖形的方式在地圖上顯示出來(lái),,使信息的表達(dá)直接、方便,,能大大提高空管部門(mén)和航空公司的決策分析能力,,提高飛行的安全性。
1 ADS顯示系統(tǒng)設(shè)計(jì)
從信息流程來(lái)看,,ADS顯示系統(tǒng)首先從ADS地面信息處理系統(tǒng)獲得ADS數(shù)據(jù),。然后在ADS顯示系統(tǒng)中進(jìn)行數(shù)據(jù)校正、濾波后在以基礎(chǔ)地理信息為底圖的地圖上顯示出來(lái),。在用戶(hù)需要進(jìn)行統(tǒng)計(jì)分析時(shí),,可結(jié)合基礎(chǔ)地理信息對(duì)ADS動(dòng)態(tài)信息進(jìn)行統(tǒng)計(jì)分析,。
從系統(tǒng)的信息流程可以將系統(tǒng)劃分為三個(gè)部分:
(1)ADS信息接收: 負(fù)責(zé)從ADS地面信息處理系統(tǒng)中獲得實(shí)時(shí)ADS數(shù)據(jù),,并維護(hù)與ADS地面信息分發(fā)系統(tǒng)的連接。
(2)ADS信息顯示: 將ADS信息轉(zhuǎn)化為地圖要素在地圖上顯示出來(lái),,并提供偏航,、近進(jìn)、進(jìn)入危險(xiǎn)區(qū)報(bào)警和沖突檢測(cè)等功能,。
(3)ADS信息統(tǒng)計(jì)分析: 根據(jù)地理要素(航線(xiàn),、管制區(qū)、機(jī)場(chǎng)),,統(tǒng)計(jì)出該要素在某個(gè)時(shí)間段(點(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,,開(kāi)發(fā)工具采用MS VC6.0、MS VB6.0和ESRI的ARCVIEW3.2,。
2.1 ADS信息接收
通過(guò)共享文件和數(shù)據(jù)庫(kù)可實(shí)現(xiàn)不同進(jìn)程間的信息交換,。但是,這需要數(shù)據(jù)獲得者定期查詢(xún)文件服務(wù)器或數(shù)據(jù)庫(kù)服務(wù)器,。這對(duì)實(shí)時(shí)性要求高的系統(tǒng)來(lái)說(shuō)是難以滿(mǎn)足要求的,。在Windows 中,,Windows Socket(套接字)提供了網(wǎng)絡(luò)上不同進(jìn)程的數(shù)據(jù)通信的理想方法。它能通過(guò)消息驅(qū)動(dòng)來(lái)實(shí)時(shí)進(jìn)行數(shù)據(jù)通信,。我們采用Windows Socket API實(shí)現(xiàn)ADS信息接收模塊與ADS信息分發(fā)系統(tǒng)的通信,。
在ADS系統(tǒng)中可能有多個(gè)ADS顯示系統(tǒng)在運(yùn)行,為了建設(shè)分布式的網(wǎng)絡(luò)應(yīng)用系統(tǒng)和提高代碼的復(fù)用性,,我們將ADS信息接收模塊設(shè)計(jì)成ActiveX控件,。
我們?yōu)樵摽丶O(shè)計(jì)了以下事件和方法:InitSocket(),負(fù)責(zé)建立到數(shù)據(jù)分發(fā)模塊的連接,;DataReady(),,當(dāng)有數(shù)據(jù)分發(fā)到此控件時(shí),自動(dòng)觸發(fā)該事件,;SendData(),,向外發(fā)送數(shù)據(jù);Disconnect(),,斷開(kāi)連接,。另外,控件在連接過(guò)程中會(huì)自動(dòng)維護(hù)此連接,,它定期測(cè)試鏈路狀態(tài),,如發(fā)現(xiàn)異常,則啟動(dòng)重新連接線(xiàn)程,,重新建立連接,。ADS信息接收的流程如圖2所示。
2.2 ADS信息的顯示
ADS信息顯示是在ARCVIEW3.2中處理的,,而ARCVIEW3.2無(wú)法使用ActiveX控件,。但是ARCVIEW3.2能通過(guò)DDE技術(shù)與其它應(yīng)用程序通信。我們通過(guò)VB開(kāi)發(fā)一個(gè)數(shù)據(jù)傳輸模塊,。該模塊通過(guò)ActiveX控件從ADS信息分發(fā)系統(tǒng)得到ADS數(shù)據(jù),,由DDE傳輸?shù)紸RCVIEW3.2中。ARCVIEW3.2得到ADS數(shù)據(jù)后,,再進(jìn)行顯示處理,。下面分別就VB與ARCVIEW的數(shù)據(jù)通訊和信息顯示進(jìn)行論述。
2.2.1 數(shù)據(jù)通訊
ARCVIEW與VB建立DDE會(huì)話(huà)的源代碼如下:
Label1.LinkTopic=″ArcView|System″
Label1.LinkMode=vbLinkManual,。
建立DDE會(huì)話(huà)后,,將要從VB到ARCVIEW的數(shù)據(jù)賦給VB中的變量就可進(jìn)行傳輸。對(duì)數(shù)字和字符串其傳送格式不同:
對(duì)于字符串,,在VB中的形式為AirNum=””B-2447””,,即帶引號(hào)的字符串。
對(duì)于數(shù)字,,只要將其轉(zhuǎn)化為普通字符串,,如latstr =”45.45”,。
在實(shí)際應(yīng)用過(guò)程中,我們發(fā)現(xiàn)數(shù)字如果按數(shù)字形式傳輸容易出錯(cuò),。如果將其轉(zhuǎn)化為字符,,再按字符串傳輸則可解決此問(wè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中,,能顯示在地圖上的地圖對(duì)象有兩種:Theme(圖層)和Label(標(biāo)注),。
·Theme是ARCVIEW的基礎(chǔ)顯示對(duì)象。對(duì)每個(gè)對(duì)應(yīng)圖層,,在ARCVIEW中都有一個(gè)屬性表與之相對(duì)應(yīng),。圖層保存在文件中,對(duì)它的屬性進(jìn)行查詢(xún)和進(jìn)行空間分析都極其方便,。但是,,當(dāng)對(duì)圖層的一個(gè)元素進(jìn)行更新時(shí),整個(gè)圖層和位于其上的地圖對(duì)象(如Label)都要隨著刷新,,這樣既浪費(fèi)時(shí)間又使得圖面閃爍比較厲害,。
·Label是浮動(dòng)在圖層之上的地理對(duì)象,它沒(méi)有屬性與之對(duì)應(yīng),,它是動(dòng)態(tài)停留在內(nèi)存中的,。對(duì)它的操作非常靈活??蓪?duì)每個(gè)Label對(duì)象單獨(dú)進(jìn)行移動(dòng),、改變形狀和刪除而不影響圖面上其它的地圖對(duì)象。因此,,Label的刷新速度快,,不影響圖面。由于Label沒(méi)有屬性數(shù)據(jù),,所以對(duì)它的屬性查詢(xún)和空間分析就特別困難。
在ADS系統(tǒng)中,,被監(jiān)控的飛機(jī)的數(shù)量多,,飛機(jī)的位置信息變化快,如果將這些飛機(jī)以Theme來(lái)顯示是無(wú)法辦到的,,只能采用Label,。由于Label沒(méi)有屬性表。為了能象對(duì)圖層那樣方便地查詢(xún)飛機(jī)不在圖面上的信息,,我們構(gòu)造了一個(gè)輔助屬性表,。這個(gè)表保存在ACCESS數(shù)據(jù)庫(kù)中,ARCVIEW通過(guò)ODBC讀取表中的內(nèi)容,。在實(shí)際使用過(guò)程中,,發(fā)現(xiàn)這種效果比較理想,,既能滿(mǎn)足顯示速度和圖面質(zhì)量的要求,又能象查詢(xún)圖層那樣方便地查詢(xún)航班的信息,。
2.3 ADS信息統(tǒng)計(jì)分析
對(duì)各種空域特征的ADS信息統(tǒng)計(jì)的處理方式是類(lèi)似的,。其中統(tǒng)計(jì)某段航線(xiàn)在某段時(shí)間內(nèi)的航班數(shù)量最具典型性,下面就此問(wèn)題進(jìn)行論述,。
對(duì)航線(xiàn)的ADS信息統(tǒng)計(jì)是建立在航線(xiàn)數(shù)據(jù)和ADS動(dòng)態(tài)數(shù)據(jù)的基礎(chǔ)上的,。因此獲取航線(xiàn)的地理數(shù)據(jù)和ADS動(dòng)態(tài)數(shù)據(jù)是非常重要的。
在民用航空中,,航線(xiàn)是由航段組成的,,而航段是由兩個(gè)導(dǎo)航點(diǎn)組成的一條線(xiàn)段。不同的航線(xiàn)可能包含同一航段,。為了處理問(wèn)題方便和節(jié)省存儲(chǔ)空間,,我們將航線(xiàn)庫(kù)設(shè)計(jì)為三個(gè)表:AirRoute,存儲(chǔ)組成航線(xiàn)的航段代號(hào),;RouteSeg,,存儲(chǔ)組成航段的導(dǎo)航點(diǎn)的代號(hào);WayPoint,,存儲(chǔ)導(dǎo)航臺(tái)的位置數(shù)據(jù),。這三個(gè)表的關(guān)系如圖3所示。它們存儲(chǔ)在基礎(chǔ)地理信息數(shù)據(jù)庫(kù)中,。
ADS動(dòng)態(tài)數(shù)據(jù)的航班標(biāo)識(shí)和航班四維位置信息(經(jīng)度,、緯度、時(shí)間,、高度)對(duì)ADS 信息統(tǒng)計(jì)分析是非常重要的,。這些信息已由ADS信息地面信息處理系統(tǒng)存入ADS動(dòng)態(tài)信息數(shù)據(jù)庫(kù)的Todisplay表中。
通過(guò)ODBC API可實(shí)現(xiàn)訪(fǎng)問(wèn)遠(yuǎn)程的基礎(chǔ)地理信息數(shù)據(jù)庫(kù)和ADS動(dòng)態(tài)信息數(shù)據(jù)庫(kù),。用ODBC API訪(fǎng)問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)的步驟如下:
(1) 申請(qǐng)環(huán)境句柄,。
fg=SQLAllocEnv(henv)
(2) 申請(qǐng)連接句柄。
fg=SQLAllocConnect(henv,hDbc)
(3) 建立到數(shù)據(jù)庫(kù)的連接,。
fg=SQLConnect(hDbc, strDNS, SQL_NTS, strUID, SQL_NTS, strPWD, SQL_NTS)
(4) 要獲取數(shù)據(jù),,還要申請(qǐng)語(yǔ)句句柄。
fg=SQLAllocStmt(hDbc, hstmt)
(5) 執(zhí)行要得到的數(shù)據(jù)的SQL語(yǔ)句,。
fg=SQLExecDirect(hstmt, strSql, Len(strSql))
(6) 可通過(guò)SQLGetData()取得所返回的數(shù)據(jù),。
根據(jù)輸入的航線(xiàn)信息,通過(guò)ODBC API獲得航線(xiàn)的地理數(shù)據(jù)并確定包含這條航線(xiàn)的最大矩形范圍,,再通過(guò)ODBC API從ADS動(dòng)態(tài)信息數(shù)據(jù)庫(kù)中獲得在要分析的時(shí)間段內(nèi)且在航線(xiàn)的矩形范圍內(nèi)的ADS動(dòng)態(tài)數(shù)據(jù),。然后對(duì)這些數(shù)據(jù)在ARCVIW中進(jìn)行空間分析。確定在這個(gè)時(shí)間段內(nèi)在航線(xiàn)緩沖區(qū)內(nèi)的數(shù)據(jù)并將結(jié)果顯示在地圖上。
該系統(tǒng)已在中國(guó)民航空管局總調(diào)度室運(yùn)行了1年多,,系統(tǒng)穩(wěn)定可靠,,得到了用戶(hù)的好評(píng)。
參考文獻(xiàn)
1 Arcview GIS environmental systems research institute,INC.1998
2 新航行系統(tǒng)概論編輯委員會(huì).新航行系統(tǒng)概論.北京中國(guó)民航出版社,1997,;7
3 蔣東興,林鶚華,陳棋德等.Windows Sockets網(wǎng)絡(luò)程序設(shè)計(jì)大全. 北京:清華大學(xué)出版社,1999.4