Fonction de fenêtrage qui attribue un identifiant de cluster à chaque objet géométrique en utilisant l'algorithme DBSCAN (clustering spatial basé sur la densité avec gestion du bruit) en 2D.
Syntaxe
-
Syntaxe 1
integer ST_ClusterDBSCAN(geometry winset geom, float8 eps, integer minpoints); -
Syntaxe 2
integer ST_ClusterDBSCANSpheroid(geometry winset geom, float8 eps, integer minpoints);
Paramètres
| Paramètre | Description |
|---|---|
geom |
L'objet géométrique à regrouper en clusters. |
eps |
La distance minimale que vous souhaitez spécifier. |
minpoints |
Le nombre minimal d'objets géométriques devant se trouver dans la distance minimale spécifiée par le paramètre eps. Ce paramètre permet d'identifier si un objet géométrique constitue l'objet central (core) d'un cluster. |
Description
Contrairement à ST_ClusterKMeans, ST_ClusterDBSCAN ne nécessite pas de spécifier le nombre de clusters. Il déduit les clusters à partir de la distance et de la densité que vous définissez.
Un objet géométrique est ajouté à un cluster s'il remplit l'une des conditions suivantes :
Au moins
minpointsobjets se trouvent dans un rayon deepsautour de l'objet géométrique. Dans ce cas, l'objet est un objet géométrique central (core) du cluster.Un objet géométrique central se trouve dans un rayon de
epsautour de l'objet géométrique. Dans ce cas, l'objet est un objet géométrique frontière (boundary) du cluster.
Un objet géométrique frontière peut se situer dans un rayon de eps d'objets géométriques centraux appartenant à plusieurs clusters. Lorsque cela se produit, l'objet géométrique frontière est attribué aléatoirement à l'un de ces clusters, et le cluster résultant peut contenir moins d'objets que minpoints.
Si un objet géométrique ne remplit aucune de ces conditions, il reçoit un identifiant de cluster NULL.
Calcul de la distance :
Syntaxe 1 (
ST_ClusterDBSCAN) : utilise la distance euclidienne. La valeurepsest interprétée comme la distance euclidienne entre les coordonnées.Syntaxe 2 (
ST_ClusterDBSCANSpheroid) : utilise la longueur d'un objet géométrique sur un ellipsoïde. Lorsque la géométrie possède un identifiant de référence spatiale (SRID) exprimé en longitude et latitude, le clustering est effectué dans le système de coordonnées du SRID, les distances étant mesurées en mètres.
Exemples
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;
Résultat :
st_clusterdbscan | st_astext
------------------+--------------
0 | POINT(0 0)
0 | POINT(1 1)
0 | POINT(-1 -1)
1 | POINT(-3 -3)
(4 rows)