integrate_to_ppi {bioRad} | R Documentation |
Calculate a plan position indicator (ppi
) of vertically integrated density
adjusted for range effects
Description
Estimates a spatial image of vertically integrated density (vid
) based on
all elevation scans of the radar, while accounting for the changing overlap
between the radar beams as a function of range. The resulting ppi
is a
vertical integration over the layer of biological scatterers based on all
available elevation scans, corrected for range effects due to partial beam
overlap with the layer of biological echoes (overshooting) at larger
distances from the radar. The methodology is described in detail in
Kranstauber et al. (2020).
Usage
integrate_to_ppi(
pvol,
vp,
nx = 100,
ny = 100,
xlim,
ylim,
zlim = c(0, 4000),
res,
quantity = "eta",
param = "DBZH",
raster = NA,
lat,
lon,
antenna,
beam_angle = 1,
crs,
param_ppi = c("VIR", "VID", "R", "overlap", "eta_sum", "eta_sum_expected"),
k = 4/3,
re = 6378,
rp = 6357
)
Arguments
pvol |
A |
vp |
A |
nx |
number of raster pixels in the x (longitude) dimension |
ny |
number of raster pixels in the y (latitude) dimension |
xlim |
x (longitude) range |
ylim |
y (latitude) range |
zlim |
Numeric vector of length two. Altitude range, in m |
res |
numeric vector of length 1 or 2 to set the resolution of the raster (see res).
If this argument is used, arguments |
quantity |
Character. Profile quantity on which to base range
corrections, either |
param |
reflectivity Character. Scan parameter on which to base range
corrections. Typically the same parameter from which animal densities are
estimated in |
raster |
(optional) RasterLayer with a CRS. When specified this raster topology is used for the output, and nx, ny, res arguments are ignored. |
lat |
Latitude of the radar, in degrees. If missing taken from |
lon |
Latitude of the radar, in degrees. If missing taken from |
antenna |
Numeric. Radar antenna height, in m. Default to antenna height
in |
beam_angle |
Numeric. Beam opening angle in degrees, typically the angle between the half-power (-3 dB) points of the main lobe. |
crs |
character or object of class CRS. PROJ.4 type description of a Coordinate Reference System (map projection). When 'NA' (default), an azimuthal equidistant projection with origin at the radar location is used. To use a WSG84 (lat,lon) projection, use crs="+proj=longlat +datum=WGS84" |
param_ppi |
Character (vector). One or multiple of |
k |
Numeric. Standard refraction coefficient. |
re |
Numeric. Earth equatorial radius, in km. |
rp |
Numeric. Earth polar radius, in km. |
Details
The function requires:
A polar volume, containing one or multiple scans (
pvol
).A vertical profile (of birds) calculated for that same polar volume (
vp
).A grid defined on the earth's surface, on which we will calculate the range corrected image (defined by
raster
, or a combination ofnx
,ny
,res
arguments).
The pixel locations on the ground are easily translated into a corresponding
azimuth and range of the various scans (see beam_range()
).
For each scan within the polar volume, the function calculates:
the vertical radiation profile for each ground surface pixel for that particular scan, using beam_profile.
the reflectivity expected for each ground surface pixel (
\eta_{expected}
), given the vertical profile (of biological scatterers) and the part of the profile radiated by the beam. This\eta_{expected}
is simply the average of (linear)eta
in the profile, weighted by the vertical radiation profile.the observed eta at each pixel
\eta_{observed}
, which is converted formDBZH
using function dbz_to_eta, withDBZH
the reflectivity factor measured at the pixel's distance from the radar.The vertical radiation profile for each ground surface pixel for that particular scan, using
beam_profile()
.The reflectivity expected for each ground surface pixel (
\eta_{expected}
), given the vertical profile (of biological scatterers) and the part of the profile radiated by the beam. This\eta_{expected}
is simply the average of (linear)eta
in the profile, weighted by the vertical radiation profile.The observed
eta
at each pixel\eta_{observed}
, which is converted formDBZH
usingdbz_to_eta()
, withDBZH
the reflectivity factor measured at the pixel's distance from the radar.
If one of lat
or lon
is missing, the extent of the ppi
is taken equal
to the extent of the data in the first scan of the polar volume.
To arrive at the final PPI image, the function calculates
the vertically integrated density (
vid
) and vertically integrated reflectivity (vir
) for the profile, using the function integrate_profile.the spatial range-corrected PPI for
VID
, defined as the adjustment factor image (R
), multiplied by thevid
calculated for the profilethe spatial range-corrected PPI for
VIR
, defined as the adjustment factorR
, multiplied by thevir
calculated for the profile.
Scans at 90 degree beam elevation (e.g. birdbath scans) are ignored.
#' @seealso
Value
A ppi
object.
References
Kranstauber B, Bouten W, Leijnse H, Wijers B, Verlinden L, Shamoun-Baranes J, Dokter AM (2020) High-Resolution Spatial Distribution of Bird Movements Estimated from a Weather Radar Network. Remote Sensing 12 (4), 635. doi:10.3390/rs12040635
Buler JJ & Diehl RH (2009) Quantifying bird density during migratory stopover using weather surveillance radar. IEEE Transactions on Geoscience and Remote Sensing 47: 2741-2751. doi:10.1109/TGRS.2009.2014463
Kranstauber B, Bouten W, Leijnse H, Wijers B, Verlinden L, Shamoun-Baranes J, Dokter AM (2020) High-Resolution Spatial Distribution of Bird Movements Estimated from a Weather Radar Network. Remote Sensing 12 (4), 635. doi:10.3390/rs12040635
Buler JJ & Diehl RH (2009) Quantifying bird density during migratory stopover using weather surveillance radar. IEEE Transactions on Geoscience and Remote Sensing 47: 2741-2751. doi:10.1109/TGRS.2009.2014463
Examples
# Locate and read the polar volume example file
pvolfile <- system.file("extdata", "volume.h5", package = "bioRad")
# load polar volume
pvol <- read_pvolfile(pvolfile)
# Read the corresponding vertical profile example
data(example_vp)
# Calculate the range-corrected ppi on a 50x50 pixel raster
ppi <- integrate_to_ppi(pvol, example_vp, nx = 50, ny = 50)
# Plot the vertically integrated reflectivity (VIR) using a
# 0-2000 cm^2/km^2 color scale
plot(ppi, zlim = c(0, 2000))
# Calculate the range-corrected ppi on finer 2000m x 2000m pixel raster
ppi <- integrate_to_ppi(pvol, example_vp, res = 2000)
# Plot the vertically integrated density (VID) using a
# 0-200 birds/km^2 color scale
plot(ppi, param = "VID", zlim = c(0, 200))
# Download a basemap and map the ppi
if (all(sapply(c("ggspatial","prettymapr", "rosm"), requireNamespace, quietly = TRUE))) {
map(ppi)
}
# The ppi can also be projected on a user-defined raster, as follows:
# First define the raster
template_raster <- raster::raster(
raster::extent(12, 13, 56, 57),
crs = sp::CRS("+proj=longlat")
)
# Project the ppi on the defined raster
ppi <- integrate_to_ppi(pvol, example_vp, raster = template_raster)
# Extract the raster data from the ppi object
raster::brick(ppi$data)
# Calculate the range-corrected ppi on an even finer 500m x 500m pixel raster,
# cropping the area up to 50000 meter from the radar
ppi <- integrate_to_ppi(
pvol, example_vp, res = 500,
xlim = c(-50000, 50000), ylim = c(-50000, 50000)
)
plot(ppi, param = "VID", zlim = c(0, 200))