CG_PolygonRepair — Reparera en ogiltig polygon eller multipolygon.
geometry CG_PolygonRepair(geometry geom, text rule);
Reparera en ogiltig polygon eller multipolygon med CGAL:s 2D-algoritm för reparation av polygoner. Returnerar en MultiPolygon.
Parametern rule styr reparationsstrategin:
EVEN_ODD (standard) — områden som täcks ett udda antal gånger behålls. Tillgängligt med CGAL 6.0+.
NON_ZERO — områden med varvningsnummer som inte är noll behålls. Kräver CGAL 6.1+.
UNION — union av alla indatapolygoner. Kräver CGAL 6.1+.
INTERSECTION — skärning av alla indatapolygoner. Kräver CGAL 6.1+.
Tillgänglighet: 3.7.0 – kräver SFCGAL >= 2.3.0 och CGAL >= 6.0.
Denna metod behöver SFCGAL-backend.
Denna funktion stöder polyedriska ytor.
Reparera en självskärande flugknutspolygon med standardregeln EVEN_ODD.
WITH data AS (
SELECT 'POLYGON((0 0,2 2,2 0,0 2,0 0))'::geometry AS input_polygon
)
SELECT input_polygon AS input_polygon,
CG_PolygonRepair(input_polygon) AS repaired_polygon
FROM data;
POLYGON((0 0,2 2,2 0,0 2,0 0)) | MULTIPOLYGON(((0 0,1 1,0 2,0 0)),((1 1,2 0,2 2,1 1)))
Med regeln UNION behålls all varvad area. Denna regel kräver CGAL 6.1 eller senare.
WITH data AS (
SELECT 'POLYGON((0 0,2 2,2 0,0 2,0 0))'::geometry AS input_polygon
)
SELECT input_polygon AS input_polygon,
CG_PolygonRepair(input_polygon, 'UNION') AS repaired_polygon
FROM data;
POLYGON((0 0,2 2,2 0,0 2,0 0)) | MULTIPOLYGON(((0 0,1 1,0 2,0 0)))