Name

ST_ClusterRelateWin — ジオメトリーが接続するかどうかを判定する空間関係パターンを使って、入力ジオメトリーを接続されたジオメトリ集合にクラスタリングして、クラスター識別子を返すウィンドウ関数です。

Synopsis

integer ST_ClusterRelateWin(geometry winset geom, text relate_matrix);

説明

交差するジオメトリの接続されたクラスターを構築するウィンドウ関数です。ジオメトリーは、クラスターの他のメンバーとのDE9IM空間関係行列が対で合致する場合には、クラスターに追加されます。この関数によって、境界同士が接触するすべてのオブジェクトのクラスターを構築できますが、単にオーバーラップするものは除外されます。

Availability: 3.7.0

このラインストリングのコレクションは ST_ClusterIntersectingWinを使って単一のクラスターを形成しますが、 ST_ClusterRelateWinを使うと、端点でのみ接続する三つのグループにクラスタリングできます。

接続されオーバーラップしているラインストリング

CREATE TABLE clusterrelate (
  id serial,
  geom geometry);

INSERT INTO clusterrelate (geom)
  VALUES
  ('LINESTRING(0 0,1 1)'),
  ('LINESTRING(2 2,1 1)'),
  ('LINESTRING(0 1,1 0)'),
  ('LINESTRING(0 1,0 4)'),
  ('LINESTRING(2 2,2 4)'),
  ('LINESTRING(1.5 2.5,2.5 3.5)');

SELECT id,
  ST_AsText(geom),
  ST_ClusterRelateWin(geom, '****0****') OVER () AS cluster
FROM clusterrelate;

 id |          st_astext          | cluster
----+-----------------------------+---------
  1 | LINESTRING(0 0,1 1)         |       0
  2 | LINESTRING(2 2,1 1)         |       0
  3 | LINESTRING(0 1,1 0)         |       1
  4 | LINESTRING(0 1,0 4)         |       1
  5 | LINESTRING(2 2,2 4)         |       0
  6 | LINESTRING(1.5 2.5,2.5 3.5) |       2