(Lat, lon) points fast clustering using DBScan algorithm
OTHER License
(Lat, lon) points fast clustering using DBScan algorithm in Go.
Given set of geo points, this library can find clusters according to specified params. There are several optimizations applied:
sqrt
being removedeps
distance k-d tree is being usedBuild list of points:
points := cluster.PointList{{30.258387, 59.951557}, {30.434124, 60.029499}, ...}
Pick settings for DBScan algorithm:
eps
is clustering radius (in kilometers)minPoints
is number of points in eps
-radius of base point to consider it being part of the clustereps
and minPoints
together define minimum density of the cluster.
Run DBScan:
clusters, noise := cluster.DBScan(points, 0.8, 10) // eps is 800m, 10 points minimum in eps-neighborhood
DBScan
function returns list of clusters (each Cluster
being reference to the list of source points
) and list
of point indexes which don't fit into any cluster (noise
).