名称

ST_Centroid — 返回几何的几何中心。

语法

geometry ST_Centroid(geometry g1);

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

描述

计算一个点,该点是几何的几何质心。对于 [MULTI]POINT,质心是输入坐标的算术平均值。对于 [MULTI]LINESTRING,质心使用每条线段的加权长度计算。对于 [MULTI]POLYGON,质心根据面积计算。如果提供了一个空几何,则返回一个空的 GEOMETRYCOLLECTION。如果提供 NULL,则返回 NULL。如果提供了 CIRCULARSTRINGCOMPOUNDCURVE,则首先使用 CurveToLine 将它们转换为线串,然后与 LINESTRING 相同

对于混合维度的输入,结果等于最高维度的组件几何的质心(因为低维度几何对质心贡献的“权重”为零)。

请注意,对于多边形几何,质心不一定位于多边形的内部。例如,请参见下方 C 形多边形质心的示意图。要构建一个保证位于多边形内部的点,请使用 ST_PointOnSurface

2.3.0 中的新增功能:支持 CIRCULARSTRINGCOMPOUNDCURVE(使用 CurveToLine)

可用性:2.4.0 引入了对地理的支持。

此方法实现了 OGC 简单要素实现规范 SQL 1.1。

此方法实现了 SQL/MM 规范。

SQL-MM 3:8.1.4、9.5.5

示例

在以下插图中,红点是源几何的质心。

MULTIPOINT 的质心

LINESTRING 的质心

POLYGON 的质心

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)

另请参见

ST_PointOnSurface ST_GeometricMedian