Precipitation estimation module

After the attenuation correction we can estimate the precipitation amount with a z-R conversion. In the function qpe_zr the parameter a and b depends on the drop size distribution and the water temeperature.

The qpe_zr function contains basic functions from \(\omega radlib\). At first, the unit “dBZ” is converted to “Z”. Afterwards the precipitation depth is calculated over an integration interval, which should be correspond to the scan interval of the weather radar. All parameter can be defined in the configuration file, which is loaded in the qpe_zr function. We use the attenuation corrected data, which we have processed with the attenuation correction module, for precipitation estimation.

import wrainfo as wrf

Note

The function works also for a xarray dataset which is linking over the time.

[1]:
ds_rain = wrf.precipitation.qpe_zr(ds=ds_clutter_corr,
                                   moment="DBZH_CORR",
                                   path="/tests/data/test_settings_wrainfo.json",
                                   a=200,
                                   b=1.6)
ds_rain
[1]:
<xarray.Dataset>
Dimensions:          (azimuth: 720, range: 936)
Coordinates: (12/15)
  * azimuth          (azimuth) float64 0.25 0.75 1.25 1.75 ... 358.8 359.2 359.8
    elevation        (azimuth) float64 0.5 0.5 0.5 0.5 0.5 ... 0.5 0.5 0.5 0.5
    rtime            (azimuth) datetime64[ns] 2022-02-16T13:45:28.941817600 ....
  * range            (range) float32 37.5 112.5 187.5 ... 7.009e+04 7.016e+04
    time             datetime64[ns] 2022-02-16T13:45:01
    sweep_mode       <U20 'azimuth_surveillance'
    ...               ...
    x                (azimuth, range) float64 ...
    y                (azimuth, range) float64 ...
    z                (azimuth, range) float64 ...
    gr               (azimuth, range) float64 ...
    rays             (azimuth, range) float64 ...
    bins             (azimuth, range) float32 ...
Data variables: (12/13)
    RATE             (azimuth, range) float32 ...
    DBZH             (azimuth, range) float32 ...
    VRAD             (azimuth, range) float32 ...
    ZDR              (azimuth, range) float32 ...
    KDP              (azimuth, range) float32 ...
    PHIDP            (azimuth, range) float32 ...
    ...               ...
    WRAD             (azimuth, range) float32 ...
    QC_INFO          (azimuth, range) float32 ...
    FUZZ             (azimuth, range) float64 ...
    DBZH_no_clutter  (azimuth, range) float32 ...
    DBZH_CORR        (azimuth, range) float32 nan nan nan nan ... nan nan nan
    PREC_ZR          (azimuth, range) float32 nan nan nan nan ... nan nan nan
Attributes:
    fixed_angle:  0.5

Note

The German Weather Service uses based on statistical analyses for a=256 and b=1.42.

Seealso

You can find a detailed description of the basic function from \(\omega radlib\), here.

Now we can plot the precipitation amount.

[2]:
import wradlib as wrl
import matplotlib.pyplot as plt

# georefenced dataset for plot
ds_rain_georef=ds_rain.pipe(wrl.georef.georeference)

ds_rain_georef.PREC_ZR.plot(x="x", y="y", cmap="jet", vmax=1.5)
[2]:
<matplotlib.collections.QuadMesh at 0x15343dea6df0>
../_images/jupyter_notebooks_precipitation_estimation_7_1.png

Library Reference

Seealso

Get more information about the precipitaion estimation module in the library reference section.