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
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))
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!