Heim > Datenbank > MySQL-Tutorial > Wie finde ich Punkte innerhalb eines Radius mithilfe von Breiten- und Längengrad?

Wie finde ich Punkte innerhalb eines Radius mithilfe von Breiten- und Längengrad?

Susan Sarandon
Freigeben: 2024-10-28 03:21:02
Original
228 Leute haben es durchsucht

How to Find Points Within a Radius Using Latitude and Longitude?

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));
}
Nach dem Login kopieren

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.";
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage