Name

ST_CoverageSimplify — Fensterfunktion, die die Kanten einer polygonalen Abdeckung vereinfacht.

Synopsis

geometry ST_CoverageSimplify(geometry winset geom, float8 tolerance, boolean simplifyBoundary = true);

Beschreibung

Eine Fensterfunktion, die die Kanten von Polygonen in einer polygonalen Abdeckung vereinfacht. Durch die Vereinfachung bleibt die Topologie der Abdeckung erhalten. Das bedeutet, dass die vereinfachten Ausgabepolygone entlang gemeinsamer Kanten konsistent sind und immer noch eine gültige Abdeckung bilden.

Die Vereinfachung verwendet eine Variante des Visvalingam-Whyatt-Algorithmus. Der Parameter Toleranz hat die Einheit Abstand und ist ungefähr gleich der Quadratwurzel der zu vereinfachenden Dreiecksflächen.

Um nur die "internen" Kanten der Abdeckung zu vereinfachen (diejenigen, die von zwei Polygonen geteilt werden), setzen Sie den Parameter simplifyBoundary auf false.

[Note]

Wenn die Eingabe keine gültige Abdeckung ist, kann es zu unerwarteten Artefakten in der Ausgabe kommen (z. B. Überschneidungen von Grenzen oder getrennte Grenzen, die gemeinsam zu sein schienen). Verwenden Sie ST_CoverageInvalidEdges, um festzustellen, ob eine Abdeckung gültig ist.

Verfügbarkeit: 3.4.0

Benötigt GEOS >= 3.12.0

Beispiele

Eingangsabdeckung

Vereinfachte Erfassung

WITH coverage(id, geom) AS (VALUES
  (1, 'POLYGON ((160 150, 110 130, 90 100, 90 70, 60 60, 50 10, 30 30, 40 50, 25 40, 10 60, 30 100, 30 120, 20 170, 60 180, 90 190, 130 180, 130 160, 160 150), (40 160, 50 140, 66 125, 60 100, 80 140, 90 170, 60 160, 40 160))'::geometry),
  (2, 'POLYGON ((40 160, 60 160, 90 170, 80 140, 60 100, 66 125, 50 140, 40 160))'::geometry),
  (3, 'POLYGON ((110 130, 160 50, 140 50, 120 33, 90 30, 50 10, 60 60, 90 70, 90 100, 110 130))'::geometry),
  (4, 'POLYGON ((160 150, 150 120, 160 90, 160 50, 110 130, 160 150))'::geometry)
)
SELECT id, ST_AsText(ST_CoverageSimplify(geom, 30) OVER ())
  FROM coverage;

 id |               st_astext
----+---------------------------------------
  1 | POLYGON ((160 150, 110 130, 50 10, 10 60, 20 170, 90 190, 160 150), (40 160, 66 125, 90 170, 40 160))
  2 | POLYGON ((40 160, 66 125, 90 170, 40 160))
  3 | POLYGON ((110 130, 160 50, 50 10, 110 130))
  4 | POLYGON ((160 150, 160 50, 110 130, 160 150))