#' Densify spatial lines or polygons
#'
#' A wrapper for `smooth(x, method = "densify")`. This function adds additional
#' vertices to spatial feature via linear interpolation, always while keeping
#' the original vertices. Each line segment will be split into equal length
#' sub-segments. This densification algorithm treats all vertices as Euclidean
#' points, i.e. new points will not fall on a great circle between existing
#' vertices, rather they'll be along a straight line.
#'
#' @param x spatial features; lines or polygons from either the `sf`, `sp`, or
#' `terra` packages.
#' @inheritParams smooth_densify
#'
#' @return A densified polygon or line in the same format as the input data.
#' @export
#' @examples
#' library(sf)
#' l <- jagged_lines$geometry[[2]]
#' l_dense <- densify(l, n = 2)
#' plot(l, lwd = 5)
#' plot(l_dense, col = "red", lwd = 2, lty = 2, add = TRUE)
#' plot(l_dense %>% st_cast("MULTIPOINT"), col = "red", pch = 19,
#' add = TRUE)
densify <- function(x, n = 10L, max_distance) {
if (missing(max_distance)) {
smooth(x, method = "densify", n = n)
} else {
smooth(x, method = "densify", max_distance = max_distance)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.