Clusterpunkte in PostGIS

8

Ich baue eine Anwendung, die lat / long-Werte aus einer Datenbank zieht und sie auf einer Google Map darstellt. Es könnte Tausende von Datenpunkten geben, also "Cluster" Punkte nahe beieinander, so dass der Benutzer nicht mit Symbolen überfordert ist. Im Moment führe ich dieses Clustering in der Anwendung mit einem einfachen Algorithmus wie diesem aus:

  1. Erhalte ein Array aller Punkte
  2. Pop erster Punkt aus Array
  3. Vergleichen Sie den ersten Punkt mit allen anderen Punkten im Array, um nach solchen zu suchen, die in x Abstand fallen
  4. Erstellen Sie einen Cluster mit den ursprünglichen und den geschlossenen Punkten.
  5. Entfernen Sie nahe gelegene Punkte aus dem Array
  6. Wiederholen Sie

Ich gebe jetzt bekannt, dass dies ineffizient ist und der Grund dafür ist, dass ich mich mit GIS-Systemen beschäftigt habe. Ich habe PostGIS eingerichtet und habe meine Lat & amp; Longs, die in einem POINT-Geometrieobjekt gespeichert sind.

Kann mich jemand auf eine einfache Implementierung dieses Clustering-Algorithmus in PostGIS anleiten oder auf Ressourcen hinweisen?

    
Mike 24.06.2011, 06:04
quelle

2 Antworten

2

Ich habe eine Kombination aus snaptogrid und avg . Mir ist klar, dass es Algorithmen gibt (d. H. Kmeans wie Denis vorgeschlagen), die mir bessere Cluster geben werden, aber für das, was ich tue, ist das schnell und genau genug.

    
Mike 25.06.2011, 22:18
quelle
1

Wenn es genug ist, in Ihrem Browser ein paar Dinge zu gruppieren, könnten Sie die Clustering-Fähigkeiten von OpenLayer einfach nutzen. Es gibt 3 Beispiele, die Clustering zeigen.

Ich habe es vorher mit einer PostGIS-Datenbank verwendet, und solange Sie keine lächerlichen Datenmengen haben, funktioniert es ziemlich reibungslos.

Wouter van Nifterick 26.06.2011 00:31
quelle