R/centroid.R

Defines functions centroid.geo_list centroid

Documented in centroid

#' Get centroid for a geo_list
#'
#' @export
#' @param x An object of class geo_list
#' @param ... Ignored
#' @return A vector of the form longitude, latitude
#' @examples
#' # numeric
#' vec <- c(-99.74, 32.45)
#' x <- geojson_list(vec)
#' centroid(x)
#'
#' # list
#' mylist <- list(
#'   list(latitude = 30, longitude = 120, marker = "red"),
#'   list(latitude = 30, longitude = 130, marker = "blue")
#' )
#' x <- geojson_list(mylist)
#' centroid(x)
#'
#' # data.frame
#' x <- geojson_list(states[1:20, ])
#' centroid(x)
centroid <- function(x, ...) {
  UseMethod("centroid")
}

#' @export
centroid.geo_list <- function(x, ...) {
  all <- lapply(x$features, "[[", c("geometry", "coordinates"))
  long <- sapply(all, "[[", 1)
  lat <- sapply(all, "[[", 2)
  c(mean(long), mean(lat))
}

Try the geojsonio package in your browser

Any scripts or data that you put into this service are public.

geojsonio documentation built on Sept. 8, 2023, 5:54 p.m.