ST_Centroid — ジオメトリの幾何学的重心を返します。
geometry ST_Centroid(
geometry g1)
;
ジオメトリの幾何学的重心を計算します。ジオメトリの質量中心のPOINT
と同じです。[MULTI
]POINT
に対しては、入力座標の算術平均として計算されます。[MULTI
]LINESTRING
に対しては、各辺の重み付き長さとして計算されます。 [MULTI
]POLYGON
に対しては、「重み」を面積ととらえて計算します。空ジオメトリが与えられた場合には、空のGEOMETRYCOLLECTION
が返されます。NULL
が与えられた場合には、NULL
が返されます。CIRCULARSTRING
またはCOMPOUNDCURVE
が与えられた場合には、まずCurveToLineで直線に変換されてから、LINESTRING
と同じ計算を行います。
New in 2.3.0 : CIRCULARSTRING
とCOMPOUNDCURVE
に対応するようになりました (CurveToLineを使います)。
重心は、最も高い次元のジオメトリの要素の集合の重心と同じです (低い次元のジオメトリは「重み」0に貢献するため)。
This method implements the OpenGIS Simple Features
Implementation Specification for SQL 1.1.
This method implements the SQL/MM specification. SQL-MM 3: 8.1.4, 9.5.5
次に示す図では、青点が入力ジオメトリの重心です。
![]()
| ![]()
|
![]()
| ![]()
|
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)