Maison >développement back-end >tutoriel php >Comment calculer la distance orthodromique dans MySQL à l'aide de la formule Haversine ?

Comment calculer la distance orthodromique dans MySQL à l'aide de la formule Haversine ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 22:23:09597parcourir

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

Distance orthodromique MySQL à l'aide de la formule Haversine

Le calcul de la distance orthodromique, également connue sous le nom de distance Haversine, dans MySQL peut être réalisé en suivant les étapes suivantes :

1. Obtenir les valeurs de longitude et de latitude

Tout d'abord, récupérez les coordonnées de longitude et de latitude à partir de la source de données appropriée (par exemple, un script PHP).

2. Calculer la distance à l'aide de la formule Haversine

La formule Haversine est utilisée pour calculer la distance orthodromique entre deux points sur une sphère. Dans MySQL, l'instruction SQL suivante implémente la formule :

(
    3959 * acos(
        cos( radians(origin_lat) ) * cos( radians(lat) ) * cos( radians(lon) - radians(origin_lon) ) +
        sin( radians(origin_lat) ) * sin( radians(lat) )
    )
)
  • origin_lat : Latitude d'origine
  • origin_lon : Longitude d'origine
  • lat : Latitude cible
  • lon : Longitude cible

3. Requête dans une plage de distance

Pour rechercher des emplacements dans une plage de distance spécifiée, utilisez l'instruction SQL suivante :

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;
  • emplacements : tableau contenant les colonnes de latitude et de longitude
  • distance_range : Distance maximale en miles (ou kilomètres si vous utilisez la constante 6371)
  • num_results : Nombre de résultats à retourner

4. Exemple de requête SQL

Voici un exemple de requête SQL qui peut être utilisée pour trouver les 20 emplacements les plus proches dans un rayon de 25 miles des coordonnées (37, -122) :

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;

Par en suivant ces étapes, vous pouvez effectuer des calculs de distance orthodromique entièrement dans MySQL en utilisant la formule Haversine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn