Name

ST_SimplifyVW — Renvoie une représentation simplifiée d'une géométrie, en utilisant l'algorithme de Visvalingam-Whyatt

Synopsis

geometry ST_SimplifyVW(geometry geom, float tolerance);

Description

Renvoie une représentation simplifiée d'une géométrie à l'aide de l'algorithme Visvalingam-Whyatt. La tolérance de simplification est une valeur de surface, dans les unités du SRS d'entrée. La simplification supprime les sommets qui forment des "coins" dont la surface est inférieure à la tolérance. Le résultat peut ne pas être valide même si l'entrée l'est.

La fonction peut être appelée avec n'importe quel type de géométrie (y compris les GeometryCollections), mais seuls les lignes et polygones sont simplifiés. Les extrémités des lignes sont préservées.

[Note]

La géométrie renvoyée peut perdre sa simplicité (voir ST_IsSimple), la topologie peut ne pas être préservée et les résultats polygonaux peuvent être invalides (voir ST_IsValid). Utilisez ST_SimplifyPreserveTopology pour préserver la topologie et garantir la validité. ST_CoverageSimplify préserve également la topologie et la validité.

[Note]

Cette fonction ne préserve pas les limites partagées entre les polygones. Utilisez ST_CoverageSimplify si cela est nécessaire.

[Note]

Cette fonction gère la 3D et la troisième dimension affectera le résultat.

Disponibilité : 2.2.0

Exemples

Une LineString est simplifiée avec une tolérance de surface minimale de 30.

SELECT ST_AsText(ST_SimplifyVW(geom,30)) simplified
  FROM (SELECT 'LINESTRING(5 2, 3 8, 6 20, 7 25, 10 10)'::geometry AS geom) AS t;

 simplified
------------------------------
LINESTRING(5 2,7 25,10 10)

Simplification d'une ligne.

SELECT ST_SimplifyVW(
  'LINESTRING (10 10, 50 40, 30 70, 50 60, 70 80, 50 110, 100 100, 90 140, 100 180, 150 170, 170 140, 190 90, 180 40, 110 40, 150 20)',
    1600);

Simplification d'un polygone.

SELECT ST_SimplifyVW(
  'MULTIPOLYGON (((90 110, 80 180, 50 160, 10 170, 10 140, 20 110, 90 110)), ((40 80, 100 100, 120 160, 170 180, 190 70, 140 10, 110 40, 60 40, 40 80), (180 70, 170 110, 142.5 128.5, 128.5 77.5, 90 60, 180 70)))',
    40);