名前

ST_ClusterWithin — 分離距離でジオメトリのクラスタリングを行う集約関数です。

概要

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

説明

GEOMETRYCOLLECTIONの配列を返す集約関数で、個々の要素は入力ジオメトリを含むクラスタです。クラスタリングは入力ジオメトリを、それぞれのジオメトリが、同じクラスタ内の他のジオメトリのうち少なくとも一つとの距離がdistance以内となる集合に分割します。距離はSRIDの単位を取るデカルト距離です。

ST_ClusterWithin は、ST_ClusterDBSCANminpoints => 0 で実行するのと同じです。

Availability: 2.2.0

このメソッドは曲線ストリングと曲線に対応しています。

Code
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 unnest(ST_ClusterWithin(geom, 1.4)) FROM testdata;
出力:
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))
Figure
Geometry figure for visual-st-clusterwithin-01