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!