This benchmark visually compares the results of skytrackr to results from the geolocation manual. In particular it compares the results of the SGAT and FlightR outputs to skytrackr approximations. The vignette isn’t run online, with rendered results included as images, however all the code can be used in a reproducible way (to track changes between updates).

1 SGAT

The SGAT demo includes data from the European bee-eater, recorded from a Swiss Ornithological Institute logger.

# read the data from the geolocation manual repo
df <- stk_read_glf(
  "https://raw.githubusercontent.com/slisovski/TheGeolocationManual/refs/heads/master/data/RawData/MerApi/14SA.glf",
   verbose = FALSE)

# automatically screen most spurious days
df <- df |>  
  stk_screen_twl(filter = TRUE)

# estimate upper scale value
scale <- stk_calibrate(df)

# set the twilight range
# note that these values are generally larger
# for the SOI loggers
range <- c(1.5, 3000)

# define land mask with a bounding box
# and an off-shore buffer (in km), in addition
# you can specifiy the resolution of the resulting raster
mask <- stk_mask(
  bbox  =  c(-20, -40, 70, 70), #xmin, ymin, xmax, ymax
  buffer = 10,
  resolution = 0.5 # map grid in degrees corresponding to the buffer in km
)

# define a step selection distribution
ssf <- function(x, shape = 0.7, scale = 100, tolerance = 1500){
  # normalize over expected range with km increments
  norm <- sum(stats::dgamma(1:tolerance, shape = shape, scale = scale))
  prob <- stats::dgamma(x, shape = shape, scale = scale) / norm
  return(prob)
}

locations <- df |>
    skytrackr(
      mask = mask,
      plot = FALSE,
      start_location = c(51.32, 11.96),
      tolerance = 1500, # in km
      scale = log(scale),
      range = range,
      control = list(
        sampler = 'DEzs',
        settings = list(
          burnin = 1000,
          iterations = 3000,
          message = FALSE
        )
      ),
      window_size = 1,
      step_selection = ssf
    )

# save results
saveRDS(locations, "sgat_locations.rds", compress = "xz")

# render map
locations |> stk_map()

2 FlightR