Name

ST_Centroid — Gibt den geometrischen Schwerpunkt einer Geometrie zurück.

Synopsis

geometry ST_Centroid(geometry g1);

geography ST_Centroid(geography g1, boolean use_spheroid = true);

Beschreibung

Berechnet einen Punkt, der den geometrischen Schwerpunkt einer Geometrie darstellt. Für [MULTI]POINTs ist der Schwerpunkt das arithmetische Mittel der eingegebenen Koordinaten. Für [MULTI]LINESTRINGs wird der Schwerpunkt anhand der gewichteten Länge der einzelnen Liniensegmente berechnet. Für [MULTI]POLYGONs wird der Schwerpunkt anhand der Fläche berechnet. Wenn eine leere Geometrie übergeben wird, wird eine leere GEOMETRYCOLLECTION zurückgegeben. Wenn NULL übergeben wird, wird NULL zurückgegeben. Wenn CIRCULARSTRING oder COMPOUNDCURVE übergeben werden, werden sie zuerst mit CurveToLine in einen Linestring umgewandelt, dann genauso wie bei LINESTRING

Bei gemischtdimensionalen Eingaben entspricht das Ergebnis dem Schwerpunkt der Komponente Geometrien mit der höchsten Dimension (da die Geometrien mit geringerer Dimension kein "Gewicht" zum Schwerpunkt beitragen).

Beachten Sie, dass bei polygonalen Geometrien der Schwerpunkt nicht unbedingt im Inneren des Polygons liegt. Siehe zum Beispiel das folgende Diagramm des Schwerpunkts eines C-förmigen Polygons. Um einen Punkt zu konstruieren, der garantiert im Inneren eines Polygons liegt, verwenden Sie ST_PointOnSurface.

Neu in 2.3.0 : unterstützt CIRCULARSTRING und COMPOUNDCURVE (mit CurveToLine)

Verfügbarkeit: Mit 2.4.0 wurde die Unterstützung für den geograpischen Datentyp eingeführt.

Diese Methode implementiert die OGC Simple Features Implementation Specification for SQL 1.1.

Diese Methode setzt die SQL/MM-Spezifikation um. SQL-MM 3: 8.1.4, 9.5.5

Beispiele

In den folgenden Abbildungen ist der rote Punkt der Schwerpunkt der Quellengeometrie.

Geometrischer Schwerpunkt eines MULTIPOINT

Geometrischer Schwerpunkt eines LINESTRING

Geometrischer Schwerpunkt eines POLYGON

Der geometrische Schwerpunkt einer GEOMETRYCOLLECTION

SELECT ST_AsText(ST_Centroid('MULTIPOINT ( -1 0, -1 2, -1 3, -1 4, -1 7, 0 1, 0 3, 1 1, 2 0, 6 0, 7 8, 9 8, 10 6 )'));
                st_astext
------------------------------------------
 POINT(2.30769230769231 3.30769230769231)
(1 row)

SELECT ST_AsText(ST_centroid(g))
FROM  ST_GeomFromText('CIRCULARSTRING(0 2, -1 1,0 0, 0.5 0, 1 0, 2 1, 1 2, 0.5 2, 0 2)')  AS g ;
------------------------------------------
POINT(0.5 1)


SELECT ST_AsText(ST_centroid(g))
FROM  ST_GeomFromText('COMPOUNDCURVE(CIRCULARSTRING(0 2, -1 1,0 0),(0 0, 0.5 0, 1 0),CIRCULARSTRING( 1 0, 2 1, 1 2),(1 2, 0.5 2, 0 2))' ) AS g;
------------------------------------------
POINT(0.5 1)