Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Abstand zwischen zwei Punkten anhand von Breiten- und Längengrad?
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!