

中圖分類號:TP311 文獻標識碼:A 文章編號:2096-4706(2025)16-0099-07
Abstract: Aiming at the problem of aircraft navigation information perception,an ADS-B navigation information acquisitionand visualizationsystem isconstructedbasedonOpenSkyNetwork platform.By integrating Flask framework and Mapboxtechnology,thereal-timeacquisitionanddepanalysisofADS-Bdatacanberealizedandthekeynavigationparaetes such as positioncoordinates,flightspeedandflightheightoftheaircraftcanbedisplayedinanal-round way.Through the intuitiveandeasy-to-understand map interface,userscaneasily graspthereal-timeflightdynamicsofaircraftaround theworld. Thesystemprovidesaconvenentnavigationinformationmonitoringmethodfortheaviationfeld,whichcanefectivelyprove theflightsafety factorand operationaccuracy,and alsoopen upanew perspective and path for theresearch and practice of frontier fields such as air collision warning.
Keywords:ADS-B technology;aircraft navigation perception; Flask framework; Web service;Mapbox technology
0 引言
在全球航空業持續繁榮發展的當下,對高效且安全的空中交通管理系統的需求愈發強烈。傳統雷達監視系統的局限性日益凸顯,而廣播式自動相關監視(Automatic Dependent Surveillance-Broadcast,ADS-B)技術則成為破解這一難題的關鍵所在[1]。據英國《每日電訊報》國防編輯、沙普斯代表團成員丹妮爾·謝里丹的報道揭示,3月13日上午,一架波蘭飛往加里寧格勒的航班在飛行中遭遇了時長約30分鐘的電子戰攻擊,導致其GPS導航系統遭受干擾。同日,開源情報領域的分析師馬庫斯·瓊森報告指出,該空域內約有511架飛機同樣遭遇了類似電子干擾,此次事件不僅影響廣泛,且后果嚴重。
為深化ADS-B技術的應用效能,本文引入了OpenSkyNetwork這一開源平臺,該平臺能夠實時提供豐富的飛機航線ADS-B數據,并保障數據的即時更新。研究內容專注于提升ADS-B技術在航空導航領域的運用,包括實時處理ADS-B信號、展示地圖可視化、提供導航完好性指標等功能。同時,結合誤差校正策略,大幅度增強系統的可信度,為航行安全提供可靠支持。
1 ADS-B報文協議及網絡獲取技術
1.1 ADS-B報文
ADS-B技術,作為一種先進的監視手段,其核心功能在于賦能飛機自主且定期地廣播其飛行狀態信息,而無須外界主動詢問。在這一技術框架下,飛機所廣播的狀態參數廣泛而詳盡,其中尤為關鍵的有位置、高度以及速度信息。具體而言,位置信息由全球導航衛星系統(GlobalNavigationSatelliteSystem,GNSS)精確測定,而速度信息則是通過GNSS所提供的位置數據與慣性測量系統的綜合計算得出。至于高度信息,則涵蓋了氣壓高度與GNSS高度兩個方面,其中氣壓高度由精密的空氣數據系統提供。除了這些主要狀態參數外,ADS-B還可以廣播其他信息,比如飛機呼號、高精度指示器、完整性指示器和運行狀態[2]。
ADS-B消息內容幀長112bit,其報文結構如圖1所示,這些元素共同構成了在 1090MHz 頻段上傳輸的完整ADS-B消息體[3]

ADS-B數據的ME字段位于第 33~37 位。表1顯示了每個類型代碼與其包含在ME段中的信息之間的關系,前5個比特為(TYPE)消息類型字段,緊接著的3個比特為消息子類型(SUBTYPE)字段,剩余48個比特為消息內容一主要包括空中或地表目標位置的經緯度、高度、空中速度消息、時間指示信息等。
表1消息類型

