Namn

ST_CoverageEdges — Beräknar de unika kanterna i en polygonal täckning.

Synopsis

geometry ST_CoverageEdges(geometry geom, integer edgetype = 0);

geometry ST_CoverageEdges(geometry[] geoms, integer edgetype = 0);

Beskrivning

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

Exempel

Det här exemplet returnerar alla unika kanter i en täckning.

Kod
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;
Utdata
-[ RECORD 1 ]--+----------------------------------------------------------------------------------------------
input_coverage | GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),POLYGON((10 0,20 0,20 10,10 10,10 0)))
all_edges      | MULTILINESTRING((10 0,10 10),(10 10,0 10,0 0,10 0),(10 0,20 0,20 10,10 10))

Det här exemplet returnerar endast en täcknings inre, gemensamma kanter.

Kod
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;
Utdata
-[ RECORD 1 ]--+----------------------------------------------------------------------------------------------
input_coverage | GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),POLYGON((10 0,20 0,20 10,10 10,10 0)))
shared_edges   | MULTILINESTRING((10 0,10 10))