背景 |
2020年,美国飓风 Laura 临近登陆时,NOAA派出飞机投放探空仪观测,很快推特上便有了相应的T-lnP图,如下图。

我国在2020年,也进行了XX计划。在台风森拉克过境后,即在台风外围投放了数十枚探空仪,获取了非常密集的温压湿风探空曲线。这是当时的卫星云图(如下图,来源:韩国GK2A卫星),可以看到,当时台风主体已经进入越南境内,而释放探空仪的位置位于海南岛东南近海。

真彩色云图

红外增强云图
读数据 |
由于所用数据是Excel的表格,我们用Pandas读取其表单。
from datetime import datetime,timedelta
import pandas as pd
f = '17_54_4.xls'
dateparse = lambda x: datetime.strptime('2020-08-02 ' + x, '%Y-%m-%d %H:%M:%S')
df = pd.read_excel(f,sheet_name=0,parse_dates=['时间'], date_parser=dateparse)
df['时间'] = df['时间'] - timedelta(hours=8)
df[df == -9999] = np.nan
df = df[::-1]

读取结果
绘T-lnP图 |
用NCAR开发的Metpy包来画T-lnP图,官方链接如下:
官方提供了诸多例子,包括画常规天气图和T-lnP图,以及计算物理量、诊断量。链接如下:
根据Simple_Sounding例子,来画我们所需最简单的T-lnP图。注意:美国人用的是斜T-lnP,即旋转30度,而国内是T-lnP,需要改成0度。
对应的函数接口如下:
https://unidata.github.io/MetPy/latest/api/generated/metpy.plots.SkewT.html

SkewT的函数说明
具体绘图脚本如下:
import matplotlib.pyplot as plt
import metpy.calc as mpcalc
from metpy.plots import SkewT, Hodograph
from metpy.units import units
import metpy.interpolate as mpi
p = df['气压'].values * units.hPa
T = df['温度'].values * units.degC
rh = df['湿度'].values / 100
Td = mpcalc.dewpoint_rh(T, rh)
wsp = df['风速'].values * units('m/s')
wdr = df['风向'].values * units.degrees
u, v = mpcalc.wind_components(wsp, wdr)
fig = plt.figure(figsize=(12, 12))
skew = SkewT(fig, rotation=0)
skew.plot(p, T, 'r')
skew.plot(p, Td, 'g')
skew.plot_barbs(p[::5], u[::5], v[::5])
skew.ax.set_ylim(1000, 250)
skew.ax.set_xlim(-40, 30)
lcl_pressure, lcl_temperature = mpcalc.lcl(p[0], T[0], Td[0])
skew.plot(lcl_pressure, lcl_temperature, 'ko', markerfacecolor='black')
prof = mpcalc.parcel_profile(p, T[0], Td[0]).to('degC')
skew.plot(p, prof, 'k', linewidth=2)
skew.shade_cin(p, T, prof)
skew.shade_cape(p, T, prof)
skew.ax.axvline(0, color='c', linestyle='--', linewidth=2)
skew.plot_dry_adiabats()
skew.plot_moist_adiabats()
skew.plot_mixing_lines()

T-lnP图, 世界时: 2020-08-02T10
可以看出台风过后CAPE还是比较大。
