强对流活动通常会伴随降水、降雹和龙卷风等现象,气象雷达则用于探测上述天气现象,并可以根据雷达观测数据采用外推等方法进行短临预报。对于科学研究和天气预报来说非常重要。

气象雷达观测所产生的数据通常是二进制格式,需要根据对应的数据说明文档进行解码,然后生成雷达产品。

雷达数据处理

目前我国已经布设了较为密集的气象雷达观测网,针对不同的地区特点选择了不同波段雷达。用于处理雷达数据的Python库相对较多,比如PyART、wradlibPyCINRAD等。

PyART和wradlib可以处理多种格式的雷达数据,但主要格式均为美国天气雷达数据格式。这两个库均提供了雷达数据的校正功能,此外wradlib还可以根据雷达回波进行粒子识别和分类,还可以进行降雨估计及结果调整

PyCINRAD为国内开发者利用Python开发的用于处理国内常见气象雷达格式的开源库,目前实现了数据处理和可视化功能。

PyART和wradlib的用户较多,而且不少额外的雷达产品库(比如雷达风场反演、湍流的检测评估等)都提供了相应的接口直接处理PyART的输出对象。

为了更好的利用Python的气象雷达生态库,添加了国内常见的雷达数据格式处理接口PyART中。目前已经实现了SA波段多普勒雷达和C波段双偏振多普勒雷达数据的处理接口。

双偏振雷达和普通多普勒雷达的区别在于:双偏振雷达可以在水平和垂直方向上发送和接收脉冲信号,而普通多普勒雷达仅能在水平方向上发送和接收脉冲信号。

SA波段雷达数据处理

SA雷达基数据存储结构较为简单,只需要根据格式说明文档进行顺序解码即可,具体的解码细节参考:pyart.io.sband_radar

以下为使用PyART处理SA雷达数据的示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt

import pyart
from pyart.io.sband_archive import read_sband_archive

filename = 'Z_RADR_I_Z9250_20190408232400_O_DOR_SA_CAP.bin'
radar = read_sband_archive(filename, station=(33.431, 120.201, 80))

fig, ax = plt.subplots(figsize=(12, 9))

display = pyart.graph.radardisplay.RadarDisplay(radar)
display.plot_ppi("reflectivity", 0, vmin=0, vmax=70)

plt.show()

C波段双偏振雷达数据处理

相比于S波段雷达而言,C波段双偏振多普勒雷达具有不少优点,比如:

  • 在识别目标物的大小、形状和种类时具有更好的表现;
  • 在降水估测方面具有更高的准确率;
  • 能够区分强降雨、冰雹、雪和雨夹雪
  • 改进了非气象回波的探测,比如地物阻挡、鸟群、龙卷带到空中的物体等;
  • 飞机结冰条件的探测;
  • 融化层的识别等

由于双偏振雷达的观测量增多,其数据存储结构相对SA雷达而言也较为复杂,因此在处理起来相对SA雷达麻烦一些。关于C波段双偏振雷达的数据的具体解码细节可查看pyart.io.C98DRadFile

以下为使用PyART处理C波段双偏振雷达示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from pyart.io.c98d_archive import c98dfile_archive

cradar = c98dfile_archive('NUIST.20140928.070704.AR2')
cdisplay = pyart.graph.RadarDisplay(cradar)

fig = plt.figure(figsize=(12, 9))

# plot super resolution reflectivity
ax = fig.add_subplot(111)
cdisplay.plot('dBZ', 0, title='C-band WSR-98D Radar Reflectivity',
              vmin=0, vmax=70, colorbar_label='reflectivity factor(dBZ)', ax=ax)

fig.savefig('dual_pol.png', dpi=300, bbox_inches='tight')

风场反演

Pyhton库中提供了多个基于气象雷达径向风的风场反演开源库,比如SingleDop、MultiDop、PyDDA等。SingleDop主要是针对单多普勒雷达的风场反演,MultiDop和PyDDA是基于多个多普勒雷达的风场反演工具。

上述三个库均可以和PyART无缝衔接,无需再进行过多的处理。以下以SingleDop反演SA雷达风场为例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import singledop

wind = singledop.SingleDoppler2D(radar=sradar, 
                                 grid_spacing=0.25,
                                 L=1, 
                                 sweep_number=1, 
                                 name_vr='velocity',
                                 thin_factor=[4, 4],
                                 grid_edge=120,
                                 sigma=1
                                 )

swdisplay = singledop.AnalysisDisplay(wind)

fig, ax = plt.subplots(figsize=(9, 9))
swdisplay.plot_velocity_vectors(ax=ax, legend=10)

ax.set_xlim([-100, 100])
ax.set_ylim([-100, 100])

fig.savefig('sa_wind.png', dpi=300, bbox_inches='tight')

由于没有其他格式雷达数据的测试数据和说明文档,因此,目前仅支持SA和WSR-98D雷达数据的解码。

PyDDAPyTDA库的兼容还需要进行一些调整和测试。

关于SA波段和上述C波段WSR-98D雷达数据的说明文档可直接下载查看