水凝物粒子分类产品HCL产品的计算是雷达定量估测降水中一个重要的步骤。 在计算HCL产品时,PyCWR和PyCINRAD所采用的方法有所不同。 PyCWR进行水凝物分类时,依据的是双偏振雷达基数据和温度廓线,PyCINRAD只依据了双偏振雷达基数据。 以下是基于同样的双偏振雷达基数据文件应用两个工具库计算水凝物分类产品的效果对比。
from pycwr.io import read_auto
from pycwr.retrieve.HID import fhc_HCL
import matplotlib.pyplot as plt
import numpy as np
from pycwr.draw.RadarPlot import plot_xy, add_rings
import pandas as pd
# 设置全局字体为SimHei,支持图像中使用中文标签
import matplotlib as mpl
mpl.rcParams['font.family'] = 'SimHei'
# 解决负号显示问题
mpl.rcParams['axes.unicode_minus'] = False
这里雷达基数据文件用的是PYCWR官方手册上给出的示例文件。
file = r"D/NUIST.20150627.002438.AR2.bz2" # 基数据
file_t = r"D:/20150627.csv" # 温度廓线
# 分别读取雷达基数据和温度廓线文件
NRadar = read_auto(file)
temp = pd.read_csv(file_t, index_col=0, header=None, names=['temp'])
num = 2
R = np.where(NRadar.fields[num].CC>0.9, NRadar.fields[num].dBZ,
np.nan)
KDP = np.where(NRadar.fields[num].CC>0.9, NRadar.fields[num].KDP,
np.nan)
ZDR = np.where(NRadar.fields[num].CC>0.9, NRadar.fields[num].ZDR,
np.nan)
CC = np.where(NRadar.fields[num].CC>0.9, NRadar.fields[num].CC,
np.nan)
temp_2d = np.interp(NRadar.fields[num].z.values/1000., temp.index,
temp['temp']) # 温度插值
R[:,0] = np.nan
hcl = fhc_HCL(dBZ=R, KDP=KDP, ZDR=ZDR, CC = CC, T=temp_2d)
ticks = np.arange(1, 11, 1)
ticklabels = ['Drizzle', 'Rain', 'Ice Crystals', 'Dry Snow',
'Wet Snow', 'Vertical Ice', 'LD Graupel', 'HD Graupel', 'Hail',
'Big Drops']
fig, ax = plt.subplots()
plot_xy(ax, NRadar.fields[num].x, NRadar.fields[num].y, hcl,
cmap="CN_hcl", bounds=np.arange(0.5,10.6,1),
cbar_ticks=ticks, cbar_ticklabels=ticklabels)
add_rings(ax=ax, rings=[0, 50, 100, 150]) # 增加等径向距离圈
ax.set_xlim([-150, 150])
ax.set_ylim([-150, 150])
ax.set_xlabel("东西向雷达径向距离/km", fontsize=12)
ax.set_ylabel("南北向雷达径向距离/km", fontsize=12)
ax.set_title("2.4度仰角水凝物粒子分类", fontsize=14)
plt.show()
import cinrad
from cinrad.visualize import PPI
import matplotlib.colors as colors
file = r"D:/NUIST.20150627.002438.AR2.bz2"
f = cinrad.io.read_auto(file)
# 使用第3个仰角的基本数据产品
ref = f.get_data(2, 150, "REF")
zdr = f.get_data(2, 150, "ZDR")
rho = f.get_data(2, 150, "RHO")
kdp = f.get_data(2, 150, "KDP")
# 下方“band”参数需要根据雷达电磁波波段,手动输入S/C/X
HCL = cinrad.calc.hydro_class(ref, zdr, rho, kdp, band="S")
hid_colors = ['LightBlue', 'MediumBlue', 'DarkOrange', 'LightPink',
'Cyan', 'DarkGray', 'Lime', 'Yellow', 'Red', 'Fuchsia']
hcl_cmap = colors.ListedColormap(hid_colors)
fig = PPI(HCL, add_city_names=True, dpi=600,
style="white",cmap=hcl_cmap, nlabel=10)
# 绘制150 km处等径向距离圈
fig.plot_range_rings(150, color='black', linewidth=1.0)
#每隔50 km绘制一个等径向距离圈,直到绘制到150 km处停止
for i in [50,100,150]:
fig.plot_range_rings(i, color='black', linewidth=1.0)
plt.show()


PyCWR计算HCL的产品算法参考了Py-ART,但在输入端更适用于中国雷达基数据格式。
END
声明:欢迎转载、转发。气象学家公众号转载信息旨在传播交流,其内容由作者负责,不代表本号观点。文中部分图片来源于网络,如涉及内容、版权和其他问题,请联系小编处理。