logo       
Google Custom Search
    AddThis Social Bookmark Button

Re: Re: sql-Abfrage nach Entfernung: msg#00002

Subject: Re: Re: sql-Abfrage nach Entfernung
Mailingliste OpenGeoDB <opengeodb-r1mDYR0DdAyzQB+pC5nmwQ@xxxxxxxxxxxxxxxx> 
schrieb am 03.11.03 10:49:05:
> Interessant ist natürlich, wieviel Zeit die Abfrage kostet, immerhin muss für 
> die Sortierung der ganze Datenbestand relativ aufwendig (Interpretation einer 
> komplexen Formel) berechnet werden.
> Wahrscheinlich ist eine Eingrenzung der Daten auf ein Rechteck sinnvoll
> Bsp: where breite >= b1 and breite <= b2 and laenge >= l1 and laenge <= l2

Hallo Leute

Bin hier neu und will mich erstmal ganz kurz vorstellen. Mein Name ist Patrick 
Assion, ich arbeite als Programmierer bei einer Medienfirma, habe mal einen PPL 
Beiblatt C (Segelflugschein) gemacht und beschäftige mich seit ca. 1 Jahr mit 
dem Thema Koordinaten. Eine genauere Vorstellung folgt später, wenn ich etwas 
mehr Zeit habe.

Ich für meinen Fall habe obiges Problem sehr ähnlich gelöst. In der Datenbank 
speichere ich nicht nur die "echten" Koordinatenpaare, sondern auch gleich die 
PHI- und LAMBDA-Werte (Bogenmaße) in zwei indizierten Feldern.

Beim Ermitteln der - sagen wir mal - 20 nächstgelegenen Orte suche ich alle 
Datensätze mit PHI +/- 0.002 und LAMBDA +/- 0.003 (entspricht in Deutschland 
einer Entfernung von ca. 12 km in O-, W-, N- und S-Richtung). Sollten damit 
nicht mindestens 40 Orte gefunden werden, erweitere ich die den Bereich 
schrittweise. 40 Orte deswegen, da ich sonst u.u. über die Diagonale Orte 
angezeigt bekäme, die weiter entfernt sind (Faktor 1.4) als Orte in der 
Horizontalen/Vertikalen, die dummerweise gerade außerhalb meines Bereiches 
liegen, aber näher dran wären.

Aus den so erhaltenen Orten berechne ich in PHP (nicht durch die DB) anhand der 
Großkreisnavigation die exakten Entfernungnen (jaja, ich weiß, das ist nicht 
wirklich exakt, da die Erde bekanntlich keine Kugel sonden ein Geoid ist), 
werfe dann die Daten in Arrays, sortiere diese via multisort, et voila...

Diese Lösung ist so schnell, dass sogar mein altes P166- Laptop mit 32MB und 
WIMP-Konfiguration, die Ergebnisse innerhalb von 2-3 Sekunden rauswirft.

Gruß Patrick



<Prev in Thread] Current Thread [Next in Thread>