Skip to contents

Applies the R-tree thinning algorithm on a set of coordinates.

Usage

r_tree_thinning(
  coordinates,
  thin_dist = 10,
  trials = 10,
  all_trials = FALSE,
  space_partitioning = FALSE,
  euclidean = FALSE,
  R = 6371
)

Arguments

coordinates

A matrix of coordinates to thin, with longitude and latitude.

thin_dist

Thinning distance in kilometers.

trials

Number of trials to run for thinning.

all_trials

If TRUE, returns results of all attempts; if FALSE, returns the best attempt with the most points retained (default: FALSE).

space_partitioning

A logical value indicating whether to use space partitioning.

euclidean

Logical value indicating whether to compute the Euclidean distance (`TRUE`) or Haversine distance (`FALSE`, default).

R

Radius of the Earth in kilometers (default: 6371 km).

Value

A logical vector indicating which points are kept in the best trial if all_trials is FALSE; otherwise, a list of logical vectors for each trial.

Details

If you want to use R-trees you need to install the `rtree` package from `remotes::install_github("jmestret/rtree")`. It is a modified version from https://github.com/akoyabio/rtree.

Examples

if (requireNamespace("rtree", quietly = TRUE)) {
  # Generate random coordinates
  set.seed(123)
  coordinates <- matrix(runif(20, min = -180, max = 180), ncol = 2) # 10 random points

  # Perform thinning without space partitioning
  result <- r_tree_thinning(coordinates, thin_dist = 10, trials = 5)
  print(result)

  # Perform thinning with space partitioning
  result_space_part <- r_tree_thinning(coordinates, thin_dist = 10, trials = 5,
                                       space_partitioning = TRUE)
  print(result_space_part)

  # Perform thinning with euclidean distance
  result_euclidean <- r_tree_thinning(coordinates, thin_dist = 10, trials = 5, euclidean = TRUE)
  print(result_euclidean)
}
#> [[1]]
#>  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> 
#> [[1]]
#>  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#> 
#> [[1]]
#>  [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
#>