Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Abstand zwischen zwei Punkten anhand von Breiten- und Längengrad?

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

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 01:56:02313Durchsuche

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>

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>

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!

Stellungnahme:
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