Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie berechnet man den Abstand zwischen zwei Punkten anhand von Breiten- und Längengrad?

Barbara Streisand
Freigeben: 2024-10-29 01:56:02
Original
218 Leute haben es durchsucht

How to Calculate Distance Between Two Points Using Latitude and Longitude?

Berechnung der Entfernung anhand zweier Punkte: Breiten- und Längengrad

Die Bestimmung der Entfernung zwischen Punkten anhand ihrer Breiten- und Längengrade ist eine häufige GIS-Aufgabe. Um Punkte innerhalb eines bestimmten Radius zu finden, können wir mathematische Formeln und SQL-Abfragen nutzen.

Formel zur Entfernungsberechnung

Ein Ansatz besteht darin, die Haversine-Formel zu verwenden, die berechnet der Abstand zwischen zwei Punkten auf einer Kugel:

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

SQL-Abfrage für Radiussuche

Eine andere Möglichkeit besteht darin, eine MySQL-Abfrage mit der Abstandsformel zu verwenden:

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

Durch die Anwendung dieser Methoden können Sie den Abstand zwischen Punkten effizient berechnen und diese innerhalb eines gewünschten Radius von einem bestimmten Standort aus finden.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Abstand zwischen zwei Punkten anhand 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!