Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-10-29 01:56:02
original
218 Les gens l'ont consulté

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

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

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!