ADS-B 物理學:利用飛機 DAPs 數據重建大氣剖面與飛行分析
在上一篇《ADS-B 數位觀察:分析桃園空域航線、高度與信號傳播特性》中,處理了基本的航跡數據。本篇將進入大氣物理分析。用 R 語言對 DAPs 數據的處理,將每架飛機轉化為高空探空儀,重建出即時的大氣剖面。
數據清洗:確保物理分析的準確性
在進行物理計算前,必須篩選出可靠的樣本。在 dashboard.R 中,確保分析的是處於穩定巡航狀態的噴射機,排除低速或起降階段的干擾:
# 篩選高速、高空且具備完整參數的樣本
df <- df %>%
filter(!is.na(tas), !is.na(mach), !is.na(alt)) %>%
filter(tas > 100, mach > 0.3, alt > 5000)
熱力學推導:從馬赫數找回氣溫
高空感測最困難的是獲取準確的「靜溫」(Static Air Temperature),利用真空速 (TAS) 與馬赫數 (Mach) 的比值來推算音速,進而求得溫度。根據單位換算,節 (knots) 與絕對溫度的關係常數約為 38.945。
# 物理計算:音速與溫度
df <- df %>%
mutate(
speed_of_sound = tas / mach,
temp = (speed_of_sound / 38.945)^2 - 273.15
)
音速與高度的變化觀測
音速並非恆定,而是溫度的函數。隨著高度增加,氣溫下降,音速也隨之變慢。這在航空物理中至關重要,因為它直接影響了飛機的飛行性能包絡線。
對流層頂 (Tropopause) 的自動偵測
腳本中還包含了一套簡單的邏輯來預測對流層頂。如果在觀測最高度溫度仍持續下降,代表對流層頂位於更高空:
analyze_tropopause <- function(df) {
top_alt <- max(df$alt, na.rm = TRUE)
min_temp <- min(df$temp, na.rm = TRUE)
return(sprintf("對流層頂預測: 目前觀測最高 %.0f ft 溫度仍下降至 %.1f°C", top_alt, min_temp))
}
風場分析與西風指標 (Westerly Index)
利用飛機的地速 (GS) 與真空速 (TAS) 的差異,我們可以計算航向上的風分量。這對於觀察噴射氣流 (Jet Stream) 的強度非常有幫助。
# 計算高空西風帶強度指標
wind_diff <- avg_wind_east - avg_wind_west # 往東順風與往西逆風的差值
D-Value 分析:氣壓偏差的實測
這是腳本中另一個進階分析。飛機回傳的高度有兩種:氣壓高度 (alt) 與 GPS 幾何高度 (alt_geom)。兩者的差值稱為 D-Value。
# 計算 D-Value:反映大氣壓與標準大氣的偏差
df <- df %>% mutate(d_value = alt_geom - alt)
這能告訴我們當前空域的氣壓是否偏離標準大氣。正值代表當地氣壓高於標準(高壓區),負值則代表低壓區。
高階建模:空氣密度與能量高度
利用標準大氣模型推導出空氣密度與總比能 (Specific Energy Height):
# 計算總比能 (特定能量高度)
df <- df %>%
mutate(
v_ms = tas * 0.514444,
specific_energy = h_m + (v_ms^2) / (2 * g)
)
0.514444 為節轉公尺/秒之常數,確保能量高度計算之單位一致性。這個指標代表了飛機的「總能量」,是評估飛行效率與性能包絡線的重要指標。
信號與流量分析 (Traffic & Signal)
除了物理參數,我們也對接收站本身的性能進行了建模。例如 RSSI (信號強度) 與 高度 的關係:
從數據中可以清楚觀察到,高度越高,接收到的 RSSI 數值通常越穩定。這背後隱含了兩個關鍵物理機制:
- 自由空間路徑損耗 (FSPL) 與平方反比定律:無線電能量隨距離平方遞減。雖然高空飛機距離接收站較遠,但因其處於高角度,避開了地表的建築物與地形遮擋。
- 視距傳播 (Line-of-Sight) 與第一菲涅耳區 (First Fresnel Zone):高空飛機擁有更開闊的傳播路徑,能有效減少「多路徑干擾」(Multi-path interference),避免了地面反射波與直接波互相干涉產生的信號衰落 (Fading)。這也就是為什麼 30,000 英尺以上的信號往往比地平面附近的信號更「純淨」。
航向流量統計 (Heading Rose)
利用圓盤圖展示主要流量的方向性:飛過台灣的航線多是東北西南走向的
性能差異:不同機種的飛行特徵
依照飛機重量類別 (Wake Turbulence Category) 進行分類,觀察 Heavy (如 A350/B777) 與 Small 機種在速度與巡航高度上的差異。
如果你對這些有興趣的話,你可以在這個github repo中找到相關的scripts。



