Name

ST_ClusterWithin — Fonction agrégée qui regroupe les géométries en fonction de la distance de séparation.

Synopsis

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

Description

Une fonction agrégée qui renvoie un tableau de GeometryCollections, où chaque collection est un cluster contenant certaines géométries d'entrée. Le regroupement partitionne les géométries d'entrée en ensembles dans lesquels chaque géométrie se trouve dans la distance spécifiée d'au moins une autre géométrie dans le même cluster. Les distances sont des distances cartésiennes dans les unités de l'ISDR.

ST_ClusterWithin est équivalent à l'exécution de ST_ClusterDBSCAN avec minpoints => 0.

Disponibilité : 2.2.0

Cette méthode prend en charge les types Circular String et Curve.

Exemples

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