为了提高预报员对重大天气过程的预报分析能力,减少重复劳动浪费的时间,使重大天气过程复盘分析变得更加高效。研究将面向国内天气预报业务和科研应用的通用型天气学诊断分析的Python工具包MetDig开发为可共享的Web应用程序,实现多模式预报数据及再分析实况数据可定制的、可视化的诊断分析功能(包括热力诊断、动力诊断、水汽诊断、天气学诊断、降水诊断、要素诊断等共六大类28种综合图),为重大天气过程预报、复盘、机理研究等应用场景提供诊断分析技术支持。 In order to improve the ability of forecasters to forecast and analyze major weather processes, reduce the time wasted by repetitive labor, and make the multi-disk analysis of major weather processes more efficient, in this paper, MetDig, a Python toolkit for general synoptic diagnostic analysis for domestic weather forecasting business and scientific research applications, is developed into a shareable Web application. It can realize customized and visual diagnostic analysis functions of multi-model forecast data and reanalysis of live data (including thermal diagnosis, dynamic diagnosis, water vapor diagnosis, weather diagnosis, precipitation diagnosis, factor diagnosis, etc., a total of six categories and 28 kinds of comprehensive maps), and provide diagnostic analysis technical support for application scenarios such as major weather process prediction, review and mechanism research.
为了提高预报员对重大天气过程的预报分析能力,减少重复劳动浪费的时间,使重大天气过程复盘分析变得更加高效。研究将面向国内天气预报业务和科研应用的通用型天气学诊断分析的Python工具包MetDig开发为可共享的Web应用程序,实现多模式预报数据及再分析实况数据可定制的、可视化的诊断分析功能(包括热力诊断、动力诊断、水汽诊断、天气学诊断、降水诊断、要素诊断等共六大类28种综合图),为重大天气过程预报、复盘、机理研究等应用场景提供诊断分析技术支持。
气象,Streamlit,数据可视化,MetDig
Chao Hu
Meishan Meteorological Bureau, Meishan Sichuan
Received: Apr. 10th, 2024; accepted: May 6th, 2024; published: May 15th, 2024
In order to improve the ability of forecasters to forecast and analyze major weather processes, reduce the time wasted by repetitive labor, and make the multi-disk analysis of major weather processes more efficient, in this paper, MetDig, a Python toolkit for general synoptic diagnostic analysis for domestic weather forecasting business and scientific research applications, is developed into a shareable Web application. It can realize customized and visual diagnostic analysis functions of multi-model forecast data and reanalysis of live data (including thermal diagnosis, dynamic diagnosis, water vapor diagnosis, weather diagnosis, precipitation diagnosis, factor diagnosis, etc., a total of six categories and 28 kinds of comprehensive maps), and provide diagnostic analysis technical support for application scenarios such as major weather process prediction, review and mechanism research.
Keywords:Meteorology, Streamlit, Data Visualization, MetDig
Copyright © 2024 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
近年来,气候变化带来的极端天气现象频频发生,对社会生产生活造成了严重影响。气象预报预警工作的重要性愈发凸显,对此,预报员需要进行大量的气象预报预警复盘工作总结,以期提高工作效率和预报准确性 [
本平台基于国家气象中心天气预报技术研发室开发的MetDig工具包和Streamlit数据可视化的Python框架 [
本系统采用Streamlit数据可视化框架、B/S架构方式进行设计开发 [
本系统采用数据层、数据控制层、应用层3层结构体系。
图1. 总体架构
基于python编程,利用MetDig工具包的io数据资源访问模板读取绘制从MICAPS CASSANDRA (MICAPS分布式数据库大数据)、CMADaaS (气象大数据云平台•天擎)、ERA5 (欧洲中期天气预报中心对1950年1月至今全球气候的第五代大气再分析数据集)等在线数据API中,获取模式预报、实况再分析资料、站点观测、卫星云图、天气雷达等气象数据。
1、利用utl通用工具库,对所有数据进行格式转换为stda标准格式数据,包括numpy数据转网格stda标准格式数据函数、网格stda标准格式数据转站点stda标准格式数据函数等。2、利用的cal诊断分析计算模块对数据进行气象诊断分析计算,包括动力、热力、水汽、天气特征和统计分析等计算。3、利用products产品可视化模块对动力、热力、水汽、天气特征和统计分析等诊断分析产品进行绘图处理,并调用graphics绘图模块进行产品制作。
为用户提供各种模式预报及再分析的诊断分析产品包括热力诊断、动力诊断、水汽诊断、天气学诊断、降水诊断、要素诊断等共六大类28种综合图。
平台前端主界面上右侧边栏为操作区,左侧为图片及数值显示区,如图2所示。用户可以定制的内容包括:数据源、预报模式种类、数据日期和时次、图片所显示的区域、物理量要素的高度层次、需要显示具体数值的点的经纬度、诊断分析的类别等。
图2. 系统界面
操作区首先选择的是数据源,“cassandra”为micpas4的数据源,该数据源的优势就是直观,里面有什么数据,数据起始日期及数据时次是否有缺都可以直接在micaps4软件的数据源检索里面看到;“CMADaaS”为气象大数据云平台•天擎的数据源,优势是数据的起始日期更长;“cds”为欧洲中心ERA5再分析数据集,它的起始时间为1950年1月,数据覆盖范围为全球,空间分辨率为0.1˚ × 0.1˚,时间分辨率为1小时。预报员若是利用本平台做重大天气过程预报,则数据源需要选择为“cassandra”或者“CMADaaS”,若是用于复盘和机理研究则可以选择模式预报的数据源“cassandra”或者“CMADaaS”,也可以选择再分析资料数据源“cds”。
当数据源选择为“cassandra”或者“CMADaaS”,下一步就要确定数据的起报日期、起报时次、预报时效,以及确定数值模式,目前有“ecmwf”、“cma_gfs”、“ncep_gfs”、“cma_meso_3km”四个模式可选。若选择数据源为“cds”则接下来要选择是数据日期及时次(因为ERA5是欧洲中心的再分析数据所以不需要选择预报时效和模式名)。
接下来是选择绘图区域,可以选择“中国及周边”、“全国”,“西南”,“四川”,“眉山”,“华南”,“华北”等区域,也可以自定义区域。
然后是要素的层次,分为默认层次和自定义层次,若选择自定义层次则需要分别选择高度场层次、风场层次及物理量层次,但是有些综合图里面包含了特定的层次是无法自定义的,比如“海平面气压场”、“6小时降水”等。
接下来是选择任意一个点的经度和纬度用于显示其所对应的各种物理量数值(默认位置在眉山本站),用于写论文时查看具体数值。
最后就是热力诊断、动力诊断、水汽诊断、天气学诊断、降水诊断、要素诊断等共六大类诊断分析的运行按钮,单击其中一个稍等一会儿即可绘制出相应类别的几张综合图。
要想绘制诊断分析综合图首先要对数据进行计算,部分物理量是模式自带的,另外一部分需要用现有物理量提前计算所得,下面介绍部分物理量的计算方法及本平台所出部分综合图展示。
如图3所示,为本平台所出的含有位温物理量的综合图。位温定义为空气干绝热过程变化到气压p = 1000 hPa时的温度 [
代码实现:
def potential_temperature (pres, tmp):
pres_p = utl.stda_to_quantity (pres)# hPa
tmp_p = utl.stda_to_quantity (tmp)# degC
thta_p = mpcalc.potential_temperature (pres_p, tmp_p)# Kelvin
thta = utl.quantity_to_stda_byreference (‘that’, thta_p, tmp)# degC
return thta
thta = mdgcal.potential_temperature (pres, tmp)
图3. 含位温的综合图
图4. 含相当位温的综合图
如图4所示,为本平台所出的含有相当温度物理量的综合图。相当位温是某一高度的气团下降(或上升)至参照气压值的位置时,经过绝热膨胀(或收缩)以及所含的水汽全部凝结为水滴释出潜热后,所具有的温度 [
θ e = θ exp ( L q c p d T c )
代码实现:
def equivalent_potential_temperature(pressure, temperature, dewpoint):
t = temperature.to(‘kelvin’).magnitude
td = dewpoint.to(‘kelvin’).magnitude
r = saturation_mixing_ratio(pressure, dewpoint).magnitude
e = saturation_vapor_pressure(dewpoint)
t_l = 56 + 1. / (1. / (td - 56) + np.log(t / td) / 800.)
th_l = potential_temperature(pressure - e, temperature) * (t / t_l) ** (0.28 * r)
return th_l * np.exp(r * (1 + 0.448 * r) * (3036. / t_l - 1.78))
图5. 含水汽通量的综合图
如图5所示,为本平台所出的含有水汽通量物理量的综合图。一般说的水汽通量,多指水平水汽通量,它是单位时间内流经与气流方向正交的单位截面积的水汽质量 [
| F h | = | V | q / g
代码实现:
def cal_ivt_singlelevel (spfh, wsp):
spfh_p = utl.stda_to_quantity (spfh)# g/kg
wsp_p = utl.stda_to_quantity (wsp)# m/s
iq = wsp_p * spfh_p/ (9.8*units(‘m/s**2’))
iq = utl.quantity_to_stda_byreference(‘wvfl’, iq, spfh) # g/(cm * hPa * s)
return iq
图6. 含温度平流的综合图
如图6所示,为本平台所出的含有温度平流物理量的综合图。温度平流 − V ⋅ ∇ T 是指较暖空气向较冷空气方向或者较冷空气向较暖空气方向输送 [
− V ⋅ ∇ T = − ( u ∂ T ∂ x + v ∂ T ∂ y )
代码实现:
def var_advect (var, u, v):
dx, dy = mpcalc.lat_lon_grid_deltas (u[‘lon’].values, u [‘lat’].values)
adv = xr.zeros_like (u).copy ()
for ilvl in var [‘level’].values:
for it in var [‘time’].values:
for idt in var[‘dtime’].values:
for imdl in var[‘member’].values:
u2d = u.sel (level = ilvl, time = it, dtime = idt, member = imdl).squeeze()
v2d = v.sel (level = ilvl, time = it, dtime = idt, member = imdl).squeeze()
var2d = var.sel (level = ilvl, time = it, dtime = idt, member = imdl).squeeze()
u2d = utl.stda_to_quantity (u2d)
v2d = utl.stda_to_quantity (v2d)
var2d = utl.stda_to_quantity (var2d)
adv2d = mpcalc.advection (var2d, u=u2d, v = v2d, dx = dx, dy = dy) adv.loc [dict (level = ilvl, time = it, dtime = idt, member = imdl)] = np.array(adv2d) adv.attrs [‘var_units’] = str (adv2d.units) adv = utl.quantity_to_stda_byreference (var.attrs [‘var_name’] + ‘adv’, adv.values * units (adv.attrs [‘var_units’]), u) return adv
tmpadv = var_advect(tmp, _u, _v)
眉山气象数据可视化诊断分析平台将面向国内天气预报业务和科研应用的通用型天气学诊断分析的python工具包MetDig转换为可共享的Web应用程序,于2023年汛期在眉山市投入运行,目前,该平台已成为眉山市气象台重大天气过程预报必看平台及科研绘图利器,界面直观操作方便,大大提高了气象台的工作效率,深受预报员的好评。今后,根据业务和实际工作的需要,还将进一步的丰富平台内容,不断完善各项功能,为我市重大天气过程预报、复盘、机理研究等应用场景提供诊断分析有力的技术支撑。
胡 超. 气象数据可视化诊断分析平台设计与应用开发Design and Application Development of Meteorological Data Visualization Diagnosis and Analysis Platform[J]. 计算机科学与应用, 2024, 14(05): 14-22. https://doi.org/10.12677/csa.2024.145110
https://doi.org/10.3969/j.issn.1006-4354.2014.02.016
https://doi.org/10.3969/j.issn.1672-9528.2023.07.008
https://doi.org/10.3969/j.issn.1007-5739.2018.22.127