Catégories :

Fonctions géospatiales

ST_SIMPLIFY

Si objet d’entrée GEOGRAPHY qui représente une ligne ou un polygone, renvoie une approximation plus simple de l’objet. La fonction utilise l’algorithme de Douglas – Peucker pour identifier et supprimer les sommets sélectionnés, résultant en un objet plus simple qui a moins de sommets.

Par exemple, si l’objet d’entrée est un polygone avec 50 sommets, ST_SIMPLIFY peut renvoyer un polygone plus simple avec uniquement 20 de ces sommets.

Lors de la simplification d’un objet, la fonction ne supprime un sommet que si la distance entre ce sommet et l’arête résultant de la suppression de ce sommet est dans la tolérance spécifiée.

Syntaxe

ST_SIMPLIFY( <geography_expression>, <tolerance> [ , <preserve_collapsed> ] )

Arguments

Obligatoire :

expression_géographie

L’objet GEOGRAPHY à simplifier.

Selon le type de l’objet GEOGRAPHY, ST_SIMPLIFY a l’effet suivant :

Type d’objet

Effet de ST_SIMPLIFY

LineString, MultiLineString, polygone ou MultiPolygon

ST_SIMPLIFY applique l’algorithme de simplification

Point ou MultiPoint

ST_SIMPLIFY n’a aucun effet.

GeometryCollection ou FeatureCollection

ST_SIMPLIFY applique l’algorithme de simplification à chaque objet de la collection.

tolérance

Distance maximale en mètres entre un sommet et l’arête résultant de la suppression du sommet. Si la distance dépasse cette tolérance pour un sommet, ST_SIMPLIFY conserve ce sommet dans l’objet simplifié.

Facultatif :

conserver_réduit

Si TRUE, conserve les objets qui seraient autrement trop petits compte tenu de la tolérance.

Par exemple, lorsque conserver_réduit est FALSE et la tolérance est 10 (mètres), une ligne de 1 m est réduite à un point dans l’objet simplifié. Lorsque conserver_réduit est TRUE, la ligne est conservée dans l’objet simplifié.

Par défaut : FALSE.

Renvoie

La fonction renvoie une valeur de type GEOGRAPHY.

Exemples

Les exemples de cette section affichent la sortie au format WKT :

alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';

L’exemple suivant renvoie un LineString simplifié qui a moins de sommets que le LineString d’origine. Dans l’objet simplifié, un sommet est omis si la distance entre le sommet et l’arête qui remplace le sommet est inférieure à 1000 mètres.

SELECT ST_SIMPLIFY(
    TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'),
    1000);
+----------------------------------------------------------------------------------------------------+
| ST_SIMPLIFY(                                                                                       |
|     TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), |
|     1000)                                                                                          |
|----------------------------------------------------------------------------------------------------|
| LINESTRING(-122.306067 37.55412,-122.325879 37.586852)                                             |
+----------------------------------------------------------------------------------------------------+