Maison >base de données >tutoriel mysql >Comment puis-je trouver la latitude et la longitude les plus proches dans une base de données à l'aide de SQL ?

Comment puis-je trouver la latitude et la longitude les plus proches dans une base de données à l'aide de SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-18 16:12:15955parcourir

How Can I Find the Nearest Latitude and Longitude in a Database Using SQL?

Utilisez une requête SQL pour localiser la latitude et la longitude les plus proches

Lors de la récupération de données à partir d'une base de données, vous devez souvent trouver l'enregistrement de latitude et de longitude le plus proche d'un point donné. Ceci est particulièrement utile dans des scénarios tels que la recherche d’entreprises, d’attractions ou d’autres points d’intérêt à proximité.

Points de requête

Pour effectuer cette tâche, vous avez besoin d'une requête SQL capable de calculer la distance entre deux points en fonction de leur latitude et de leur longitude. Il s'agit d'utiliser la formule de Haversine qui prend en compte la courbure de la Terre. De plus, vous devez spécifier la distance maximale autorisée pour récupérer les enregistrements.

Structure des requêtes SQL

La requête SQL suivante répond à ces exigences :

<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 < [max_distance] ORDER BY distance;</code>
  • [startlat] et [startlng] représentent la latitude et la longitude du point de départ.
  • [max_distance] Spécifie la distance maximale à laquelle les enregistrements doivent être récupérés.

Description :

Cette requête utilise la formule Haversine pour calculer la distance entre la latitude et la longitude de chaque enregistrement et le point de départ donné. La colonne "distance" stocke la distance résultante. Les enregistrements dont la distance est inférieure à la distance maximale spécifiée sont ensuite sélectionnés et triés en fonction de leur distance par rapport au point de départ.

En utilisant cette requête, vous pouvez trouver efficacement l'enregistrement de latitude et de longitude le plus proche d'un point donné, en tenant compte des contraintes de distance.

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