Umkreissuche mit Hilfe von Quadtrees
Verfasst: Freitag 28. Januar 2011, 23:19
Hallo zusammen,
ich bastle gerade (spaßeshalber) an einer Umkreissuche für eine Webapplikation und habe auch schon eine Lösung, basierend auf "normaler" Vektor-Geometrie gefunden. Das Problem an dieser Lösung, sie braucht einen kompletten Tabellendurchlauf. Dabei werden die Abstände vom angegebenen Punkt zu jedem Punkt in der Tabelle berechnet und dann mittels einer WHERE-Clause die gewünschten Datensätze die sich innerhalb des gewünschten Umkreises befinden, ausgefiltert. Wenn die Tabelle nur wenig Zeilen hat, mag das noch vertretbar sein, aber bei vielen Zahlen ist das wohl eher Selbstmord...
Um dem laufzeittechnischen Selbstmord zu entgehen, habe ich mich nach einer anderen Lösung (evtl. ohne SQL-DB) umgeguckt und bin auf eine NoSQL-Datenbank (Pincaster) gestoßen, die intern Quadtrees für die Umkreissuche verwendet. Um Pincaster zu testen habe ich alle Orte der GeoDB in die DB geladen und bin wirklich von den Socken, wie toll und vor allem schnell die Queries bearbeitet werden. Da ich auch verstehen will wie Pincaster das mit dem Quadtree löst, hab ich nach weiterführenden Informationen zu Quadtrees gegoogelt, z.B. Pseudocodes, Test-Implementierungen oder alles was mir helfen könnte selbst einen solchen Quadtree aufzubauen - leider habe ich bis jetzt nicht wirklich etwas entsprechendes gefunden. Das System wie Quadtrees funktionieren habe ich soweit schon durchstiegen, aber mir fehlen generell noch Informationen wie der Baum aufgebaut werden muss und wie ich Punkte in einem bestimmten (km) Umkreis (oder sollte ich besser Umquadrat sagen) zu meinem Ursprungspunkt suchen kann.
Habt ihr vielleicht ein Code-Stück aus einem eurer Projekte, ein Skript von der Uni oder ein Buch das ihr mir hierzu empfehlen könnt?
Ich bin für alle Informationen dankbar...
Grüße
metty
ich bastle gerade (spaßeshalber) an einer Umkreissuche für eine Webapplikation und habe auch schon eine Lösung, basierend auf "normaler" Vektor-Geometrie gefunden. Das Problem an dieser Lösung, sie braucht einen kompletten Tabellendurchlauf. Dabei werden die Abstände vom angegebenen Punkt zu jedem Punkt in der Tabelle berechnet und dann mittels einer WHERE-Clause die gewünschten Datensätze die sich innerhalb des gewünschten Umkreises befinden, ausgefiltert. Wenn die Tabelle nur wenig Zeilen hat, mag das noch vertretbar sein, aber bei vielen Zahlen ist das wohl eher Selbstmord...
Um dem laufzeittechnischen Selbstmord zu entgehen, habe ich mich nach einer anderen Lösung (evtl. ohne SQL-DB) umgeguckt und bin auf eine NoSQL-Datenbank (Pincaster) gestoßen, die intern Quadtrees für die Umkreissuche verwendet. Um Pincaster zu testen habe ich alle Orte der GeoDB in die DB geladen und bin wirklich von den Socken, wie toll und vor allem schnell die Queries bearbeitet werden. Da ich auch verstehen will wie Pincaster das mit dem Quadtree löst, hab ich nach weiterführenden Informationen zu Quadtrees gegoogelt, z.B. Pseudocodes, Test-Implementierungen oder alles was mir helfen könnte selbst einen solchen Quadtree aufzubauen - leider habe ich bis jetzt nicht wirklich etwas entsprechendes gefunden. Das System wie Quadtrees funktionieren habe ich soweit schon durchstiegen, aber mir fehlen generell noch Informationen wie der Baum aufgebaut werden muss und wie ich Punkte in einem bestimmten (km) Umkreis (oder sollte ich besser Umquadrat sagen) zu meinem Ursprungspunkt suchen kann.
Habt ihr vielleicht ein Code-Stück aus einem eurer Projekte, ein Skript von der Uni oder ein Buch das ihr mir hierzu empfehlen könnt?
Ich bin für alle Informationen dankbar...
Grüße
metty