
Estimate flights through turbine plane from observations
Source:R/flux_wrapper.R
turbine_flights_year.RdThis is a wrapper to calculate the observed flight flux and scale up to a turbine and a year.
Usage
turbine_flights_year(
survey_type = c("point"),
encounter_rate,
time_units = "min",
eff_detection_width,
mean_flight_height,
rotor_diameter,
hub_height,
prop_day,
prop_year
)Arguments
- survey_type
character; type of survey. Currently just point transects but methods for line transects and digital areal surveys are in development.
- encounter_rate
numeric; number of flights observed per unit time of survey as output by
encounter_rate()or similar.- time_units
Time units of
encounter_rate. Defaults to "min" (i.e. flights per minute).- eff_detection_width
numeric; Allows you to manually specify the effective detection width, which is usually 2 x effective detection radius. Must be in the same units as
mean_flight_height.- mean_flight_height
numeric; The mean of the distribution of the flight heights. Must be in the same units as
eff_detection_width.- rotor_diameter
numeric; rotor diameter. Must be in the equivalent units to the unit area of
obs_flux(i.e., if theobs_fluxis per m\(^2\),rotor_diametermust be in m).- hub_height
numeric; hub height. Must be in the equivalent units to the unit area of
obs_flux(i.e., if theobs_fluxis per m\(^2\),hub_heightmust be in m).- prop_day
numeric; number between 0 and 1 representing the proportion of a 24 hour day the species is active onsite. Also refer to the details below.
- prop_year
numeric; number between 0 and 1 representing the proportion of a 12 month year the species is active onsite. Also refer to the details below.
Details
Calculating the number of flights through a turbine plane includes three steps
Calculate the observed flights in a vertical area from the count of observed flights and details of the surveys, e.g.
obs_flux()Scale the observed flight flux to an area equivalent to the rotor diameter by the maximum height of the turbine, e.g.
turbine_flights()Scale the flights to the time period under study. There's a helper function to scale to one year,
flights_per_year()
Observed flux from point counts
Given an encounter rate (encounter_rate()), a distribution of flight heights
and a related distance model (fit using the Distance package (Miller et al. 2019)
)
we calculate the flight flux through a rectangle with a width of 2\(\times\)(effective detection radius)
and a height of the 2\(\times\)mean (expected value) of the height distribution
in one unit of observation time.
Note the function accepts only single valued inputs, so stochastic inputs must
be sampled from prior to calling this function. For more information,
see vignette("simple-simulation-example", package = "collision").
Scale to turbine
turbine_flights() converts the flight flux through one unit area of vertical space
into the number of flights through an arbitrary vertical plane of width equal
to rotor diameter and height equal to the tip height of the turbine.
The time interval is not adjusted (i.e. if you input flights / min, it will output flights / min).
Scale to year
After obtaining the observed flux through a vertical area in one unit time, we need to scale up to the relevant risk timeframe, often a year.
This can be done manually by the analyst for any time period, but we have
included a helper function for the case of scaling to one year (flights_per_year()).
Note this function assumes the flux is the
average flight flux when active onsite. If surveys are conducted year round
and the flux represents the annual average then prop_year should be 1. If
surveys are conducted only while the bird is on site and the flux represents
the average over the period the birds are on site then prop_year should be
the proportion of the year that the bird is on site.
For example, if a bird is onsite for three months of the year and the flux
was measured in that season only, the prop_year = 3/12 = 0.25.
Similarly care must be taken if the daily observation window does not overlap
completely with the birds activity. If the flight flux calculation
includes times when the species is not active the prop_day should be
adjusted to account for this, or the flux calculated only using
surveys during the activity period.
References
Miller DL, Rexstad E, Thomas L, Marshall L, Laake JL (2019). “Distance Sampling in R.” Journal of Statistical Software, 89, 1–28. ISSN 1548-7660, doi:10.18637/jss.v089.i01 .
Examples
## A simple example of calculating flux from a point count and
## using this to generate the number of flights through a turbine
## in a year
##
## # Step by step
##
df_obs <- data.frame(size = c(0, 2 , 3, 0), # four surveys
survey_duration = c(20, 20, 18, 20), # minutes
# Optional survey weights to deal with stratification etc
survey_weight = c(1,1,1,1))
rotor_diameter <- 300
hub_height <- 200
edr <- 800 # derive from distance model
mean_h <- 60 # derive from height distribution
# flights observed per minute of survey
flights_per_min <- encounter_rate(
df_obs_summary = df_obs,
wilson_correction = TRUE # Default
)
# observed flights through vertical plane of one metre squared in one minute
flights_per_m2_per_min <- obs_flux(
encounter_rate = flights_per_min,
eff_detection_width = 2*edr,
mean_flight_height = mean_h
)
# scale to turbine width and height
flights_turbine_min <- turbine_flights(
obs_flux = flights_per_m2_per_min,
rotor_diameter = rotor_diameter,
hub_height = hub_height
)
# scale to annual flights through area of rotor_diameter x turbine height
flights_turbine_year <- flights_per_year(
flights_per_time = flights_turbine_min,
time_units = "min", # Default
prop_day = 0.5, #diurnal species
prop_year = 1 # present all year
)
## Alternate calc using a wrapper function
## to go from observations to turbine flights per year
##
flights_turbine_year2 <- turbine_flights_year(
survey_type = "point", # only supported option currently
encounter_rate = flights_per_min,
time_units = "min",
eff_detection_width = 2*edr,
mean_flight_height = mean_h,
rotor_diameter = rotor_diameter,
hub_height = hub_height,
prop_day = 0.5, #diurnal species
prop_year = 1 # present all year
)
#They are the same
flights_turbine_year
#> [1] 9219.05
flights_turbine_year2
#> [1] 9219.05