Meteorological products

Product generation

Primarily, Rack computes meteorological products in polar coordinate system. The resulting product is also in polar coordinates, hence called a polar product. It can be also called as an intermediate product because such a product is often processed further on, for example added to a composite or transformed to a Cartesian single-radar image. This design feature adds speed to production since many final products can be computed from the same polar product. This also facilitates developing the software, as a new meteorological algorithm needs to be programmed in a single module only.

By default, generation of a product removes the previous product from memory. Alternatively, several products can be written in the same output structure by issuing –append dataset or –append data (with optional index) before the product commands..

The rest of this section handles computation of polar products. Since end products are most often viewed in Cartesian coordinates and coloured, the examples include the Cartesian conversion (-c) and palette operation (–palette ). A quality field, when provided by the product operator, is attached right of the actual product image.

As processing and using Doppler data involves special aspects, it is handled in it own section, Basic Doppler products.

PseudoCAPPI

Constant-altitude position indicator (CAPPI) is obtained with –pCappi command. It takes altitude as its first argument.

rack volume.h5 --pCappi '1000,true,1,0,WAVG:1:8:-40' -o pCappi.h5
% altitude=1000 [metres]
% aboveSeaLevel=true
% beamWidth=1 [deg]
% weightMin=0 [-0.1|0...1]
% accumulationMethod=WAVG:1:8:-40 [string]

The Pseudo CAPPI product is computed by traversing all the bins of the volume data. The bins are weighted using an exponential function of the distance from reference altitude. This method allows using measurement data from upper and lower beams, when data has low quality or data is missing in the closest bins.

Rack supports computing three variations of CAPPI. They differ in ways vertically distant data – bins far below and above the requested altitude – near and far from the radar hence are handled.

  • CAPPI: weightMin > 0, dropping low-quality areas ie. marking them with nodata , resulting in an annular shaped image
  • Pseudo CAPPI: weightMin < 0, including data far off the nominal altitude
  • Default CAPPI: weightMin = 0, dropping low-quality areas ie. marking them with undetect , resulting in an annular shaped image

The images below illustrate these variations. Virtual beam width has been set smaller (0.5) to visualize the differences and the quality field.

The CAPPI product and its quality field.
The Pseudo CAPPI product and its quality field.
The 'compromized' CAPPI product and its quality field.

As a default setting, the relative quality of undetect bins is lower than that of detected signals; this affects e.g. creation of radar image composites. The relative quality can be changed with –undetectWeight command.

Maximum echo

Maximum reflectivity in vertical direction is obtained –maxEcho command. It takes two parametes: (minimum) altitude above which reflectances are considered and altitudeDev (altitude deviation), a fuzzy width parameter of the threshold.

rack volume.h5 --pMaxEcho '1000:9000,MAXIMUM' -o pMaxEcho.h5
% altitude=1000:9000 [metres]
% accumulationMethod=MAXIMUM [MAXIMUM|AVERAGE|WAVG:2:2|MAXW]

The quality is low near and far from the radar, as precipitation may reside over and under radar beams, respectively.

The maximum echo product and its quality field.

Echo top altitude

Height of precipitation can be computed with –echoTop command. It takes threshold reflectivity (dBZ) as its first argument.

rack volume.h5 --pEchoTop '20,-50:15000,-32,1:0.8:0.6:0.4:0.2,20,0:0,true' -o pEchoTop.h5
% threshold=20 [reflectivity limit (dB)]
% reference=-50:15000 ['dry point' of low reflectivity and high altitude [dBZ:m]]
% undetectValue=-32 [reflectivity replacing 'undetect' [dBZ]]
% weights=1:0.8:0.6:0.4:0.2 [weights for INTERPOLATION, INTERP_UNDET, EXTRAP_UP, EXTRAP_DOWN, CLEAR]
% weightDecay=20 [radius from threshold in decreasing weight [dBZ]]
% avgWindow=0:0 [optional reference window [metres,degrees]]
% EXTENDED=true [store also DBZ_SLOPE and CLASS]

The other parameters are the coordinates of a hight reference point having a very low dBZ value. The echo top altitudes are linearly interpolated towards this point.

The user may wish to choose a target resolution, for example:

rack volume.h5 --encoding C,0.05 --pEchoTop 20 -o echoTop_8bit.h5
rack volume.h5 --encoding S,1.0 --pEchoTop 20 -o echoTop_16bit.h5
Definition: DataSelector.cpp:44
Echo top product and its quality field.

Convection

Class probability for convective precipitation is obtained with –pConv command.

rack volume.h5 --pConv '25,3,2,20,0,0' -o pConv.h5
% maxEchoThreshold=25 [dBZ]
% cellDiameter=3 [km]
% echoTopThreshold=2 [km]
% echoTopDBZ=20 [dBZ]
% smoothAzm=0 [deg]
% smoothRad=0 [km]
Convection product and its quality field.

(Under constr.)

Rainfall rate (mm/h) (under construction)

Currently, rack provides two operators for estimating instantaneous rainfall rate: an operator using single and another using double polarization. The rate is estimated aloft, ie. on an elevation scan (by default the lowest one). That is, there is currently no actual surface rainfall rate estimation. The computation uses the following formulae:

  • $R(z) = \frac{1}{a}z^\frac{1}{b}$
  • $R(z_{h},z_{dr}) = 0.0122z_{h}^{0.820}z_{dr}^{-2.28}$
  • $R(K_{dp}) = 21.0K_{dp}^{0.720}$
  • $R(K_{dp},z_{dr}) = 29.7K_{dp}^{0.890}z_{dr}^{-0.927}$

