Maison >base de données >tutoriel mysql >Comment calculer la distance entre deux coordonnées géographiques dans MySQL ?
Détermination de la distance entre les coordonnées géographiques dans MySQL à l'aide de la latitude et de la longitude
Votre requête utilise la formule de la loi du cosinus sphérique pour calculer la distance entre un point et tous les autres. Pour trouver la distance entre deux points spécifiques, modifiez votre requête comme suit :
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 récupère les paires de coordonnées de deux villes (3 et 7) et applique la formule, donnant la distance en kilomètres.
Pour les points à proximité, évitez d'utiliser des filtres basés sur la distance car ils peuvent être lents. Utilisez plutôt une technique de calcul de boîte englobante, comme décrite ici : http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/.
Solution moderne (2022)
Pour suivre les dernières technologies, pensez à utiliser le code abrégé suivant :
SELECT ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267))
Ceci La requête utilise la fonction ST_Distance_Sphere() pour calculer la distance entre deux points.
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!