Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von SQL den nächstgelegenen Breiten- und Längengrad in einer Datenbank ermitteln?

Wie kann ich mithilfe von SQL den nächstgelegenen Breiten- und Längengrad in einer Datenbank ermitteln?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-18 16:12:15956Durchsuche

How Can I Find the Nearest Latitude and Longitude in a Database Using SQL?

Verwenden Sie eine SQL-Abfrage, um den nächstgelegenen Breiten- und Längengrad zu ermitteln

Beim Abrufen von Daten aus einer Datenbank müssen Sie häufig den Breiten- und Längengraddatensatz finden, der einem bestimmten Punkt am nächsten liegt. Dies ist besonders nützlich, wenn Sie beispielsweise Geschäfte, Sehenswürdigkeiten oder andere Sehenswürdigkeiten in der Nähe suchen.

Abfragepunkte

Um diese Aufgabe auszuführen, benötigen Sie eine SQL-Abfrage, die den Abstand zwischen zwei Punkten basierend auf deren Breiten- und Längengrad berechnen kann. Dabei kommt die Formel von Haversine zum Einsatz, die die Erdkrümmung berücksichtigt. Darüber hinaus müssen Sie die maximal zulässige Entfernung zum Abrufen von Datensätzen angeben.

SQL-Abfragestruktur

Die folgende SQL-Abfrage erfüllt diese Anforderungen:

<code class="language-sql">SELECT latitude, longitude, SQRT(
    POW(69.1 * (latitude - [startlat]), 2) +
    POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < [max_distance] ORDER BY distance;</code>
  • [startlat] und [startlng] stellen den Breiten- und Längengrad des Startpunkts dar.
  • [max_distance] Gibt die maximale Entfernung an, in der Datensätze abgerufen werden sollen.

Beschreibung:

Diese Abfrage verwendet die Haversine-Formel, um den Abstand zwischen dem Breiten- und Längengrad jedes Datensatzes und dem angegebenen Startpunkt zu berechnen. Die Spalte „Entfernung“ speichert die resultierende Entfernung. Datensätze, deren Entfernung kleiner als die angegebene maximale Entfernung ist, werden dann ausgewählt und nach ihrer Entfernung vom Startpunkt sortiert.

Mit dieser Abfrage können Sie unter Berücksichtigung von Entfernungsbeschränkungen effizient den Breiten- und Längengraddatensatz ermitteln, der einem bestimmten Punkt am nächsten liegt.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von SQL den nächstgelegenen Breiten- und Längengrad in einer Datenbank ermitteln?. 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