suit: Umkreissuche

Beitrag lesen

Davon würde ich immer dann ausgehen, wenn die Koordinaten-Spalten in der DB indexiert sind und die Datentabelle mehr als 30 zeilen enthält.

Die größte derartige Geschichte die ich derzeit am Laufen habe ist eine Händlersuche für einen größeren Möbelhersteller - der hat derzeit 1132 Händler auf der Karte. Bei einem Versuch, die Berechnung mit einer Bounding-Box zu beschleunigen wurde die Suche sogar langsamer (im 2-stelligen ms-Bereich, also nicht signfikant).

laenge=betwen(minLaenge, maxLaenge)

Erst wenn die Länge und Breiten überhaupt in das vorberechnete Viereck passen wird die "etwas" teurere Berechnung durchgeführt - wenn der SQL-Server vernünftig optimiert.

Déjà-vu:
http://forum.de.selfhtml.org/archiv/2013/2/t212676/#m1452996

Was bei deiner Näherung fehlt ist die Tatsache dass wir von einer Kugeloberfläche ausgehen - während die Längengrade rundherumlaufen tun es die Breitengrade nicht. Länge 359 und Länge 1 sind näher zusammen als Länge 1 und Länge 10, würden von deiner Formel aber ausgeschlossen.

Zur Formel siehe auch http://www.kompf.de/gps/distcalc.html

Die Formel dort ist richtig, bei Radius der Erde geht sie aber von einem falschen Wert aus:
Der Wert dort entstammt der großen Halbachse des Hayford-Ellipsoid - er ist also einerseits falsch, weil die große Halbachse verwendet wird und andererseits weil sie einem hoffnungslos veralteten Standard entstammt :)