名称

ST_ClusterWithin — 聚合函数,按分离距离对几何进行聚类。

语法

geometry[] ST_ClusterWithin(geometry set g, float8 distance);

描述

一个聚合函数,返回一个 GeometryCollections 数组,其中每个集合都是一个聚类,包含一些输入几何。聚类将输入几何划分为集合,其中每个几何都在同一聚类中至少一个其他几何的指定distance 范围内。距离是 SRID 单位中的笛卡尔距离。

ST_ClusterWithin 等效于运行 ST_ClusterDBSCAN,其中 minpoints := 0

可用性:2.2.0

此方法支持圆形字符串和曲线。

示例

WITH testdata AS
  (SELECT unnest(ARRAY['LINESTRING (0 0, 1 1)'::geometry,
		       'LINESTRING (5 5, 4 4)'::geometry,
		       'LINESTRING (6 6, 7 7)'::geometry,
		       'LINESTRING (0 0, -1 -1)'::geometry,
		       'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))'::geometry]) AS geom)

SELECT ST_AsText(unnest(ST_ClusterWithin(geom, 1.4))) FROM testdata;

--result

st_astext
---------
GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(5 5,4 4),LINESTRING(0 0,-1 -1),POLYGON((0 0,4 0,4 4,0 4,0 0)))
GEOMETRYCOLLECTION(LINESTRING(6 6,7 7))
        

另请参见

ST_ClusterWithinWinST_ClusterDBSCANST_ClusterIntersectingST_ClusterIntersectingWin