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.

densify(x, n = 10L, max_distance)

Arguments

x

spatial features; lines or polygons from either the sf, sp, or terra packages.

n

integer; number of times to split each line segment. Ignored if max_distance is specified.

max_distance

numeric; the maximum distance between vertices in the resulting matrix. This is the Euclidean distance and not the great circle distance.

Value

A densified polygon or line in the same format as the input data.

Examples

library(sf)
#> Linking to GEOS 3.10.2, GDAL 3.4.2, PROJ 9.0.0; sf_use_s2() is TRUE
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)