对于wrf文件中的诊断变量种类与对应变量,可参考:Available diagnostics
1、水平面插值
将有的3D数据,插值至对应气压面上,如根据3D的位势高度变量,插值到500hPa等压面。
ht = wrf_user_getvar(a, "z",time) ; height
p = wrf_user_getvar(a, "pressure",time) ; pressure
ht_500 = wrf_user_interp_level(ht,p,500,False)
wrf-python
z = getvar(ncfile, "z")
p = getvar(ncfile, "pressure")
ht_500 = interplevel(z, p, 500.)#500hPa位势高度
2、垂直剖面插值
主要是将等eta层的数据插到对应位势高度上,此时得到3D数据对应Z轴为位势高度。
主要用于绘制垂直剖面图使用。
z = wrf_user_getvar(a, "z",time) ; grid point height
qv = wrf_user_getvar(a, "QVAPOR",time) ;
latlon = (/-118,38,-115,40/)
opt = True
opt@latlon = True
opt@linecoords = True ; returns lat/lon coordinates on line as attributes "lats","lons"
opt@file_handle = a
qv_latlon = wrf_user_vert_cross(qv,z,latlon,opt)
wrf-python:
z = getvar(ncfile, "z")
p = getvar(ncfile, "pressure")
# Define a start point and end point in grid coordinates
start_point = CoordPair(x=0, y=(z.shape[-2]-1)
end_point = CoordPair(x=-1, y=(z.shape[-2]-1)
p_vert = vertcross(p, z, start_point=start_point, end_point=end_point, latlon=True)
NCL:官方示例丰富,主要根据其脚本修改绘制即可官方示例脚本
对于NCL,可使用WRF专用的绘图函数WRF-specific plotting functions,同样,也可以使用常用的gsn_csm plotting functions。
NCL官方文档示例极其丰富,学习以官方手册为主。
Python:主要使用Cartopy/Basemap(已停止维护)与matplotlib包结合。
WRF-python提供绘图辅助函数,用于获取 cartopy,basemap,PyNgl使用的地图对象,如:
cart_proj = get_cartopy(wrfin=ncfile)
# 从文件中获取地理边界,默认使用 XLAT, XLONG
# 提供变量名,可以获取其栅格边界
bounds = geo_bounds(wrfin=ncfile)
NCL:读取与处理nc数据快速,用于后处理的变量读取计算部分
python:绘图美观,已有现成封装绘图脚本,用于绘图。
在NCL中,常用的数据计算与切片逻辑与python一致,NCL中,Statistics函数中,可实现python numpy库的基本计算功能。
可先使用python(或其他熟悉语言)完成计算部分代码,再将其替换为NCL对应语句。
以下为示例,代码用处为:批量读取Wrfout文件,提取对应变量,计算均值(时间平均),并输出。
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
begin
; Make a list of all files we are interested in
DATADir ="/public/home/zhangzilu/Build_WRF/WRF-4.3/run/out/"
FILES = systemfunc (" ls -1 " + DATADir + "wrfout* ")
print(FILES)
a = addfiles(FILES+".nc","r")
times = wrf_user_getvar(a,"times",-1) ; get all times in the file
ntimes = dimsizes(times) ; number of times in the file
slp = wrf_user_getvar(a,"slp",-1) ; slp
z=wrf_user_getvar(a,"slp",-1) ; height
p=wrf_user_getvar(a,"pressure",-1) ; pressure
q=wrf_user_getvar(a,"QVAPOR",-1) ;humidity ratio
az=dim_avg_n(z, 0)
ap=dim_avg_n(p,0)
aq=dim_avg_n(q,0)
use_out=addfile("for_python.nc", "c")
use_out->z = az
use_out->p = ap
use_out->QVAPOR = q
可参见我的其他博客:
python cartopy极坐标网格绘制
python cartopy极地投影重叠问题解决
python cartopy绘制北极函数封装
python常见气象绘图函数
python绘制WRF土地利用
- 判断需要提取的变量与诊断量
确定后,使用getvar函数进行提取。
可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。
- 判断绘图类型
所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。
1D点线图:ll_to_xy interpline
2D填色图:interplevel
3D剖面图:vinterp vertcross
- 绘图、美化
色标、XY轴、标签的设置等等。
判断需要提取的变量与诊断量确定后,使用getvar函数进行提取。可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。判断绘图类型所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。1D点线图:ll_to_xy interpline2D填色图:interplevel3D剖面图:vinterp vertcross绘图、美化色标、XY轴、标签的设置等等。
本文主要介绍python对wrfout结果文件的初步后处理操作,以及基础绘图。
wrfout后处理包括:【读取wrfout文件、读取wrfout文件中变量metadata及数据、对高度场进行500hPa插值、输出nc文件】
基础绘图操作包括:【设置投影和范围、绘制等值线contour和等值线标值、副高区域填色contourf】
仅展示初步评估模拟的效果,若精美绘制需要进一步的设置、细化。
wrf-python
诊断和内插例程的集合,可与天气研究和预报(WRF-ARW)模型的输出一起使用。
该软件包提供了30多种诊断计算,几种插值例程以及实用程序,可帮助您通过Cartopy,底图或PyNGL进行绘图。 该功能类似于NCL WRF软件包提供的功能。
conda install -c conda-forge wrf-python
Ladwig, W. (2017). wrf-python (Version x.x.x) [Software]. Boulder, Colorado: UCAR/NCAR. https://doi.org/10.5065/D6W094P1
注意:版本号xxx应该设置为您使用的wrf-python的版本。
国家大气研究中心由国家科学基金会赞助。 本材料中表达的任何观点,发现,结论或建议不一定反映美国国家科学基金会的观点。
wrf后处理python主要是利用Python编程语言对WRF(Weather Research and Forecasting Model)模型输出的数据进行处理和分析。通过使用Python的相关库和工具,可以读取、处理、可视化和分析WRF模型的输出数据,从而得到更有意义的结果。
常用的气象数据处理库包括numpy、datetime、pandas、scipy和netcdf-python等。这些库提供了处理日期时间、数组、矩阵和NetCDF格式文件的功能,可以方便地读取和处理WRF模型的输出数据。
在WRF后处理过程中,可以使用Python绘制各种气象图像,如折线图、填色和等值线地图、流场矢量地图等。利用这些绘图功能,可以直观地展示WRF模型的结果,并进行进一步的分析和解释。
除了数据处理和可视化外,还可以利用Python构建自动化的WRF业务化预报系统。通过编写Python脚本,可以实现自动下载GFS实时预报资料、自动运行WRF预报系统以及自动发送邮件提示WRF运行结果等功能,提高工作效率和预报准确性。