ST_SimplifyPreserveTopology — Renvoie une version simplifiée et valide d'une géométrie, en utilisant l'algorithme de Douglas-Peucker.
geometry ST_SimplifyPreserveTopology(
geometry geomA, float tolerance)
;
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
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