Maison >base de données >tutoriel mysql >Comment calculer la distance entre deux points en utilisant la latitude et la longitude dans MySQL ?

Comment calculer la distance entre deux points en utilisant la latitude et la longitude dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-18 12:05:20604parcourir

How to Calculate the Distance Between Two Points Using Latitude and Longitude in MySQL?

Calcul de la distance entre deux points à l'aide de la latitude et de la longitude dans MySQL

Pour déterminer la distance entre deux points en fonction de leur latitude et de leur longitude, MySQL fournit une formule puissante. Dans ce scénario, un utilisateur se trouve dans la ville 3 et cherche à trouver la distance par rapport aux utilisateurs d'autres villes, comme la ville 7.

La solution réside dans l'utilisation de la requête suivante :

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

Cette requête utilise la formule de la loi du cosinus sphérique, qui calcule la distance en kilomètres entre deux points sur une sphère. Il joint la table à lui-même, permettant de récupérer deux paires de coordonnées pour le calcul.

Le résultat de cette requête fournira la distance entre la ville 3 et la ville 7 en kilomètres. Pour obtenir la distance en miles terrestres, remplacez simplement la constante 111,1111 par 69,0.

Pour plus d'efficacité dans la localisation des points à proximité, pensez à utiliser la fonction ST_Distance_Sphere :

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

Alternativement, le calcul de la boîte englobante peut être utilisé pour optimiser davantage la recherche.

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