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.