| Title: | A Very Fast 2D Concave Hull Algorithm |
|---|---|
| Description: | The concaveman function ports the 'concaveman' (<https://github.com/mapbox/concaveman>) library from 'mapbox'. It computes the concave polygon(s) for one or several set of points. |
| Authors: | Joël Gombin [cre, aut], Ramnath Vaidyanathan [aut], Vladimir Agafonkin [aut], Mapbox [cph] |
| Maintainer: | Joël Gombin <[email protected]> |
| License: | GPL-3 |
| Version: | 1.2.0 |
| Built: | 2026-06-06 07:21:33 UTC |
| Source: | https://github.com/joelgombin/concaveman |
The concaveman function ports the concaveman library from mapbox. It computes the concave polygon for one set of points.
concaveman(points, concavity, length_threshold) ## S3 method for class 'matrix' concaveman(points, concavity = 2, length_threshold = 0) ## S3 method for class 'sf' concaveman(points, concavity = 2, length_threshold = 0) ## S3 method for class 'sfc' concaveman(points, concavity = 2, length_threshold = 0)concaveman(points, concavity, length_threshold) ## S3 method for class 'matrix' concaveman(points, concavity = 2, length_threshold = 0) ## S3 method for class 'sf' concaveman(points, concavity = 2, length_threshold = 0) ## S3 method for class 'sfc' concaveman(points, concavity = 2, length_threshold = 0)
points |
the points for which the concave hull must be computed. Can be represented as a matrix of coordinates or an |
concavity |
a relative measure of concavity. 1 results in a relatively detailed shape, Infinity results in a convex hull. You can use values lower than 1, but they can produce pretty crazy shapes. |
length_threshold |
when a segment length is under this threshold, it stops being considered for further detalization. Higher values result in simpler shapes. |
For details regarding the implementation, please see the original javascript library github page. This is just a thin wrapper, via V8.
an object of the same class as points: a matrix of coordinates or an sf object.
data(points) polygons <- concaveman(points) plot(points) plot(polygons, add = TRUE)data(points) polygons <- concaveman(points) plot(points) plot(polygons, add = TRUE)
This is just a test dataset which comes from the original mapbox library.
pointspoints
an sf object with a 1000 points. Each of them is part of a group, indicated by variable k (generated by a k-means algorithm).
https://github.com/mapbox/concaveman/blob/master/test/fixtures/points-1k.json