GeoDBSCAN provides a simple JavaScript implementation and API for the DBSCAN clustering algorithm using a geographic distance function. This allows developers to create clusters based on the geographic density of the points. The code is a modernisation and extension of density-clustering.
Interested in this kind of work? Dent Reality is hiring!
npm install geodbscan
GeoDBSCAN only has one method, namely cluster
. It is used like this:
// GeoDBSCAN accepts arrays of [number, number] coordinates
// Here let's assume points is an array of GeoJSON points
const coords = points.map((point) => point.geometry.coordinates);
// Now we can generate our clusters
const clusters = geodbscan.cluster(coords, {
minPts: 2,
epsilon: 1000,
});
// An Array of Arrays that contain the indexs
// of the coordinates in the cluster
// (from the 'coords' variable)
// [
// [0, 4, 5, 3],
// [1, 2],
// [6, 7, 8, 9, 10, 11, 12, 18, 16, 17, 14, 15, 19, 20, 21, 13],
// ]
It takes a second options object argument which has two properties:
- minPts - minimum number of points used to form a cluster
- epsilon? - the radius of a neighborhood with respect a given point (this is in meters). This value is technically optional as we try to calculate a sensible value from a knn distance plot, however you'll probably get better results providing your own value
We welcome contributions to the library. The code is written in TypeScript, bundled with microbundle and tested with Jest.
npm run test
npm run build
or in watch mode:
npm run watch
MIT License