1.2Web服務器的Flask框架
Flask是一個輕量級的Web應用開發框架,它源自Python,旨在保持代碼的簡潔清晰和易于擴展。這個框架整合了簡單的路由機制和模板引擎功能,讓開發者能夠快速構建Web應用。Flask的核心是兩個重要的庫:Werkzeug和Jinja2。Werkzeug專注于處理業務邏輯,而Jinja2則注重應用的安全性。這些基礎庫為Web項目提供了多樣化的基礎組件,奠定了堅實的基礎。在實際應用中,Flask框架的架構由多個關鍵部分組成[4,包括應用程序實例、上下文管理、路由系統、視圖處理函數、模板渲染和表單處理等。這些組件協同工作,使得Flask能夠高效地處理客戶端的請求并生成相應的響應。
1.3Mapbox技術
Mapbox是一個基于Node.js、CouchDB及GDAL等技術的開源平臺,用戶不僅能在線申請賬戶進行地圖制作,還能下載并安裝相關工具實現本地部署。其核心的數據存儲機制實質上是一種高效的數據索引系統,類似于書籍的目錄,極大地加速了數據的檢索與渲染過程。在數據存儲方面,Mapbox選用了SQLite數據庫,這是一個無須配置、無服務器依賴且支持事務處理的SQL數據庫引擎。
此外Mapbox提供了兩大渲染引擎:MapboxGLJS(適用于瀏覽器)和MapboxGLNative(適用于移動設備)。MapboxGLJS能夠以前端方式實時渲染出包含幾何圖形、文字標注及圖標符號的3D場景地圖,展現出卓越的WebGIS開發能力,成為一款備受歡迎的WebGIS開發框架[5]。通過使用MapboxGLJS在Web 瀏覽器或客戶端中顯示Mapbox地圖,添加用戶交互性,并在應用程序中自定義地圖體驗。
2 系統設計
2. 1 系統架構設計
整體系統架構如圖2所示。

數據采集層依托API接口技術,從OpenSkyNetwork實時獲取全球飛機ADS-B數據,涵蓋位置、速度、高度等關鍵信息,將這些數據傳遞至數據處理層,該層是系統的核心,通過特定解析算法將ADS-B信號轉換為結構化JSON數據,并進行數據清洗和異常值處理,確保數據準確完整。數據處理層還實現多源數據融合與校驗,增強了數據一致性和持久性,為后續應用提供了堅實的基礎。
處理后的ADS-B數據存儲至數據存儲層,該層采用分布式數據庫架構,借助Redis緩存技術提升數據訪問速度,確保系統實時響應。這些數據最終會被應用服務層利用,作為業務邏輯處理中心,實現對飛機導航信息的實時分析、態勢感知及預警功能。通過集成Flask框架,構建高效可擴展Web服務,支持數據實時處理與分發,滿足系統需求。
2.2 數據處理流程
整體數據處理流程如圖3所示。
圖3數據處理流程

ADS-B數據處理包括信息接收、處理質控、存儲管理。通過API接口獲取ADS-B數據,通過模塊化設計實現了航空器狀態信息的實時獲取、多維度質量校驗及高效存儲管理[。系統采用微服務架構模式,各功能模塊通過RESTfulAPI進行通信,有效提升了系統的可擴展性和維護性。
ADS-B信息接收:本系統通過OpenSkyNetwork提供的RESTfulAPI構建實時數據采集通道。數據采集層基于PythonFlask框架構建異步Web服務,集成requests庫實現HTTPS長連接管理,獲取的ADS-B報文經JSON解析后包含飛機位置、速度、高度等核心參數。前端則利用HTML、CSS、JavaScript及Mapbox GLJS庫實現數據可視化展示[7]。
數據處理與質量控制:接收后的ADS-B數據需要進行進一步的處理和質量控制,系統對異常值進行處理,剔除速度異常、位置跳變等不合理數據。融合多個數據源,并通過對比校驗各數據源的信息,提升數據的整體質量與可靠性。
數據存儲與管理:將處理后的ADS-B數據存儲到分布式數據庫中,針對ADS-B系統海量異構數據特征,系統采用多模態混合存儲架構,采用MySQL關系型數據庫與MongoDB文檔數據庫協同工作的分布式存儲方案。為解決高并發訪問瓶頸,利用Redis緩存技術提高數據訪問速度,在數據存儲過程中,系統會對數據進行分片和索引處理。
2.3 可視化設計
可視化界面是用戶與系統交互的主要窗口,其設計需要直觀、易用且富有吸引力。本系統采用響應式布局和現代化的UI設計理念,注重色彩搭配和信息層級的呈現,通過合理的配色方案和信息布局提高信息的可讀性和易理解性[]。
2.3.1 地圖展示與交互功能
利用Mapbox地圖服務,實現全球地圖的動態實時展現[9]。用戶能夠進行縮放、平移等操作,瀏覽全球各區域的飛機信息詳情。飛機實時位置以圖標形式清晰標注,并進行了顏色、大小等視覺設計。
2.3.2 關鍵導航信息展示
綜合運用圖標、數字與文本,多維度展現飛機的核心導航數據,位置、速度、高度及航向等關鍵要素,將信息以直觀易懂的方式融入地圖界面,使用戶能夠迅速把握飛機的實時飛行狀況。
2.3.3 實時更新與動態效果
本系統實現了數據的實時更新和動態效果展示。借助WebSocket技術實現前后端實時通信,確保地圖上的飛機位置、速度等信息的即時性與準確性。系統還通過動畫效果展示飛機的飛行軌跡和狀態變化,增強用戶的視覺體驗和沉浸感。
3 方法與實現
3.1數據獲取與預處理
在本項目中,使用OpenSkyNetwork提供的API來獲取ADS-B數據。狀態向量數據是OpenSky數據集的核心,它提供了關于航空器在特定時間點的詳細狀態信息。表2為狀態向量數據中包含的主要字段及其解釋。
表2狀態向量表

3.1.1 獲取方式
本項目通過發送HTTPGET請求到OpenSkyNetwork的API,并獲取全球的飛行數據。
API接口確定:獲取對應的API。使用url_base表示實際API的URL。
認證與權限:使用用戶名和密碼進行HTTP請求的基本認證(auth=(user_name,password))。使API可以安全地獲取數據,確保只有本團隊授權用戶才能訪問這些數據。
請求參數:通過Web服務接口(GET/)提供經緯度范圍(lamin,lomin,lamax,lomax)作為查詢參數,構造發送到API的請求,以請求全球范圍的飛行數據。
發送請求:使用requests.getO方法發送HTTPGET請求到API,帶上查詢參數和認證信息。API將返回指定范圍內的飛行數據。
3.1.2 數據預處理
基于OpenSkyNetwork的ADS-B數 據,通過Flask構建RESTfulAPI( @ app.route),實現數據獲取、清洗(剔除無效位置/異常值)與JSON格式轉換。采用MySQL/MongoDB分布式存儲清洗后數據,結合Redis緩存高頻訪問信息,通過分片索引提升查詢效率。部署時通過app.run暴露5000端口,集成異步處理與定時任務保障數據實時性,為前端可視化提供高可用、低延遲的航班狀態服務,并內置網絡異常/數據解析等錯誤處理機制。
3.2 實現過程
3.2.1 初始化設置
前端實現流程如圖4所示。

具體如下:
1)初始化定義。HTML文檔的
部分,
body{margin: O; padding: 0;} #map{position:absolute; top:O;bottom:0;
width: 100% }
LoadJSONData<!--
buttongt; mapboxgl.accessToken
\"; var map
new mapboxgl.Map({ container:'map',style:'mapbox://styles/
mapbox/streets-vll',center: [0,0], zoom:1.5});
2)定時器Timer設置。利用setInterval函數設定一個定時器,定時執行loadFlights函數[10]。loadFlights函數的職責是從服務器端獲取最新的航班信息,并更新地圖上的圖層,以實現數據的動態更新。通過定時器的設置,保證了數據的實時性和動態性。
loadFlights(;
setInterval(loadFlights,5000);
3. 2. 2. 數據的實時更新
1)各項飛行數據的獲取。在loadFlights函數的實現中,采用fetchAPI向服務器發出請求,以便獲取最新的航班數據。這一過程的成功與否取決于后端API接口的可靠性,該接口應當返回一個包含航班信息的JSON數據。為了確保數據的準確獲取和處理,必須在fetch函數中指定后端URL,并處理潛在的網絡異常情況。
function loadFlights( {
fetch('http://127.0.0.1:5000)//修改為Flask后
端提供的URL
(204號throw newError('Network response was
not ok');}return response.json(;})
2)更新信息。將獲取到的 JSON數據使用 mapremoveLayer和map.removeSource方法移除地圖上舊的圖層和數據源,以避免數據重復顯示;然后使用map.addSource和map.addLayer方法將新的GeoJSON數據源添加到地圖上,并創建一個新的圖層來顯示這些數據點。
if (map.getLayer('flights')) { map.removeLayer('flights');}
if (map.getSource('flights')) { map.removeSource('flights');}
map.addSource('flights',{ \"type\": \"geojson\", \"data\": flightsGeoJson});
map.addLayer({ \"id\": \"flights\", \"type\":\"circle\", \"source\":\"flights\",\".…
3.2.3 飛機信息的更新
1)幾何對象的創建。在GeoJSON數據中,每個圖標類型的幾何對象代表一個飛行物,其坐標(經度和緯度)從后端返回的JSON數據中提取。通過遍歷后端返回的飛行數據數組,為每個飛行物創建一個GeoJSON特征(Feature),并將它們組合成一個特征集合(FeatureCollection),這個特征集合隨后被用作新的數據源添加到地圖上。
const flightsGeoJson
\"type\":\"FeatureCollection\", \"features\": data.map(flight ? ({ \"type\": \"Feature\", \"geometry\": { \"type\": \"Point\", \"coordinates\": [flight.lon, flight.lat] }, \"properties\":flight }))};
2)圖層更新
在創建并添加新的GeoJSON數據源后,使用map.addLayer方法添加一個circle類型的圖層來顯示這些圖標。通過指定圖層的id、source以及paint屬性來定義圖層的外觀和行為。設置點擊事件監聽器,用戶點擊地圖上的飛行物時,將彈出顯示包含航班呼號等數據信息的Popup 窗口。
map.addLayer({ \"id\": \"flights\", \"type\": \"symbol\", \"source\":\"flights\", \"layout\": { \"icon-image\": \"custom-marker\", \"icon-size\":0.5, \"icon-allow-overlap\": true, \"icon-rotate\":[\"to-number\",[\"get\",\"true_track\"]] }3); map.on('click','flights',function (e){ new mapboxgl.Popup( .setLngLat(e.features[O].geometry.coordinates) .setHTML( ?∠13gt;5 {e.features[O].properties. llsign) ?? ) .addTo(map); });
3.3 開發與集成
后端和前端的開發是獨立并行推進的,但必須保證它們之間的數據接口能夠互相配合。后端開發完成后,會被部署到服務器上,前端則通過HTTP請求與后端進行數據交互。前端開發完成后,會將HTML、
CSS和JavaScript文件部署到Web服務器上,以確保用戶可以通過瀏覽器訪問并使用系統。
當用戶在地圖界面上查看航空器的實時飛行動態時,前端會觸發一次服務器的數據檢索請求,獲取當前所有航空器的位置坐標、飛行速率、飛行高度等關鍵導航參數[]。后端服務在成功捕獲該請求后,從數據庫中提取相關數據,并將其以JSON格式封裝并傳輸回前端。前端接收到后端返回的數據后,會將其解析并動態地呈現在用戶界面上,使用戶能夠直觀地看到航空器的實時飛行動態。這種基于前后端分離架構的數據交互機制,確保了系統能夠實時、準確地向用戶展示航空器的導航信息。其總體架構如圖5所示。
4實驗與結果分析
基于ADS-B技術的數據,開發并優化航空的實時監視可視化,確保飛機能夠實時、準確地獲取并顯示其位置、速度、高度及航向等關鍵導航參數[12]。通過Flask框架構建的Web服務,結合Mapbox將這些實時數據直觀地呈現在地圖上,為飛行提供直觀、全面的飛行狀態反饋,從而提升飛行操作的安全性和精準度。系統運行時能夠每隔5s獲取并展示飛機的位置和狀態信息,動態地將飛行數據顯示在地圖上,用戶可以通過點擊飛機圖標查看多個狀態信息。
先運行后端代碼獲取數據,隨后運行前端代碼實現可視化,獲取到的JSON數據如圖6所示。


在界面中,可以觀察到全球范圍內所有搭載有ADS-B設備的飛機的實時分布情況[13]。這些飛機以黑色飛機圖標的形式標注在世界地圖上。每一架飛機詳盡地列出了當前選定飛機的各項關鍵數據,包括海拔高度、精確的經緯度坐標、飛行速度以及飛機的ICAO24碼等,使其夠迅速掌握飛機的飛行狀態??梢暬缑孢€具備高度的可編輯性和可擴展性。用戶可以通過“OpenStreetMap Improve this Map”鏈接,輕松地對地圖信息進行進一步的優化和完善,以滿足自身對飛機追蹤信息的個性化需求。這一設計不僅提升了用戶的使用體驗,還為用戶提供了更多探索和分析飛機數據的可能性。實際運行界面如圖7所示。
圖7可視化界面

5結論
本研究利用OpenSkyNetwork平臺資源,成功構建了一個高效、實時的飛機導航信息監測系統。同時,將ADS-B數據與Flask框架融合,構建了一個功能齊全的Web服務應用程序。該服務能夠實時捕捉和處理飛機發出的ADS-B信號,監測空中航班的動態,并通過API接口提供全球航班信息。未來將不斷優化算法,提升數據處理的實時性和準確性,擴展系統的應用范圍,深入探索其在航空交通管理、空中碰撞預警等領域的應用潛力。同時,將密切關注ADS-B技術的最新發展動態,及時引入新技術、新方法,推動航空領域的智能化、精細化發展。
參考文獻:
[1]沈端.基于ADS-B的收發前端的研究與實現[D].成都:電子科技大學,2012.[2]暴佳偉.基于ADS-B飛行數據的航程污染物排放模型研究[D].北京:北京石油化工學院,2022.
[3]盧獻宇,張媛媛.基于卡爾曼濾波算法的ADS-B航跡預測[J].現代信息科技,2021,5(8): 48-50+53
[4]杜興.基于Flask框架Web版的掃臉登錄系統研究與實現[J].電子制作,2022,30(12): 54-56+87
[5]鹿馨云.基于Mapbox的Web電子海圖顯示研究[D].大連:大連海事大學,2021.
[6]鄒偉,詹泉泉.ADS-B航空監視系統設計及應用[J]
通訊世界,2024,31(3):148-150.
[7]陳曉偉.ADS-B數據格式解析[J].科技經濟市場,
2020(10):15-16.
[8]劉喆玥.WebGIS技術在交互式天氣預報三維可視化系
統中的應用[D].南昌:南昌大學,2018.
[9]劉瑞華,曹暉.基于北斗的飛機進近著陸系統可視化
仿真[J].系統仿真學報,2018,30(10):3753-3760
[10]林慧琳.基于物聯網的社區信息化綜合信息服務系統
的實現[D].濟南:山東大學,2013.[11]王超.飛行程序運行評估的理論方法及仿真應用研究
[D].南京:南京航空航天大學,2012
[12]胡文戢.基于IMM算法的組合導航系統故障診斷研
究[D].武漢:華中科技大學,2011.
[13]尹進.基于ADS-B技術的多點定位方法研究[D].石
家莊:河北科技大學,2018.
作者簡介:劉錚(2004一),女,漢族,湖南湘潭人,
本科在讀,研究方向:邊緣計算與通信協同、機器學習的應用、
計算機視覺、智能電信網絡與資源優化;羅萌(2004—),女,
漢族,湖南邵陽人,本科在讀,研究方向:無線通信、物聯
網通信、機器視覺;陳恩澤(2004一),男,漢族,湖南常德
人,本科在讀,研究方向:機器學習、深度學習、機器視覺;
陸丹(2005一),女,漢族,湖南衡陽人,本科在讀,研究
方向:大數據與實時數據處理、數據可視化、人工智能與機
器學習的應用、人機交互與用戶體驗;李立(1983一),女,
漢族,湖北武漢人,職員,本科,研究方向:數據分析處理。