時隔兩週,其實我的這項用RTL-SDR V4收飛機訊號的計畫還在持續進行,甚至我還把收到的訊號轉送去Flightradar24與flightaware,當然也獲得了一些很棒的會員權益,基本上就是可以取用資料庫。對這有興趣的話,兩者的官網都有資訊,但前提是你用的是linux的機器才好操作。(像我就是在樹莓派上運行)
從飛機收來的訊號不單是只有位置訊號,而是有這麼多不同的資料,但並不是每一台飛機都的資料內容都有這些,總之我是都即時用我房間的小天線,能抓都抓了。
| 參數 (Parameter) | 英文全稱 (English Full Name) | 中文說明 (Chinese Description) |
| $t | Timestamp | 時間戳記 (接收訊號的時間) |
| .hex | ICAO Hex ID | ICAO 24位元位址碼 (飛機唯一識別碼) |
| .flight | Flight Number / Callsign | 航班編號 / 呼號 |
| .lat | Latitude | 緯度 |
| .lon | Longitude | 經度 |
| .alt_baro | Barometric Altitude | 氣壓高度 |
| .alt_geom | Geometric Altitude | 幾何高度 (GPS 高度) |
| .gs | Ground Speed | 地速 |
| .ias | Indicated Airspeed | 指示空速 |
| .tas | True Airspeed | 真空速 |
| .mach | Mach Number | 馬赫數 |
| .track | Track Angle | 航跡角 |
| .track_rate | Track Rate | 航跡變化率 (轉彎率) |
| .roll | Roll Angle | 滾轉角 (飛機坡度) |
| .mag_heading | Magnetic Heading | 磁航向 |
| .true_heading | True Heading | 真航向 |
| .baro_rate | Barometric Vertical Rate | 氣壓爬升/下降率 |
| .geom_rate | Geometric Vertical Rate | 幾何爬升/下降率 |
| .temp | Static Air Temperature | 靜溫 (外界環境溫度) |
| .wd | Wind Direction | 風向 |
| .ws | Wind Speed | 風速 |
| .nav_qnh | QNH Setting | 氣壓高度表修正值 (海平面氣壓) |
| .nav_altitude_mcp | MCP Selected Altitude | 自動駕駛設定高度 (MCP/FCU) |
| .selected_heading | Selected Heading | 設定航向 |
| .squawk | Squawk Code | 應答機代碼 (四位數識別碼) |
| .rssi | Received Signal Strength Indication | 接收訊號強度指標 |
| .messages | Message Count | 訊息總數 |
| .rc | Radius of Containment | 容納半徑 (位置完整性) |
| .nic_baro | Navigation Integrity Category (Baro) | 氣壓高度完整性類別 |
| .nac_p | Navigation Accuracy Category (Position) | 位置精確度類別 |
| .nac_v | Navigation Accuracy Category (Velocity) | 速度精確度類別 |
| .sil | Source Integrity Level | 源完整性等級 |
| .gva | Geometric Vertical Accuracy | 幾何垂直精確度 |
| .sda | System Design Assurance | 系統設計保證 |
| .category | Aircraft Category | 飛機類別 (重量或類型) |
| .nav_modes | Navigation Modes | 導航模式狀態 |
| .version | ADS-B Version | ADS-B 版本 |
我用one-liner列出目前收到的每日航班量,命令是
printf "%-15s | %-10s\n" "Date (File)" "Flight Count" && \
printf "%-15s-|-%-10s\n" "---------------" "----------" && \
for f in adsb_*.csv; do
count=$(cut -d',' -f3 "$f" | grep -v "N/A" | sort -u | wc -l);
printf "%-15s | %-10s\n" "$f" "$count";
done
Date (File) | Flight Count
----------------|-----------
adsb_2026-02-17.csv | 693
adsb_2026-02-18.csv | 1140
adsb_2026-02-19.csv | 1114
adsb_2026-02-20.csv | 1019
adsb_2026-02-21.csv | 992
adsb_2026-02-22.csv | 1030
adsb_2026-02-23.csv | 963
adsb_2026-02-24.csv | 971
adsb_2026-02-25.csv | 921
adsb_2026-02-26.csv | 892
adsb_2026-02-27.csv | 1016
adsb_2026-02-28.csv | 937
adsb_2026-03-01.csv | 531
adsb_2026-03-15.csv | 29
中間有幾天電腦重啟,忘記繼續開紀錄的sh,就沒紀錄了,但是可以看到每天都能收到數百筆航班資料。
既然有大量資料,當然就是做我最愛的資訊視覺化,以下都用R來畫某一天的圖。
這用的是飛機的類型來繪圖,有小飛機、大飛機...。
每日收到的訊號點的圖
依照航向和高度來區分,黃線就是小於2000ft的,大部分都是起飛和降落的,可以觀察桃園機場一帶在這段時間是如何進場的。因為看到這張圖,我還因此跑去永安北岸觀海亭,想要實際看從北方來的飛機轉進桃園機場的即時現況。藍綠色線的是往北的高空飛機,紫色則是往南的。
看到這些線,就一定要去看看「交通部民用航空局電子式飛航指南」去找TAIPEI FIR EN ROUTE CHART來對照,才會更好玩。下圖的進入路徑是這樣
- 你要先到飛航指南 https://ais.caa.gov.tw/aimportalapp/ 去底下按eAIP 看最新的資料
- 到- Part 2 - 航路 (ENR) 找 ENR 6 航路圖,裡面有很多圖,看到TAIPEI FIR EN ROUTE CHART 點下去就是了
左右對照看到什麼,是不是就看最明顯三條是A1/W4、B1、M750,另外還有淺淺的B591、W8。看著看著想起以前我拍攝天空的縮時攝影時,就透過飛機雲的樣子推測過我家附近至少會看到三條航線,現在透過ADS-B的資料來對照,果然沒錯。
如果根據每分鐘改變的高度,來分類是爬升還是下降,紅色是下降,綠色是上升,當然在國際航線上,就是一直維持高度不變的灰色,而綠色的就對應了桃園機場和松山機場起飛的飛機囉。
再來我們看看信號的強弱和空間的關係。某些地區幾乎沒有訊號,大多是因為飛機本來就不會飛到那。
再來我們看看信號的強弱和空間的關係。某些地區幾乎沒有訊號,大多是因為飛機本來就不會飛到那。
如果再把訊號與接收端的距離和高度做強度的比較,這樣就能看到經典的自由空間路徑損耗(Free Space Path Loss, FSPL)特性。近距離 (0-25km): 訊號強度(RSSI)從 -20 dBFS 快速掉落到 -30 dBFS。這是因為在距離很近時,距離增加一倍對訊號的百分比影響很大。遠距離 (50km 以上): 曲線開始趨於平緩,衰減的速度隨著距離增加而放慢。
高度 (Altitude) 的分層效應,觀察顏色的分佈:紫色點(低高度): 集中在左側(近距離)。因為飛機在低高度時,受限於地球曲率和地形遮蔽(障礙物),只能收得到近處的訊號。黃綠色點(高度 30000+ ft): 這些點可以延伸到 100km 甚至更遠。這是因為高空飛機與接收器之間通常沒有建築物或山脈阻擋,訊號路徑更接近純粹的物理模型。
除了這些raw data畫出的數據,其實透過這些數據的組合還有更多有趣的事,等下篇再來分享。