Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_ClusterDBSCAN

Última atualização: Sep 02, 2026

Função de janela que atribui um ID de cluster a cada objeto geométrico usando o algoritmo DBSCAN (agrupamento espacial baseado em densidade 2D com ruído).

Sintaxe

  • Sintaxe 1

    integer ST_ClusterDBSCAN(geometry winset geom, float8 eps, integer minpoints);
  • Sintaxe 2

    integer ST_ClusterDBSCANSpheroid(geometry winset geom, float8 eps, integer minpoints);

Parâmetros

Parâmetro

Descrição

geom

Objeto geométrico a agrupar.

eps

Distância mínima a especifique.

minpoints

Número mínimo de objetos geométricos dentro da distância definida pelo parâmetro eps. Este parâmetro determina se um objeto geométrico é o objeto central de um cluster.

Descrição

Ao contrário de ST_ClusterKMeans, a função ST_ClusterDBSCAN não exige a definição do número de clusters. Ela deriva os agrupamentos com base na distância e na densidade definidas.

Um objeto geométrico entra em um cluster se atender a uma das condições a seguir:

  • Pelo menos minpoints objetos estão dentro da distância eps do objeto geométrico. Nesse caso, o objeto é um objeto central do cluster.

  • Um objeto central está dentro da distância eps do objeto geométrico. Nesse caso, o objeto é um objeto de borda do cluster.

Um objeto de borda pode estar dentro da distância eps de objetos centrais de vários clusters. Quando isso ocorre, o objeto de borda é atribuído aleatoriamente a um desses clusters. O cluster resultante pode conter menos objetos que minpoints.

Se o objeto geométrico não atender a nenhuma das condições, ele recebe um ID de cluster NULL.

Cálculo de distância:

  • Sintaxe 1 (ST_ClusterDBSCAN): usa a distância euclidiana. O valor de eps representa a distância euclidiana entre coordenadas.

  • Sintaxe 2 (ST_ClusterDBSCANSpheroid): usa o comprimento do objeto geométrico em um elipsoide. Se a geometria tiver um identificador de referência espacial (SRID) em longitude e latitude, o agrupamento ocorre no sistema de coordenadas do SRID, com distâncias em metros.

Exemplos

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;

Saída:

 st_clusterdbscan |  st_astext
------------------+--------------
                0 | POINT(0 0)
                0 | POINT(1 1)
                0 | POINT(-1 -1)
                1 | POINT(-3 -3)
(4 rows)