Maison > base de données > tutoriel mysql > Comment calculer la distance entre deux villes avec MySQL ?

Comment calculer la distance entre deux villes avec MySQL ?

Barbara Streisand
Libérer: 2024-12-15 01:13:17
original
361 Les gens l'ont consulté

How to Calculate the Distance Between Two Cities Using MySQL?

Calculer la distance entre les coordonnées géographiques à l'aide de MySQL

Question :

Vous disposez d'un tableau contenant des données sur la ville avec la latitude et la longitude coordonnées. Vous devez calculer la distance entre deux villes spécifiques à partir de ce tableau. Guidez-nous tout au long du processus.

Réponse :

Pour calculer la distance entre deux points en utilisant leur latitude et leur longitude, nous pouvons utiliser la formule de la loi du cosinus sphérique dans MySQL. Voici une solution détaillée :

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
Copier après la connexion

Dans cette requête, nous effectuons une auto-jointure sur la table des villes pour récupérer les paires de coordonnées des deux villes. Nous appliquons ensuite la formule de la loi du cosinus sphérique pour calculer la distance qui les sépare, qui est donnée en kilomètres.

Remarque :

Si vous préférez avoir la distance en statut miles au lieu de kilomètres, remplacez la constante 111,111 par 69,0.

Alternativement, pour un plus approche moderne :

Comme suggéré par Alexio Vay, vous pouvez utiliser la fonction ST_Distance_Sphere() dans MySQL, qui fournit un moyen concis et efficace de calculer la distance entre deux points :

select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal