ST_ClusterDBSCAN — 使用DBSCAN算法返回每个输入几何图形的群集ID的窗口函数。
integer
ST_ClusterDBSCAN
(
geometry winset
geom
, float8
eps
, integer
minpoints
)
;
根据的2D实现,返回每个输入几何的簇号
基于密度的噪声应用空间集群(DBSCAN)
算法。不像
ST_ClusterKMeans
,它不需要指定簇数,而是使用所需的
距离
(
eps
)和密度(
minpoints
)参数来构建每个集群。
如果输入几何体符合以下任一条件,则会将其添加到簇中:
请注意,边界几何图形可能位于
eps
多个簇中核心几何体的距离;在这种情况下,任一指定都是正确的,并且边界几何体将被任意分配给其中一个可用簇。在这些情况下,可以使用以下数量生成正确的集群
minpoints
几何图形。当边界几何图形的分配不明确时,如果窗口定义中包括ORDER BY子句,则重复调用ST_ClusterDBSCAN将产生相同的结果,但群集分配可能不同于相同算法的其他实现。
![]() |
|
不满足加入任何其他聚类的条件的输入几何图形将被指定簇号为NULL。 |
可用性:2.3.0
将簇号分配给彼此相距50米内的每个多边形。每个聚类至少需要2个面
![]() 在50米范围内,每个集群至少2个。单例的CID为空
|
|
将具有相同簇号的地块合并为单个几何图形。它使用命名参数调用
SELECT cid, ST_Collect(geom) AS cluster_geom, array_agg(parcel_id) AS ids_in_cluster FROM (
SELECT parcel_id, ST_ClusterDBSCAN(geom, eps := 0.5, minpoints := 5) over () AS cid, geom
FROM parcels) sq
GROUP BY cid;