Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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.

share|improve this question
3  
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 '12 at 14:30
add comment

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..

mikey


kmeans

i hope it helps you...

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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