ST_CoverageEdges — Beräknar de unika kanterna i en polygonal täckning.
geometry ST_CoverageEdges(geometry geom, integer edgetype = 0);
geometry ST_CoverageEdges(geometry[] geoms, integer edgetype = 0);
Returnerar en MultiLineString som representerar de unika kanterna i en polygonal täckning. En polygonal täckning är en uppsättning icke-överlappande polygoner där angränsande polygoner har matchande hörn längs gemensamma kanter.
Parametern edgetype kan användas för att välja vilka kanter som returneras:
0 (ALL) – alla unika kanter (standard)
1 (EXTERIOR) – endast yttre kanter (inte gemensamma)
2 (INTERIOR) – endast inre kanter (gemensamma)
Tillgänglig sedan: 3.7.0
Kräver GEOS >= 3.15.0
Det här exemplet returnerar alla unika kanter i en täckning.
WITH coverage(geom) AS (
VALUES (
'GEOMETRYCOLLECTION(
POLYGON((0 0,10 0,10 10,0 10,0 0)),
POLYGON((10 0,20 0,20 10,10 10,10 0))
)'::geometry
)
)
SELECT geom AS input_coverage,
ST_CoverageEdges(geom) AS all_edges
FROM coverage;
Det här exemplet returnerar endast en täcknings inre, gemensamma kanter.
WITH coverage(geom) AS (
VALUES (
'GEOMETRYCOLLECTION(
POLYGON((0 0,10 0,10 10,0 10,0 0)),
POLYGON((10 0,20 0,20 10,10 10,10 0))
)'::geometry
)
)
SELECT geom AS input_coverage,
ST_CoverageEdges(geom, 2) AS shared_edges
FROM coverage;