ST_GeometricMedian — 返回多点的几何中位数。
geometry ST_GeometricMedian ( geometry geom, float8 tolerance = NULL, int max_iter = 10000, boolean fail_if_not_converged = false);
使用 Weiszfeld 算法计算多点几何的近似几何中值。 几何中位数是最小化到输入点的距离总和的点。 它提供了一种中心性度量,与质心(质心)相比,它对异常点不太敏感。
该算法进行迭代,直到连续迭代之间的距离变化小于提供的容差参数。 如果在 max_iterations 次迭代后仍未满足此条件,则函数会产生错误并退出,除非fail_if_not_converged 设置为 false(默认值)。
如果未提供容差参数,则根据输入几何图形的范围计算公差值。
如果存在,输入点 M 值将被解释为它们的相对权重。
可用性:2.3.0
增强:2.5.0 添加了对 M 作为点权重的支持。
该函数支持 3d 并且不会丢失 z-index。
该功能支持M坐标。
多点的几何中值(红色)和质心(绿松石色)的比较。
WITH test AS (
SELECT 'MULTIPOINT((10 10), (10 40), (40 10), (190 190))'::geometry geom)
SELECT
ST_AsText(ST_Centroid(geom)) centroid,
ST_AsText(ST_GeometricMedian(geom)) median
FROM test;
centroid | median
--------------------+----------------------------------------
POINT(62.5 62.5) | POINT(25.01778421249728 25.01778421249728)
(1 row)