PostGIS

ST_ClusterWithin

Prev

7.17. Clustering Functions

Next

Name

ST_ClusterWithin — Aggregate function that clusters geometries by separation distance.

Synopsis

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

Description

An aggregate function that returns an array of GeometryCollections, where each collection is a cluster containing some input geometries. Clustering partitions the input geometries into sets in which each geometry is within the specified `distance` of at least one other geometry in the same cluster. Distances are Cartesian distances in the units of the SRID.

ST_ClusterWithin is equivalent to running ST_ClusterDBSCAN with minpoints := 0.

Availability: 2.2.0

check This method supports Circular Strings and Curves.

Examples

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))