This function, as follows from the title, tries to guess the polygon centerline by connecting the most distant points from each other. First, it finds the point most distant from the polygon's centroid, then it searches for a second point, which is most distant from the first. The line connecting these two points will be the desired centerline.
Arguments
- input
sf,sfcorSpatVectorpolygons object- skeleton
NULL(default) orcnt_skeleton()output. IfNULLthen polygon's skeleton would be estimated in the background using specified parameters (see inherit params below). Forwardedanchorsfrom...apply only when a skeleton is built or rebuilt; they are ignored when a validskeletonis supplied.- return_geos
FALSE(default). A logical flag that controls whether thegeos_geometryshould be returned.- ...
Arguments passed on to
cnt_skeletonkeepnumeric, proportion of points to retain (0.05-5.0; default 0.5). See Details.
methodcharacter, either
"voronoi"(default) or"straight", or just the first letter"v"or"s". See Details.anchorsNULL(default) or boundaryPOINTgeometries of the same spatial class and CRS asinput. When supplied, each point must lie on exactly one polygon-part boundary (exterior or hole ring). Withmethod = "voronoi"andkeep < 1, accepted anchors are injected as exact exterior/hole ring vertices before protected simplification so they participate ingeos_unique_points()as Voronoi sites (the achieved vertex count may exceed the nominalkeepdensity). Connector validation and clipping then use that prepared polygon. Withkeep >= 1, anchors are not injected and the ordinary no-op or densify site set is retained. In all cases anchors are also attached by a direct interior connector so they remain explicit degree-one graph terminals. Attribute columns onanchorsare ignored; the returned skeleton still inherits polygon attributes exactly as without anchors.
Examples
library(sf)
library(geos)
lake <-
sf::st_read(
system.file("extdata/example.gpkg", package = "centerline"),
layer = "lake",
quiet = TRUE
) |>
geos::as_geos_geometry()
# Find lake's centerline
lake_centerline <- cnt_path_guess(input = lake, keep = 1)
# Plot
plot(lake)
plot(lake_centerline, col = "firebrick", lwd = 2, add = TRUE)