I have a dataset of 655 lat/long pairs which I'd like to split into about 100 groups. A group should have 5-10 pairs which are geographically close to each other. Dense groups should have more points, sparse groups should have less. For example urban groupings should be larger, rural ones smaller.

Is there an established algorithm for doing this kind of grouping, or am I going to have to design one from scratch?

I'm using google maps v3 api to display this data, but as it's a fixed dataset I'm prepared to do some offline number crunching.

  • 4
    A wealth of options becomes available when you're willing to leave the comfort of your GIS for doing specialized or sophisticated analyses like this one. For instance, check out all the clustering solutions available with R. (Other stats packages offer many clustering solutions, too.) It doesn't take much facility with R to use these, either: you have to learn how to read your coordinates, apply a clustering routine, and write out its results (if necessary) to a file your GIS can post-process.
    – whuber
    May 22, 2012 at 14:30
  • Can you be explicit in definitions of size?
    – raphael
    Oct 5, 2014 at 18:55

1 Answer 1


you can check out k-means clustering algorithm here.

In data mining, k-means clustering is a method of cluster analysis which aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean. This results into a partitioning of the data space into Voronoi cells.

kmeans-postgresql implementation here.. and i newly meet this topic Spatial clustering with PostGIS , you can check out here from @Mike Toews with ST_MinimumBoundingCircle function..



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.