探空站一般是為探測高空氣象要素而建立的,通過探空氣球來收集每天8點和20點的高空氣象數據,遇到特殊天氣(颱風等)會進行加密觀測。可以獲近地層、850、700、500、200百帕的溫度、溫度露點差、位勢高度、風速風向等氣象要素。探空數據在天氣預報有著重要的指示作用,可以分析出高空引導氣流的位置、強度,及到達本地的時間和對當地天氣的影響情況。
數據來自懷俄明大學:http://weather.uwyo.edu/upperair/seasia.html
我國的探空站表格:http://data.cma.cn/article/showPDFFile.html?file=/pic/static/doc/B/B.0011.0001C/UPAR_CHN_MUL_STATION.pdf
在之前的一些文章裡使用過siphon,他除了可以下載到預報數據、再分析數據以外還可以下載到懷俄明的探空數據。
下面為簡單的示例,時間段和下載的站點可以自行設置。
#導入模塊
import datetime
from metpy.units import units
from siphon.simplewebservice.wyoming import WyomingUpperAir
# 設置下載時段(這裡是UTC時刻)
start = datetime.datetime(2019, 8, 1, 0)
end = datetime.datetime(2019, 8, 2, 0)
datelist = []
while start<=end:
datelist.append(start)
start+=datetime.timedelta(hours=12)
# 選擇下載站點(以北京為例)
stationlist = ['54511']
# 批量下載
for station in stationlist:
for date in datelist:
try:
df = WyomingUpperAir.request_data(date, station)
df.to_csv(station+'_'+date.strftime('%Y%m%d%H')+'.csv',index=False)
print(f'{date.strftime("%Y%m%d_%H")}下載成功')
except Exception as e:
print(f'{date.strftime("%Y%m%d_%H")}下載失敗: {e}')
pass
讀取示例數據數據包含氣壓、高度、氣溫、露點、風向、風速、經向風速、緯向風速,還包含探空站觀測時刻、經緯度和高程信息。
import pandas as pd
import metpy.calc as mpcalc
from metpy.cbook import get_test_data
from metpy.plots import add_metpy_logo, SkewT
from metpy.units import units
import matplotlib.pyplot as plt
df = pd.read_csv('./54511_2019080200.csv')
df.info()
數據可視化p = df['pressure'].values * units.hPa
T = df['temperature'].values * units.degC
Td = df['dewpoint'].values * units.degC
wind_speed = df['speed'].values * units.knots
wind_dir = df['direction'].values * units.degrees
u, v = mpcalc.wind_components(wind_speed, wind_dir)
fig = plt.figure(figsize=(9, 9))
skew = SkewT(fig, rotation=45)
# Plot the data using normal plotting functions, in this case using
# log scaling in Y, as dictated by the typical meteorological plot.
skew.plot(p, T, 'r')
skew.plot(p, Td, 'g')
skew.plot_barbs(p, u, v)
skew.ax.set_ylim(1050, 300)
skew.ax.set_xlim(0, 40)
# Calculate LCL height and plot as black dot. Because `p`'s first value is
# ~1000 mb and its last value is ~250 mb, the `0` index is selected for
# `p`, `T`, and `Td` to lift the parcel from the surface. If `p` was inverted,
# i.e. start from low value, 250 mb, to a high value, 1000 mb, the `-1` index
# should be selected.
lcl_pressure, lcl_temperature = mpcalc.lcl(p[0], T[0], Td[0])
skew.plot(lcl_pressure, lcl_temperature, 'ko', markerfacecolor='black')
# Calculate full parcel profile and add to plot as black line
prof = mpcalc.parcel_profile(p, T[0], Td[0]).to('degC')
skew.plot(p, prof, 'k', linewidth=2)
# Shade areas of CAPE and CIN
skew.shade_cin(p, T, prof)
skew.shade_cape(p, T, prof)
# An example of a slanted line at constant T -- in this case the 0
# isotherm
skew.ax.axvline(0, color='c', linestyle='--', linewidth=2)
# Add the relevant special lines
skew.plot_dry_adiabats()
skew.plot_moist_adiabats()
skew.plot_mixing_lines()
大氣物理知識回顧其實到這裡本來就應該結束了,但是還想根據這張圖再繼續說說大氣物理中的靜力穩定度的問題。
T-lnP圖
通過大氣垂直探空數據繪製T-lnP圖,在天氣學中經常用這種方式來判斷對流發展與否。先說幾個基本概念:幹絕熱線(紅),溼絕熱線(藍),等飽和混合比 線 (綠)
紅、藍兩條線分別代表幹氣團和溼氣團上升過程中的溫度遞減變化程度,至於為什麼藍色的線斜率更大,也就是為什麼上升同樣高度溼空氣比幹空氣溫度減少少?這是因為飽和溼空氣在上升過程中,會發生形態變化,氣態水分子變成液態水分子,在這個相變過程中會釋放潛熱,既然這個過程會放熱自然溫度減少就更小了。
綠線代表的等飽和比溼線,也就是表明在這個溫度、這個高度下空氣達到飽和,如果在繼續上升空氣中的水汽就會凝結成水滴。fig = plt.figure(figsize=(9, 9))
skew = SkewT(fig, rotation=45)
skew.plot_dry_adiabats()
skew.plot_moist_adiabats()
skew.plot_mixing_lines()
T-lnP圖中線條的物理意義大氣層結曲線:環境空氣溫度隨高度的分布曲線。
大氣狀態曲線:氣塊作垂直運動時,溫度隨高度的變化曲線。抬升凝結高度(LCL):氣塊達到這個高度,水汽達到飽和,再向上會就凝結成水滴。
自由對流高度(LFC):氣塊達到這個高度以後不需要任何外力就可以自由上升。
平衡高度(EL):受力平衡點,垂直速度最大,加速度為0。
對流雲頂高度(MPL):氣塊能達到的最大高度,取決於EL層以上負不穩定能量剛好抵消CAPE時所達到的高度。對流有效位能(CAPE):正不穩定能量,是氣塊達到自由對流高度後可以獲得繼續上升的能量。
對流抑制能量(CIN):負不穩定能量,是大氣底層的氣塊要能達到自由對流高度,至少需從其它途徑獲得能量的下限。有了上面這些基本介紹再對照著剛才可視化的圖可能會更好理解。
大氣分型
紅色實線為層結曲線,黑色實線為狀態曲線,其他各個高度和能量已經在圖中標註出來。MPL是大概畫了個位置,原則還是在EL上面找到一個高度使得藍色區域面積與紅色的CAPE面積相等。了解了上面這些內容,就可以根據層結曲線和狀態曲線的分布將大氣穩定性分為條件性不穩定、絕對穩定、絕對不穩定3種類型。
1.1 真潛在不穩定1.2 假潛在不穩定絕對穩定絕對不穩定
更多詳細內容可以看學習資源 | 大氣物理學(南信大官方)。根據分型和上面我們對北京地區探空數據的可視化,可以得出2019年8月2日北京探測到的大氣屬於假潛在不穩定。要藉助一定外部的因素才能發生對流,比如非絕熱加熱、垂直運動等。
資源獲取獲取數據及jupyter notebook腳本:在好奇心Log公眾號後臺回復「探空」