Catégories :

Fonctions géospatiales

ST_CENTROID

Renvoie le point représentant le centre géométrique d’un objet géospatial.

Syntaxe

ST_CENTROID( <geography_expression> )

Arguments

expression_géographie

L’argument doit être une expression de type GEOGRAPHY.

Renvoie

Renvoie un objet GEOGRAPHY pour le point qui représente le centre géométrique de l’objet d’entrée.

Notes sur l’utilisation

  • Renvoie NULL si l’entrée est un NULL.

  • Si l’objet d’entrée est une GeometryCollection qui contient différents types d’objet (polygones, LineStrings et points), ST_CENTROID utilise le type avec la dimension la plus élevée pour déterminer le centre géométrique. Par exemple :

    • Si la GeometryCollection contient des polygones, des LineStrings et des points, ST_CENTROID utilise les polygones et ignore les LineStrings et les points de la collection.

    • Si la GeometryCollection contient des LineStrings et des points, ST_CENTROID utilise les LineStrings et ignore les points de la collection.

Exemples

L’exemple suivant renvoie le point qui représente le centre géométrique d’une LineString.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'LINESTRING(0 0, 0 -2)'
    )
) as center_of_linestring;
+----------------------+
| CENTER_OF_LINESTRING |
|----------------------|
| POINT(0 -1)          |
+----------------------+

L’exemple suivant renvoie le point qui représente le centre géométrique d’un polygone.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'
    )
) as center_of_polygon;
+------------------------+
| CENTER_OF_POLYGON      |
|------------------------|
| POINT(15 15.014819855) |
+------------------------+

L’exemple suivant renvoie le point qui représente le centre géométrique d’une GeometryCollection. Cette collection contient un polygone, une LineString et un point. ST_CENTROID utilise uniquement le polygone (et ignore la LineString et le point) lors de la détermination du centre géométrique.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'GEOMETRYCOLLECTION(POLYGON((10 10, 10 20, 20 20, 20 10, 10 10)), LINESTRING(0 0, 0 -2), POINT(50 -50))'
    )
) as center_of_collection_with_polygons;
+------------------------------------+
| CENTER_OF_COLLECTION_WITH_POLYGONS |
|------------------------------------|
| POINT(15 15.014819855)             |
+------------------------------------+