Fungsi jendela yang memberikan ID kluster untuk setiap objek geometry menggunakan algoritma Pengelompokan spasial berbasis kerapatan 2D untuk aplikasi dengan kebisingan (DBSCAN).
Sintaksis
Sintaksis 1
integer ST_ClusterDBSCAN(geometry winset geom, float8 eps, integer minpoints);Sintaksis 2
integer ST_ClusterDBSCANSpheroid(geometry winset geom, float8 eps, integer minpoints);
Parameter
| Parameter | Deskripsi |
|---|---|
geom | Objek geometry yang akan dikelompokkan. |
eps | Jarak minimum yang ingin Anda tentukan. |
minpoints | Jumlah minimum objek geometry yang harus berada dalam jarak minimum yang ditentukan oleh parameter eps. Parameter ini digunakan untuk mengidentifikasi apakah suatu objek geometry merupakan objek geometry inti dari sebuah kluster. |
Deskripsi
Berbeda dengan ST_ClusterKMeans, ST_ClusterDBSCAN tidak mengharuskan Anda menentukan jumlah kluster. Kluster diturunkan berdasarkan jarak dan kerapatan yang Anda definisikan.
Suatu objek geometry dimasukkan ke dalam kluster jika memenuhi salah satu kondisi berikut:
Terdapat setidaknya
minpointsobjek dalam jarakepsdari objek geometry tersebut. Dalam kasus ini, objek tersebut merupakan objek geometry inti dari kluster.Terdapat objek geometry inti dalam jarak
epsdari objek geometry tersebut. Dalam kasus ini, objek tersebut merupakan objek geometry batas dari kluster.
Objek geometry batas dapat berada dalam jarak eps dari objek geometry inti milik beberapa kluster sekaligus. Jika hal ini terjadi, objek geometry batas tersebut akan ditetapkan secara acak ke salah satu kluster tersebut, sehingga kluster hasilnya mungkin berisi lebih sedikit objek daripada nilai minpoints.
Jika suatu objek geometry tidak memenuhi kedua kondisi tersebut, objek tersebut akan diberi ID kluster NULL.
Perhitungan jarak:
Sintaksis 1 (
ST_ClusterDBSCAN): menggunakan Jarak Euclidean. Nilaiepsdiinterpretasikan sebagai jarak Euclidean antar koordinat.Sintaksis 2 (
ST_ClusterDBSCANSpheroid): menggunakan panjang objek geometry pada elipsoid. Ketika geometry memiliki spatial reference identifier (SRID) yang dinyatakan dalam bujur dan lintang, pengelompokan dilakukan dalam sistem koordinat SRID dengan jarak diukur dalam meter.
Contoh
SELECT ST_ClusterDBSCAN(geom, 2, 1) OVER (), st_AsText(geom)
FROM (
SELECT unnest(ARRAY[
'POINT (0 0)'::geometry,
'POINT(1 1)'::geometry,
'POINT (-1 -1)'::geometry,
'POINT (-3 -3)'::geometry
]) AS geom
) AS test;Output:
st_clusterdbscan | st_astext
------------------+--------------
0 | POINT(0 0)
0 | POINT(1 1)
0 | POINT(-1 -1)
1 | POINT(-3 -3)
(4 rows)