Maison > base de données > tutoriel mysql > Comment calculer la distance entre deux coordonnées géographiques dans MySQL ?

Comment calculer la distance entre deux coordonnées géographiques dans MySQL ?

Susan Sarandon
Libérer: 2024-12-15 16:45:18
original
223 Les gens l'ont consulté

How to Calculate the Distance Between Two Geographic Coordinates in 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;
Copier après la connexion

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

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!

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