Name

ST_CoverageEdges — Computes the unique edges of a polygonal coverage.

Synopsis

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

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

Description

Returns a MultiLineString representing the unique edges of a polygonal coverage. A polygonal coverage is a set of non-overlapping polygons where adjacent polygons have matching vertices along shared edges.

The edgetype parameter can be used to select which edges are returned:

  • 0 (ALL) - all unique edges (default)

  • 1 (EXTERIOR) - only exterior edges (non-shared)

  • 2 (INTERIOR) - only interior edges (shared)

Availability: 3.7.0

Requires GEOS >= 3.15.0

Examples

This example returns all unique edges of a coverage.

Code
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;
Output
-[ 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))

This example returns only the interior shared edges of a coverage.

Code
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;
Output
-[ 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))