CG_ApproximateMedialAxis — Compute the approximate medial axis of an areal geometry.
geometry CG_ApproximateMedialAxis(geometry geom);
geometry CG_ApproximateMedialAxis(geometry geom, boolean projected);
Return an approximate medial axis for the areal input based on its straight skeleton. Uses an SFCGAL specific API when built against a capable version (1.2.0+). Otherwise the function is just a wrapper around CG_StraightSkeleton (slower case).
When projected is true, free
endpoints of the medial axis are extended to reach the polygon boundary
(projected medial axis). Requires SFCGAL 2.3.0+. When built against
an older SFCGAL version, a notice is emitted and the non-projected
result is returned instead.
Availability: 3.5.0
Availability: 3.7.0 - projected parameter. Requires SFCGAL >= 2.3.0 for projected result; falls back to non-projected with a notice on older versions.
|
|
|
This function ignores the Z dimension. It always gives a 2D result even when used on a 3D geometry. |
This method needs SFCGAL backend.
This function supports Polyhedral surfaces.
This function supports Triangles and Triangulated Irregular Network Surfaces (TIN).
A polygon and its approximate medial axis.
WITH data AS (
SELECT 'POLYGON((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190))'::geometry AS polygon
)
SELECT polygon AS input_polygon,
CG_ApproximateMedialAxis(polygon) AS medial_axis
FROM data;
POLYGON((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190)) | MULTILINESTRING((184.189 15.811,158.377 20),(50 20,158.377 20),(50 20,35 35),(35 153.151,35 35),(35 153.151,40.697 159.303),(164.04 164.04,40.697 159.303))
This example computes the projected medial axis with free endpoints extended to the polygon boundary.
SELECT CG_ApproximateMedialAxis('POLYGON((0 0,2 0,2 1,0 1,0 0))', true);
MULTILINESTRING((0 0.5,0.5 0.5,1.5 0.5,2 0.5))