Catégories :

Fonctions géospatiales

ST_CENTROID

Renvoie le point représentant le centre géométrique d’un objet GEOGRAPHY ou GEOMETRY.

Syntaxe

ST_CENTROID( <geography_or_geometry_expression> )
Copy

Arguments

geography_or_geometry_expression

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

Renvoie

Renvoie un objet GEOGRAPHY ou GEOMETRY 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.

  • Pour les objets GEOMETRY, l’objet GEOMETRY renvoyé a le même SRID que l’entrée.

Exemples

Exemples GEOGRAPHY

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)          |
+----------------------+
Copy

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) |
+------------------------+
Copy

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)             |
+------------------------------------+
Copy

Exemples GEOMETRY

L’exemple suivant calcule le centroïde d’un simple polygone rectangulaire. Notez comment le résultat diffère de celui obtenu en utilisant ST_CENTROID avec un objet GEOGRAPHY

SELECT ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'));
Copy
+--------------------------------------------------------------------------+
| ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))')) |
|--------------------------------------------------------------------------|
| POINT(15 15)                                                             |
+--------------------------------------------------------------------------+
Copy