computeDensity {birdscanR} | R Documentation |
computeDensity
Description
This function will estimate the density (expressed as #objects / km3) based on the observations in your database. Note that this function only works properly on Birdscan MR1 database versions >= 1.7.0.4 as the variable feature37.speed is required for the density calculation.
Usage
computeDensity(
dbName,
echoes,
classSelection,
altitudeRange,
altitudeBinSize,
timeRange,
timeBinDuration_sec,
timeZone,
sunriseSunset,
sunOrCivil = "civil",
crepuscule = "nauticalSolar",
protocolData,
visibilityData,
manualBlindTimes = NULL,
saveBlindTimes = FALSE,
blindTimesOutputDir = getwd(),
blindTimeAsMtrZero = NULL,
propObsTimeCutoff = 0,
computePerDayNight = FALSE,
computePerDayCrepusculeNight = FALSE,
computeAltitudeDistribution = TRUE
)
Arguments
dbName |
Character string, containing the name of the database you are processing |
echoes |
dataframe with the echo data from the data list created by the function ‘extractDBData’ or a subset of it created by the function ‘filterEchoData’. |
classSelection |
character string vector with all classes which should be used to calculate the density. The density and number of Echoes will be calculated for each class as well as for all classes together. |
altitudeRange |
numeric vector of length 2 with the start and end of the altitude range in meter a.g.l. |
altitudeBinSize |
numeric, size of the altitude bins in meter. |
timeRange |
Character vector of length 2, with start and end of time range, formatted as "%Y-%m-%d %H:%M" |
timeBinDuration_sec |
duration of timeBins in seconds (numeric). for values <= 0 a duration of 1 hour will be set |
timeZone |
time zone in which the time bins should be created as string, e.g. "Etc/GMT0" |
sunriseSunset |
dataframe with sunrise/sunset, and civil and nautical dawn/dusk. Computed with the function 'twilight'. |
sunOrCivil |
sunrise/sunset or civil dawn/dusk used to split day and night. Supported values: "sun" or "civil". Default: "civil" |
crepuscule |
optional character variable, Set to “nauticalSolar” to use the time between nautical dusk/dawn and sunrise/sunset times to define the crepuscular period, or to "nauticalCivil" to use the time between nautical and civil dusk/dawn to define the crepuscular period, or to "civilSolar" to use the time between civil dusk/dawn and sunrise/sunset times to define the crepuscular period. Default is "nauticalSolar". |
protocolData |
dataframe with the protocol data from the data list
created by the function |
visibilityData |
dataframe with the visibility data from the data list created by the function ‘extractDBData’. |
manualBlindTimes |
dataframe with the manual blind times created by the
function |
saveBlindTimes |
Logical, determines whether to save the blind times to a file. Default: False. |
blindTimesOutputDir |
Character string containing the path to save the blind times to. Default: 'your-working-directory' |
blindTimeAsMtrZero |
character string vector with the blind time types which should be treated as observation time with MTR zero. |
propObsTimeCutoff |
numeric between 0 and 1. If the density is computed per day and night, time bins with a proportional observation time smaller than propObsTimeCutoff are ignored when combining the time bins. If the density is computed for each time bin, the parameter is ignored. |
computePerDayNight |
logical, TRUE: density is computed per day and night. The time bins of each day and night will be combined and the mean density is computed for each day and night. The spread (first and third Quartile) for each day and night are also computed. The spread is dependent on the chosen time bin duration/amount of time bins; When FALSE: density is computed for each time bin. This option computes the density for each time bin defined in the time bin dataframe. The time bins that were split due to sunrise/sunset during the time bin will be combined to one bin. |
computePerDayCrepusculeNight |
logical, TRUE: density is computed per crepusculeMorning, day, crepusculeEvening, and night. The time bins of each of these diel phases will be combined and the mean density is computed for each phase. The spread (first and third Quartile) for each phase is also computed. The spread is dependent on the chosen time bin duration/amount of time bins; When FALSE: density is computed for each time bin. This option computes the density for each time bin defined in the time bin dataframe. The time bins that were split due to sunrise/sunset during the time bin will be combined to one bin. Default = FALSE. |
computeAltitudeDistribution |
logical, TRUE: compute the mean height and altitude distribution of density for the pre-defined quantiles 0.05, 0.25, 0.5, 0.75, 0.95 |
Value
Density
Author(s)
Birgen Haest, birgen.haest@vogelwarte.ch; Fabian Hertner, fabian.hertner@swiss-birdradar.com; Baptiste Schmid, baptiste.schmid@vogelwarte.ch;
Examples
## Not run:
# Set server, database, and other input settings
# ===========================================================================
dbServer = "MACHINE\\SERVERNAME" # Set the name of your SQL server
dbName = "db_Name" # Set the name of your database
dbDriverChar = "SQL Server" # Set either "SQL Server" or "PostgreSQL"
mainOutputDir = file.path(".", "results")
radarTimeZone = "Etc/GMT0"
targetTimeZone = "Etc/GMT0"
listOfRfFeaturesToExtract = c(167, 168)
siteLocation = c(47.494427, 8.716432)
sunOrCivil = "civil"
crepuscule = "nauticalSolar"
timeRangeData = c("2021-01-15 00:00", "2021-01-31 00:00")
# Get data
# ===========================================================================
dbData = extractDbData(dbDriverChar = dbDriverChar,
dbServer = dbServer,
dbName = dbName,
saveDbToFile = TRUE,
dbDataDir = mainOutputDir,
radarTimeZone = radarTimeZone,
targetTimeZone = targetTimeZone,
listOfRfFeaturesToExtract = listOfRfFeaturesToExtract,
siteLocation = siteLocation,
sunOrCivil = sunOrCivil,
crepuscule = crepuscule)
# Get sunrise/sunset
# ===========================================================================
sunriseSunset = twilight(timeRange = timeRangeData,
latLon = c(47.494427, 8.716432),
timeZone = targetTimeZone)
# Get manual blind times
# ===========================================================================
data(manualBlindTimes)
cManualBlindTimes = manualBlindTimes
# Compute migration traffic rate
# ===========================================================================
classSelection.density = c("insect")
densityData = computeDensity(dbName = dbName,
echoes = dbData$echoData,
classSelection = classSelection.density,
altitudeRange = c(25, 1025),
altitudeBinSize = 50,
timeRange = timeRangeData,
timeBinDuration_sec = 1800,
timeZone = targetTimeZone,
sunriseSunset = sunriseSunset,
sunOrCivil = "civil",
crepuscule = crepuscule,
protocolData = dbData$protocolData,
visibilityData = dbData$visibilityData,
manualBlindTimes = cManualBlindTimes,
saveBlindTimes = FALSE,
blindTimesOutputDir = getwd(),
blindTimeAsMtrZero = NULL,
propObsTimeCutoff = 0,
computePerDayNight = FALSE,
computePerDayCrepusculeNight = FALSE
computeAltitudeDistribution = TRUE)
## End(Not run)