Name

ST_SimplifyPreserveTopology — Renvoie une version simplifiée et valide d'une géométrie, en utilisant l'algorithme de Douglas-Peucker.

Synopsis

geometry ST_SimplifyPreserveTopology(geometry geomA, float tolerance);

Description

Renvoie une version "simplifiée" de la géométrie donnée en utilisant l'algorithme de Douglas-Peucker. Évite de créer des géométries dérivées (polygones en particulier) qui ne sont pas valides. Cette fonction ne fonctionne qu'avec les (multi)lignes et les (multi)polygones, mais vous pouvez l'appeler en toute sécurité avec n'importe quel type de géométrie. Comme la simplification se produit objet par objet, vous pouvez également utiliser une collection de géométries dans cette fonction.

Effectué par le module GEOS.

Disponibilité : 1.3.3

Exemples

Même exemple que Simplify, mais nous voyons que Preserve Topology empêche une simplification excessive. Le cercle peut au maximum devenir un carré.

SELECT ST_Npoints(geom) As np_before, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.1)) As np01_notbadcircle, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.5)) As np05_notquitecircle,
ST_NPoints(ST_SimplifyPreserveTopology(geom,1)) As np1_octagon, ST_NPoints(ST_SimplifyPreserveTopology(geom,10)) As np10_square,
ST_NPoints(ST_SimplifyPreserveTopology(geom,100)) As  np100_stillsquare
FROM (SELECT ST_Buffer('POINT(1 3)', 10,12) As geom) As foo;

--result--
 np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_square | np100_stillsquare
-----------+-------------------+---------------------+-------------+---------------+-------------------
        49 |                33 |                  17 |           9 |             5 |                 5
                

Voir aussi

ST_Simplify