前言
雷达在气象探测的重要地位不必多言。
昨天有朋友留言问雷达产品的廓线怎么绘制,我碰巧知道一种方法。
本项目旨在探索基于pyart库用于绘制雷达反射率廓线。
我们将介绍实现雷达产品廓线步骤和代码示例
点击以下链接可在线运行Fork查看完整程序 🔜🔜若没有成功加载可视化图,点击运行可以查看 ps:隐藏代码在【代码已被隐藏】所在行,点击所在行,可以看到该行的最右角,会出现个三角形,点击查看即可
基于pyart的雷达产品廓线的绘制方法
导入库与转格式
In [1]:
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
from pycwr.io import read_auto
import pyart
import cmaps
import logging
logging.getLogger('matplotlib.font_manager').setLevel(level=logging.CRITICAL)
PRD = read_auto('/home/mw/input/pycwr5461/Z_RADR_I_Z9898_20190828181529_O_DOR_SAD_CAP_FMT (1).bin.bz2')
radar = PRD.ToPyartRadar()
## You are using the Python ARM Radar Toolkit (Py-ART), an open source
## library for working with weather radar data. Py-ART is partly
## supported by the U.S. Department of Energy as part of the Atmospheric
## Radiation Measurement (ARM) Climate Research Facility, an Office of
## Science user facility.
##
## If you use this software to prepare a publication, please cite:
##
## JJ Helmus and SM Collis, JORS 2016, doi: 10.5334/jors.119
In [2]:
grid = pyart.map.grid_from_radars(
(radar,),
grid_shape=(20, 200, 200), # 想计算速度快点可以减少格点数
grid_limits=( ( 0.0, 20000,),(-330000.0, 330000.0),(-330000, 330000.0)), #设置了网格的范围
fields=["reflectivity"], # 变量)
In [3]:
cmap1=cmaps.radarfig = plt.figure(figsize=(18, 6))ax1 = plt.subplot(111, projection=ccrs.PlateCarree())display = pyart.graph.GridMapDisplay(grid)display.plot_grid(
"reflectivity",
ax=ax1,
cmap=cmap1,
vmin=0,
vmax=70,)
有了经纬度就可以取点
根据经纬度取廓线
In [4]:
ds = pyart.util.columnsect.get_field_location(radar, 17.8,110.4)
ds
In [5]:
ds.reflectivity.plot(y="height")
[<matplotlib.lines.Line2D at 0x7f4cd73e96a0>]
In [6]:
ds.differential_reflectivity.plot(y="height")
[<matplotlib.lines.Line2D at 0x7f4cd731e760>]
In [7]:
prof=pyart.util.column_vertical_profile(radar, 17.8,110.4)
prof
反射率廓线
In [8]:
prof.reflectivity.plot(y="height")
[<matplotlib.lines.Line2D at 0x7f4cd72e7a30>]
差分反射率廓线
In [9]:
prof.differential_reflectivity.plot(y="height")
[<matplotlib.lines.Line2D at 0x7f4cb1649670>]
反射率剖面
小结
虽然理论上用pycinrad或者pycwr读取然后进行插值应该也做得到类似的效果,毕竟读取出来的数据是xarray, 人家pyart有直接的函数就直接用吧,不必绕远路了 两个函数的准确率上,我是偏向后者的,因为官网上的user guide保留了后者的函数说明 专业的博主要勇于下判断 当然实际效果如何还需各位自己检验