CG_ApproximateMedialAxis — Beräkna den ungefärliga mediala axeln för en arealgeometri.
geometry CG_ApproximateMedialAxis(geometry geom);
geometry CG_ApproximateMedialAxis(geometry geom, boolean projected);
Returnerar en ungefärlig medial axel för den areella inmatningen baserat på dess raka skelett. Använder ett SFCGAL-specifikt API när det byggs mot en kapabel version (1.2.0+). Annars är funktionen bara ett omslag runt CG_StraightSkeleton (långsammare fall).
När projected är true förlängs den mediala axelns fria ändpunkter så att de når polygonens gräns (projicerad medial axel). Kräver SFCGAL 2.3.0+. När programmet är byggt med en äldre SFCGAL-version visas en notis och det oprojicerade resultatet returneras i stället.
Tillgänglighet: 3.5.0
Tillgänglighet: 3.7.0 – parametern projected. Kräver SFCGAL >= 2.3.0 för projicerat resultat; återgår till oprojicerat resultat med en notis på äldre versioner.
|
|
|
Denna funktion ignorerar Z-dimensionen. Den ger alltid ett 2D-resultat även när den används på en 3D-geometri. |
Denna metod behöver SFCGAL-backend.
Denna funktion stöder polyedriska ytor.
Denna funktion stöder trianglar och triangulerade oregelbundna nätverksytor (TIN).
En polygon och dess approximativa mediala axel.
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))
Det här exemplet beräknar den projicerade mediala axeln med fria ändpunkter förlängda till polygonens gräns.
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))