ST_Centroid — Gibt den geometrischen Schwerpunkt einer Geometrie zurück.
geometry ST_Centroid(geometry g1);
geography ST_Centroid(geography g1, boolean use_spheroid = true);
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
Centroid of a MultiPoint.
SELECT ST_Centroid( 'MULTIPOINT (8 24,10 92,12 154,17 68,28 10,29 52,29 84,55 50,56 24,131 14,160 180,189 180)');
POINT(60.333 77.667)
Centroid of a LineString.
SELECT ST_Centroid( 'LINESTRING (190 160,10 190,40 90,20 70,10 10,30 40,30 10,110 40,70 10,110 10,140 40,140 10,160 30,180 10)');
POINT(76.191 79.876)
Centroid of a Polygon.
SELECT ST_Centroid( 'POLYGON ((190 190,10 190,10 10,190 10,190 20,160 30,60 30,60 130,190 140,190 190))');
POINT(80.251 113.405)
Centroid of the highest-dimension components of a GeometryCollection.
SELECT ST_Centroid(
'GEOMETRYCOLLECTION (POLYGON ((190 170,180 100,80 140,80 160,130 160,110 180,110 190,180 180,190 170)),
LINESTRING (80 120,120 20,140 70,150 30,180 50,190 10),
MULTIPOINT (19 150,22 49,30 13,32 101,45 35,67 88,75 16))');
POINT(143.361 148.263)
SELECT 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 ;
st_astext ------------- POINT(0.5 1) (1 row)
SELECT 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;
st_astext ------------- POINT(0.5 1) (1 row)
Centroids of the parts of a MultiPolygon.
SELECT ST_Collect(ST_Centroid(geom) ORDER BY path)
FROM ST_Dump('MULTIPOLYGON (
((0 0,0 1,1 1,1 0,0 0)),
((2 2,2 3,3 3,3 2,2 2))
)'::geometry);
MULTIPOINT((0.5 0.5),(2.5 2.5))