Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Abstand zwischen zwei geografischen Koordinaten in MySQL?

Wie berechnet man den Abstand zwischen zwei geografischen Koordinaten in MySQL?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 16:45:18230Durchsuche

How to Calculate the Distance Between Two Geographic Coordinates in MySQL?

Bestimmen des Abstands zwischen geografischen Koordinaten in MySQL mithilfe von Breiten- und Längengrad

Ihre Abfrage verwendet die Formel des sphärischen Kosinusgesetzes, um den Abstand zwischen einem Punkt zu berechnen und alle anderen. Um die Entfernung zwischen zwei bestimmten Punkten zu ermitteln, ändern Sie Ihre Abfrage wie folgt:

SELECT a.city AS from_city, b.city AS to_city,
111.111 *
DEGREES(ACOS(LEAST(1.0, COS(RADIANS(a.Latitude))
* COS(RADIANS(b.Latitude))
* COS(RADIANS(a.Longitude - b.Longitude))
+ SIN(RADIANS(a.Latitude))
* SIN(RADIANS(b.Latitude))))) AS distance_in_km
FROM city AS a
JOIN city AS b ON a.id <> b.id
WHERE a.city = 3 AND b.city = 7;

Diese Abfrage ruft Koordinatenpaare für zwei Städte (3 und 7) ab und wendet die Formel an, um die Entfernung in Kilometern zu ermitteln.

Vermeiden Sie für nahegelegene Punkte die Verwendung entfernungsbasierter Filter, da diese langsam sein können. Verwenden Sie stattdessen eine Bounding-Box-Berechnungstechnik, wie hier beschrieben: http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/.

Modern Solution (2022)

Um mit der neuesten Technologie Schritt zu halten, sollten Sie die folgende Abkürzung verwenden Code:

SELECT ST_Distance_Sphere(
point(-87.6770458, 41.9631174),
point(-73.9898293, 40.7628267))

Diese Abfrage verwendet die Funktion ST_Distance_Sphere(), um den Abstand zwischen zwei Punkten zu berechnen.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Abstand zwischen zwei geografischen Koordinaten in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn