ST_CoverageSimplify — Fonction window qui simplifie les bords d'une couverture polygonale.
geometry ST_CoverageSimplify(
geometry winset geom, float8 tolerance, boolean simplifyBoundary = true)
;
Une fonction window qui simplifie les bords des polygones dans une couverture polygonale. La simplification préserve la topologie de la couverture. Cela signifie que les polygones de sortie simplifiés sont cohérents le long des arêtes communes et forment toujours une couverture valide.
La simplification utilise une variante de l'algorithme Visvalingam-Whyatt. Le paramètre tolérance
a des unités de distance et est approximativement égal à la racine carrée des zones triangulaires à simplifier.
Pour simplifier uniquement les bords "internes" de la couverture (ceux qui sont partagés par deux polygones), définissez le paramètre simplifyBoundary
à false.
Si l'entrée n'est pas une couverture valide, il peut y avoir des artefacts inattendus dans la sortie (tels que des intersections de frontières, ou des frontières séparées qui semblaient être partagées). Utilisez ST_CoverageInvalidEdges pour déterminer si une couverture est valide. |
Disponibilité : 3.4.0
Nécessite GEOS >= 3.12.0
|
|
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))