Name

ST_ClusterWithin — Aggregatfunktion, die Geometrien nach Trennungsabstand gruppiert.

Synopsis

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

Beschreibung

Eine Aggregatfunktion, die ein Array von GeometryCollections zurückgibt, wobei jede Collection ein Cluster ist, das einige Eingabegeometrien enthält. Bei der Clusterbildung werden die Eingabegeometrien in Gruppen unterteilt, in denen jede Geometrie innerhalb des angegebenen Abstands von mindestens einer anderen Geometrie im selben Cluster liegt. Die Abstände sind kartesische Abstände in den Einheiten des SRID.

ST_ClusterWithin ist gleichbedeutend mit der Ausführung von ST_ClusterDBSCAN mit minpoints => 0.

Verfügbarkeit: 2.2.0

Diese Methode unterstützt kreisförmige Strings und Kurven.

Beispiele

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