Learn R Programming

bioRad (version 0.9.1)

calculate_param: Calculate a new scan parameter

Description

Calculate a new parameter (param) for a scan (scan) or polar volume (pvol)

Usage

calculate_param(x, ...)

# S3 method for pvol calculate_param(x, ...)

# S3 method for ppi calculate_param(x, ...)

# S3 method for scan calculate_param(x, ...)

Value

An object of the same class as x, either a pvol or scan.

Arguments

x

A pvol or scan object.

...

An expression defining the new scan parameter in terms of existing scan parameters.

Methods (by class)

  • calculate_param(pvol): Calculate a new parameter (param) for all scans in a polar volume (pvol).

  • calculate_param(ppi): Calculate a new parameter (param) for a plan position indicator (ppi).

  • calculate_param(scan): Calculate a new parameter (param) for a scan (scan).

Details

Calculates a new scan parameter (param) from a combination of existing scan parameters. Useful for calculating quantities that are defined in terms of other basic radar moments, like linear reflectivity eta, depolarization ratio (Kilambi et al. 2018), or for applying clutter corrections (CCORH) to uncorrected reflectivity moments (TH) as TH + CCORH.

For the expression to work it is important that the operation can be vectorized. For example the base ifelse function is not vectorized, in these cases alternatives can be used (e.g. dplyr::if_else).

Also note that some functions do not operate on a matrix or param object. One example is the dplyr::if_else function. A workaround is calling the c() function on a parameter to convert it to a vector (e.g. c(DBZH), see examples).

References

  • Kilambi A, Fabry F, Meunier V (2018) A simple and effective method for separating meteorological from nonmeteorological targets using dual-polarization data. Journal of Atmospheric and Oceanic Technology 35, pp. 1415–1424. tools:::Rd_expr_doi("10.1175/JTECH-D-17-0175.1")

See Also

  • get_param()

Examples

Run this code
# Locate and read the polar volume example file
pvolfile <- system.file("extdata", "volume.h5", package = "bioRad")
pvol <- read_pvolfile(pvolfile)

# Calculate linear reflectivity ETA from reflectivity factor DBZH
radar_wavelength <- pvol$attributes$how$wavelength
pvol <- calculate_param(pvol, ETA = dbz_to_eta(DBZH, radar_wavelength))

# Add depolarization ratio (DR) as a scan parameter (see Kilambi 2018)
pvol <- calculate_param(pvol, DR = 10 * log10((ZDR + 1 - 2 * ZDR^0.5 * RHOHV) /
  (ZDR + 1 + 2 * ZDR^0.5 * RHOHV)))

# The function also works on scan and ppi objects
calculate_param(example_scan, DR = 10 * log10((ZDR + 1 - 2 * ZDR^0.5 * RHOHV) /
  (ZDR + 1 + 2 * ZDR^0.5 * RHOHV)))

# set all reflectivity  values to NA when correlation coefficient > 0.95
# (indicating precipitation)
if (require(dplyr, quietly = TRUE)) {
  calculate_param(pvol,
    DBZH=if_else(c(RHOHV)>.95, NA, c(DBZH)) )
}

# it also works for ppis
ppi <- project_as_ppi(example_scan)
calculate_param(ppi, exp(DBZH))

Run the code above in your browser using DataLab