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
。如果提供 CIRCULARSTRING
或 COMPOUNDCURVE
,它们首先会使用 CurveToLine 转换为线串,然后与 LINESTRING
的处理方式相同。
对于混合维度的输入,结果等于最高维度组件几何图形的质心(因为较低维度的几何图形对质心的“权重”贡献为零)。
请注意,对于多边形几何图形,质心不一定位于多边形的内部。例如,请参阅下面 C 形多边形的质心图。要构建一个保证位于多边形内部的点,请使用 ST_PointOnSurface。
2.3.0 中的新功能:支持 CIRCULARSTRING
和 COMPOUNDCURVE
(使用 CurveToLine)
可用性:2.4.0 引入了对地理位置的支持。
此方法实现了 OGC 简单要素 SQL 实现规范 1.1。
此方法实现了 SQL/MM 规范。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)