Heim >Backend-Entwicklung >PHP-Tutorial >Wie berechnet man die Großkreisentfernung in MySQL mithilfe der Haversine-Formel?

Wie berechnet man die Großkreisentfernung in MySQL mithilfe der Haversine-Formel?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 22:23:09597Durchsuche

How to Calculate Great Circle Distance in MySQL Using the Haversine Formula?

MySQL-Großkreisdistanz mithilfe der Haversine-Formel

Die Berechnung der Großkreisdistanz, auch bekannt als Haversine-Distanz, in MySQL kann durch die folgenden Schritte erreicht werden:

1. Längen- und Breitengradwerte abrufen

Zuerst die Längen- und Breitengradkoordinaten aus der relevanten Datenquelle (z. B. einem PHP-Skript) abrufen.

2. Berechnen Sie den Abstand mit der Haversine-Formel

Die Haversine-Formel wird verwendet, um den Großkreisabstand zwischen zwei Punkten auf einer Kugel zu berechnen. In MySQL implementiert die folgende SQL-Anweisung die Formel:

(
    3959 * acos(
        cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
        sin( radians(origin_lat) ) * sin( radians(lat) )
    )
)
  • origin_lat: Breitengrad des Ursprungs
  • origin_lon: Längengrad des Ursprungs
  • lat: Breitengrad des Ziels
  • lon: Ziellängengrad

3. Abfrage innerhalb des Entfernungsbereichs

Um Standorte innerhalb eines angegebenen Entfernungsbereichs zu finden, verwenden Sie die folgende SQL-Anweisung:

SELECT id,
    (
        3959 * acos(
            cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
            sin( radians(origin_lat) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < distance_range
ORDER BY distance
LIMIT num_results;
  • Standorte: Tabelle mit Breiten- und Längengradspalten
  • distance_range: Maximale Entfernung in Meilen (oder Kilometern, wenn die 6371-Konstante verwendet wird)
  • num_results: Anzahl der zurückzugebenden Ergebnisse

4. Beispiel-SQL-Abfrage

Hier ist eine Beispiel-SQL-Abfrage, die verwendet werden kann, um die 20 nächstgelegenen Standorte im Umkreis von 25 Meilen zu den Koordinaten (37, -122) zu finden:

SELECT id,
    (
        3959 * acos(
            cos( radians(37) ) * cos( radians(lat) ) * cos( radians(lon) - radians(-122) ) +
            sin( radians(37) ) * sin( radians(lat) )
        )
    ) AS distance
FROM locations
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;

Von Wenn Sie diese Schritte befolgen, können Sie Großkreisentfernungsberechnungen vollständig in MySQL mithilfe der Haversine-Formel durchführen.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Großkreisentfernung in MySQL mithilfe der Haversine-Formel?. 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