Ich beantwortete diese Art von Frage vor einigen Jahren um Google Answers und wieder vor kurzem bei Uclue.
Ich sollte beachten, dass die bevorzugte technische Konvention Längen im Westen als negative Werte darstellt, aber das wird manchmal nicht beobachtet. Es wird keinen großen Unterschied machen, es sei denn, Sie berechnen über den Meridian gegenüber dem Nullmeridian (wo die Länge umgeht), aber es ist etwas, das Sie über Ihre Datenbank und die Konsistenz mit anderen geografischen Repositorien wissen sollten.
am: Wie in der Uclue Frage oben verbunden umrissen, das Ziel ist, zwei Paare von Werten zu berechnen, MINLATITUDE/MAXLATITUDE und MINLONGITUDE/MAXLONGITUDE, so dass alle Punkte in einem bestimmten Abstand von einer gegebenen Position sind enthalten in die Ergebnisse der SQL-Abfrage:
SELECT * FROM Locations
WHERE (latitude between MINLATITUDE and MAXLATITUDE)
and (longitude between MINLONGITUDE and MAXLONGITUDE)
Ab MySQL 5.0 können wir die Berechnungen der MIN/MAX-Paare zusammen mit der SELECT in einer bequemen gespeicherten Prozedur bündeln. Wir können sogar die Ergebnisse einer solchen Abfrage mit einem Cursor durchlaufen und die exakte "Großkreis" -Distanz überprüfen, wenn eine solche Genauigkeit gewünscht wird. Ich würde jedoch annehmen, dass ein vereinfachter Ansatz, der die obige Abfrage dynamisch von einem aufrufenden Framework wie Python oder C++ erstellt, für die meisten Anwendungen sinnvoll ist (um die Arbeit des Datenbankservers zu minimieren).
Lassen Sie mich wissen, wenn ich auf diese Möglichkeiten eingehen sollte.
Ein ausführlicher Blog: http://sforsuresh.in/finding-nearest-location-using-latitude-longitude/ –