Skip to main content
Version: 7.0.0



Takes a set of points and partition them into clusters according to DBSCAN's data clustering algorithm.


pointsFeatureCollection<Point>to be clustered
maxDistancenumberMaximum Distance between any point of the cluster to generate the clusters (kilometers only)
options?ObjectOptional parameters (default {})
options.units?stringin which maxDistance is expressed, can be degrees, radians, miles, or kilometers (default "kilometers")
options.mutate?booleanAllows GeoJSON input to be mutated (default false)
options.minPoints?numberMinimum number of points to generate a single cluster, points which do not meet this requirement will be classified as an 'edge' or 'noise'. (default 3)


    FeatureCollection<Point> Clustered Points with an additional two properties associated to each Feature:

    • {number} cluster - the associated clusterId
    • {string} dbscan - type of point it has been classified as ('core' | 'edge' | 'noise')


// create random points with random z-values in their properties
var points = turf.randomPoint(100, { bbox: [0, 30, 20, 50] });
var maxDistance = 100;
var clustered = turf.clustersDbscan(points, maxDistance);


$ npm install @turf/clusters-dbscan

import { clustersDbscan } from "@turf/clusters-dbscan";
const result = clustersDbscan(...);
$ npm install @turf/turf

import * as turf from "@turf/turf";
const result = turf.clustersDbscan(...);