node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »




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


  • points FeatureCollection<Point> to be clustered
  • maxDistance number Maximum Distance between any point of the cluster to generate the clusters (kilometers only)
  • options Object Optional parameters (optional, default {})
    • options.units string in which maxDistance is expressed, can be degrees, radians, miles, or kilometers (optional, default kilometers)
    • options.minPoints number Minimum number of points to generate a single cluster, points which do not meet this requirement will be classified as an 'edge' or 'noise'. (optional, default 3)


// 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);
var addToMap = [clustered];

Returns 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')

This module is part of the Turfjs project, an open source module collection dedicated to geographic algorithms. It is maintained in the Turfjs/turf repository, where you can create PRs and issues.


Install this module individually:

$ npm install @turf/clusters-dbscan

Or install the Turf module that includes it as a function:

$ npm install @turf/turf