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!