HyperARCo / GeoDBSCAN

πŸŒπŸ“ A geospatial clustering library based on the DBSCAN algorithm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GeoDBSCAN

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!

Installation

npm install geodbscan

Usage

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

Development

We welcome contributions to the library. The code is written in TypeScript, bundled with microbundle and tested with Jest.

Testing

npm run test

Building

npm run build

or in watch mode:

npm run watch

License

MIT License

About

πŸŒπŸ“ A geospatial clustering library based on the DBSCAN algorithm

License:Other


Languages

Language:TypeScript 100.0%