The parameters of these formulae can be changed with the respective commands:

--precipZrain <a>,<b> (section: science)
Precipitation rate from Z (reflectivity)
a=200
b=1.6
--precipZsnow <a>,<b> (section: science)
Precipitation rate from Z (reflectivity)
a=223
b=1.53
--precipZZDR <a>,<b>,<c> (section: science)
Precipitation rate from Z and ZDR
a=0.0122
b=0.82
c=-2.28
--precipKDP <a>,<b> (section: science)
Precip rate from KDP
a=6.95278e-310
b=5.37671e-310
--precipKDPZDR <a>,<b>,<c> (section: science)
Precipitation rate from KDP and ZDR
a=6.95299e-310
b=4.64981e-310
c=6.95299e-310

These commands can be seen collectively also with –help formulae .

The simpler command –pRainRate uses –precipZrain and –precipZsnow . It assumes that a global freezing level is available in data as ODIM variable how:freeze [km]. To override that, the user may apply –freezingLevel to set the height and thickness of the freezing level.

rack volume.h5 --pRainRate -o pRainRate.h5
Rain rate [mm/h] product and its quality field.

Dual polarimetric rainfall rate (mm/h)

Calculates the rain rate using four different functions that utilize dbz, zdr and kdp data. The optimal rain rate function is chosen for each radar data pixel using the given data threshold values. These thresholds are adjustable and their values can be given from the command line, for example:

rack volume.h5 --pRainRateDP '0.85:50.0:20.0:0.2:0.1' -o <rainRateDP.h5>

where the values are:

  • 0.85 - rhohv meteorological target filter
  • 50.0 - dbz hail/ice
  • 20.0 - dbz heavy rain
  • 0.2 - kdp heavy rain
  • 0.1 - zdr threshold

The functions are:
(1) $R={\frac{z}{a}}^\frac{1}{b}$
(2) $R=0.0122z_{h}^{0.820}z_{dr}^{-2.28}$
(3) $R=21.0K_{dp}^{0.720}$
(4) $R=29.7K_{dp}^{0.890}z_{dr}^{-0.927}$
The graph describes the rain rate calculation algorithm that mixes all the four methods. Dual pol. equations shouldn't be applied if the measurement is done closer than 10 km from the radar. In addition, the equations should only be used for liquid water. These factors have been taken into consideration in the implementation and Eq.1 is used when ever the other equations can't be applied.

dot_inline_dotgraph_9.png

Other single-radar products

Vertical profile

Vertical distribution of reflectivity can be computed with –verticalProfile . It takes several arguments:

The default selector for this operator defines quantity=^DBZH$ but more quantities can included with –select . The resulting product consists of one-dimensional arrays for height (HGHT ) and each input quantity stored in data groups, /dataset1/data <N> . In addition to the native output format (HDF5), the resulting product can exported as an image (png) or text (mat format). The latter works only if azSlots=1 , for example:

rack volume-conv-VIM.h5 --pVerticalProfile 40:200,0:11000,100,0:360,1 -o profile.mat

The text file consists of a header line and the quantities in column layout. Height (HGHT) will be always the first quantity:

# HGHT DBZH COUNT
0 -32 0
110 -32 0
220 15.5 965
330 14 7047
440 16.5 9213
...
10670 -32 0
10780 -32 0
10890 -32 0

The text format suits well to further illustrations with appropriate software. The curve images below have been created with gnuplot .

A graphical interface using Rack for VPR computation.

Both the applied input quantities and the output quantities can be set with –select command.

Pseudo RHI

While a true Range-height indicator (RHI) is obtained by tilting the radar antenna vertically, one may construct Pseudo RHI's by computing an intersection in a standard measurement volume consisting of azimuthal sweeps.

--pPseudoRhi <az_angle>,<xsize>,<ysize>,<range>,<height>,<beamWidth>,<beamPowerThreshold> (section: products)
Computes vertical intersection in a volume in the beam direction.
az_angle=0 [deg]
xsize=500 [pix]
ysize=250 [pix]
range=1:250 [km]
height=0:10000 [m]
beamWidth=0.25 [deg]
beamPowerThreshold=0.01 [0..1]

Such a product is obtained with

rack volume.h5 --pPseudoRhi 168,500,400,0:120,0:11000,0.25 -o pseudo-rhi.h5

The 2D data may be coloured with –palette command and saved as an image file. The gridded images below have been created from such images with gnuplot .

A graphical interface using Rack for Pseudo-RHI computation.

Other useful products

Beam altitude

For special applications, the height of the beam can be computed with –beamAltitude command. It takes the altitude reference point as argument (0=radar site, 1=sea level), Target properties can be set with –encoding command: image type (typically 'C' or 'd') as the first argument and gain (kilometres) as second. The resulting polar product is simply a function of ground distance, hence an array of nbins x 1 elements, but can be projected to a Cartesian product like any other polar product.

rack volume.h5 --pBeamAltitude 'true' -o pBeamAltitude.h5
% aboveSeaLevel=true [0=radar site|1=sea level]
Beam altitude product.