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.

After doing a lot of research on different types of clustering coordinates (server side) I am still having problems with choosing the best approach for my project.

My requirements:

  1. Ability to work with more than 1.000,000 coordinates.
  2. Be able to filter coordinates by point of interest.
  3. Support map zooming and dragging.
  4. Fast
  5. I can't use any third party services.

Here is what I found:

  1. Region quadtree seems to the most suitable algorithm.
  2. Geo hashing coordinates + Solr for quick retrieval/filtering of points (might only work with small set of data since the clustering will have to happen on the fly)

I would like to know how to deal with map zooming & dragging while maintaining fast response from the server. How can clusters be cached if the maps is dragged, zoomed? Some clusters can be pre-clustered for large areas (continents) but what if there are 10,000 points within once city?

My software stack is postgresql, python, django.

share|improve this question
add comment

3 Answers 3

Maptimize could be useful.

share|improve this answer
    
I know about their service. However, I can't use any third party services. I will add it to my requirements to make my question more clear. –  Eeyore Mar 10 '11 at 3:08
add comment

Source Code for Clustering with Google Maps and Python with Django

http://forum.mapaplace.com/discussion/3/server-side-marker-clustering-python-source-code/

you will need to modify for postgres database as this uses MySQL (+spatial extensions)

Working Example: http://www.mapaplace.com/Vancouver/BC/

share|improve this answer
    
Excellent! Thanks for this ressource. –  julien Mar 9 '11 at 17:05
    
I found this site before. It's much slower than maptimize for example. –  Eeyore Mar 10 '11 at 3:13
add comment

You could also try this:

https://github.com/biodiv/anycluster

it uses kmeans and/or grid clustering, and you can easily adjust/rewrite it to your needs.

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.