Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von SQL den nächstgelegenen Breiten- und Längengrad in einer Datenbank ermitteln?
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!