Vergleichen Sie zunächst den Abstand zwischen den Breiten. Jeder Breitengrad ist ungefähr 111 Kilometer voneinander entfernt. Die Reichweite variiert (aufgrund der leicht ellipsoiden Form der Erde) von 110,567 km (68,703 Meilen) am Äquator bis 111,699 km (69,407 Meilen) an den Polen. Der Abstand zwischen zwei Orten ist gleich oder größer als der Abstand zwischen ihren Breiten.
Beachten Sie, dass dies für Längengrade nicht gilt - die Länge jedes Längengrads hängt vom Breitengrad ab. Wenn Ihre Daten jedoch an ein bestimmtes Gebiet gebunden sind (z. B. ein einzelnes Land), können Sie auch für die Längen eine minimale und maximale Grenze berechnen.
Fahren Sie mit einer schnellen Entfernungsberechnung mit geringer Genauigkeit fort, bei der sphärische Erde vorausgesetzt wird:
Der Großkreisabstand d zwischen zwei Punkten mit den Koordinaten {lat1, lon1} und {lat2, lon2} ist gegeben durch:
d = acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))
Eine mathematisch äquivalente Formel, die für kurze Entfernungen weniger Rundungsfehlern unterliegt, lautet:
d = 2*asin(sqrt((sin((lat1-lat2)/2))^2 +
cos(lat1)*cos(lat2)*(sin((lon1-lon2)/2))^2))
d ist der Abstand im Bogenmaß
distance_km ≈ radius_km * distance_radians ≈ 6371 * d
(6371 km ist der durchschnittliche Radius der Erde )
Die Berechnungsanforderungen für diese Methode sind minimal. Das Ergebnis ist jedoch für kleine Entfernungen sehr genau.
Wenn es sich dann mehr oder weniger in einer bestimmten Entfernung befindet, verwenden Sie eine genauere Methode.
GeographicLib ist die genaueste Implementierung, die ich kenne, obwohl auch die inverse Vincenty-Formel verwendet werden kann.
Wenn Sie ein RDBMS verwenden, legen Sie den Breitengrad als Primärschlüssel und den Längengrad als Sekundärschlüssel fest. Fragen Sie nach einem Breitengradbereich oder nach einem Breiten- / Längengradbereich ab, wie oben beschrieben, und berechnen Sie dann die genauen Entfernungen für die Ergebnismenge.
Beachten Sie, dass moderne Versionen aller wichtigen RDBMS geografische Datentypen und Abfragen nativ unterstützen.