Maison >base de données >tutoriel mysql >Comment calculer la distance entre deux points en utilisant la latitude et la longitude ?

Comment calculer la distance entre deux points en utilisant la latitude et la longitude ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 01:56:02366parcourir

How to Calculate Distance Between Two Points Using Latitude and Longitude?

Calcul de la distance à partir de deux points : latitude et longitude

Déterminer la distance entre les points en utilisant leur latitude et leur longitude est une tâche SIG courante. Pour trouver des points dans un rayon spécifié, nous pouvons utiliser des formules mathématiques et des requêtes SQL.

Formule de calcul de distance

Une approche consiste à utiliser la formule Haversine, qui calcule la distance entre deux points sur une sphère :

<code class="python">def get_distance(lat1, lon1, lat2, lon2, unit='Mi'):
    theta = lon1 - lon2
    distance = (math.sin(math.radians(lat1)) * math.sin(math.radians(lat2))) + \
              (math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * \
              math.cos(math.radians(theta)))
    distance = math.acos(distance)
    distance = math.degrees(distance)
    distance = distance * 60 * 1.1515
    if unit == 'Km':
        distance = distance * 1.609344
    return round(distance, 2)</code>

Requête SQL pour la recherche de rayon

Une autre option consiste à utiliser une requête MySQL avec la formule de distance :

<code class="sql">SELECT *,
(((acos(sin((".$latitude."*pi()/180)) * sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* pi()/180))))*180/pi())*60*1.1515) as distance
FROM `MyTable` HAVING distance >= ".$distance.";</code>

En appliquant ces méthodes, vous pouvez calculer efficacement la distance entre les points et trouver ceux dans un rayon souhaité à partir d'un emplacement donné.

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!

Déclaration:
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