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!