Maison >base de données >tutoriel mysql >Comment trouver l'enregistrement géographique le plus proche dans un rayon spécifié en utilisant la latitude et la longitude ?

Comment trouver l'enregistrement géographique le plus proche dans un rayon spécifié en utilisant la latitude et la longitude ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-18 16:07:13921parcourir

How to Find the Nearest Geographic Record Within a Specified Radius Using Latitude and Longitude?

Déterminer la distance dans la base de données de latitude et de longitude

Étant donné les coordonnées de latitude et de longitude, la tâche consiste à récupérer l'enregistrement avec la latitude et la longitude correspondantes les plus proches de la base de données tout en garantissant que la distance reste dans un seuil spécifié. Si la distance dépasse la limite spécifiée, aucun enregistrement ne doit être restitué.

La structure du tableau fournie comprend des colonnes pour la longitude, la latitude et d'autres informations liées à l'emplacement. Pour ce faire nous utilisons la requête SQL suivante :

<code class="language-sql">SELECT latitude, longitude, SQRT(
    POW(69.1 * (latitude - [startlat]), 2) +
    POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < [radius]</code>

Dans cette requête, [startlat] et [startlng] représentent les coordonnées de départ de la distance mesurée. Les calculs de distance sont effectués à l'aide de la formule de Haversine, qui détermine avec précision la distance entre deux points d'une sphère (dans ce cas, la Terre). La fonction POW() met au carré la différence entre les coordonnées de départ et la cible, et la fonction COS() prend en compte la courbure de la Terre. Le résultat final est la distance en miles.

En incluant la clause HAVING avec la condition "distance < [rayon]", nous garantissons que seuls les enregistrements dont la distance est inférieure au rayon [rayon] spécifié sont renvoyés.

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