Heim >Datenbank >MySQL-Tutorial >Wie finde ich Punkte innerhalb eines Radius mithilfe von Breiten- und Längengrad?
Bestimmen der Nähe innerhalb eines Radius bei gegebenen Breiten- und Längengraden
Stellen Sie sich ein Szenario vor, in dem Benutzer in einem Formular ihren Längen- und Breitengrad eingeben können. Gleichzeitig enthält eine Datenbank eine Tabelle mit einer umfassenden Liste geografischer Koordinaten. Die vorliegende Aufgabe besteht darin, alle Punkte innerhalb eines 15-Meilen-Radius um die Koordinaten des Benutzers zu identifizieren.
Lösung:
Um dies zu erreichen, nutzen wir das Konzept der Entfernungsberechnung zwischen zwei Punkten mithilfe einer bestimmten Formel:
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 - $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; case 'Km' : $distance = $distance * 1.609344; } return (round($distance,2)); }
Alternativ kann eine Datenbankabfrage verwendet werden:
$query = "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.";
Das obige ist der detaillierte Inhalt vonWie finde ich Punkte innerhalb eines Radius mithilfe von Breiten- und Längengrad?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!