Kategorien:

Geodatenfunktionen

ST_CENTROID

Gibt den Punkt zurück, der das geometrische Zentrum eines Objekts vom Typ GEOGRAPHY oder GEOMETRY darstellt.

Syntax

ST_CENTROID( <geography_or_geometry_expression> )
Copy

Argumente

geography_or_geometry_expression

Das Argument muss ein Ausdruck vom Typ GEOGRAPHY oder GEOMETRY sein.

Rückgabewerte

Gibt ein GEOGRAPHY- oder GEOMETRY-Objekt für den Punkt zurück, der das geometrische Zentrum des Eingabeobjekts darstellt.

Nutzungshinweise

  • Gibt NULL zurück, wenn die Eingabe ein NULL-Wert ist.

  • Wenn das Eingabeobjekt eine GeometryCollection ist, die verschiedene Objekttypen enthält (Polygone, LineStrings und Punkte), verwendet ST_CENTROID den Typ mit der höchsten Dimension für die Bestimmung des geometrischen Zentrums. Beispiel:

    • Wenn die GeometryCollection Polygone, LineStrings und Punkte enthält, verwendet ST_CENTROID die Polygone und ignoriert die LineStrings und Punkte in der Sammlung.

    • Wenn die GeometryCollection LineStrings und Punkte enthält, verwendet ST_CENTROID die LineStrings und ignoriert die Punkte in der Sammlung.

  • Bei GEOMETRY-Objekten hat das zurückgegebene GEOMETRY-Objekt dieselbe SRID wie das Eingabeobjekt.

Beispiele

GEOGRAPHY-Beispiele

Das folgende Beispiel gibt den Punkt zurück, der das geometrische Zentrum eines LineString darstellt.

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

Das folgende Beispiel gibt den Punkt zurück, der das geometrische Zentrum eines Polygons darstellt.

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

Das folgende Beispiel gibt den Punkt zurück, der das geometrische Zentrum einer GeometryCollection darstellt. Diese Sammlung enthält ein Polygon, einen LineString und einen Punkt. ST_CENTROID verwendet bei der Bestimmung des geometrischen Zentrums nur das Polygon (und ignoriert LineString und Punkt).

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

GEOMETRY-Beispiele

Im folgenden Beispiel wird der Zentroid eines einfachen rechteckigen Polygons berechnet. Beachten Sie, wie sich dieses Ergebnis von dem Ergebnis bei Verwendung von ST_CENTROID mit einem GEOGRAPHY-Objekt unterscheidet.

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