Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#1

Nahste Koordinate über SQL suchen

  Alt 29. Jul 2020, 19:23
Datenbank: MySQL • Version: 5.7 • Zugriff über: Zeos
Hi,

ich habe eine Tabelle mit Koordinaten (Latitude und Longitude in separaten Feldern). Jetzt möchte per SQL den Datensatz abfragen, der an nahsten zu einer angegebenen Koordinate liegt.
Noch schöner wäre es natürlich z.B. die 5 nahsten zu finden, aber ich wäre auch erst mal mit 1 zufrieden.
Wie könnte man sowas unter SQL realieren?

Mein erste Ansatz ist folgendermaßen:
Code:
SELECT 53-lat as DiffLat, 10-lon as DiffLon, ABS((53 - lat) * (10 - lon)), lat, lon, id, FROM CPoints order by ABS((53 - lat) * (10 - lon));
In dem Beispiel wird als gesuchte Koordinate 53 Lat und 10 Lon angenommen.

Ich multipliziere die Differenz der Latitude zu meiner gesuchten Latitude mit der Longitude der gesuchten Longitude, und nehme davon die Erste.
Das sieht zwar auf den ersten Blick recht gut aus, bringt mir aber nicht, da dann alle die sehr genau an der Latitude oder Longitude liegen möglicher oben in der Ergebnisliste, aber trotzdem weiter von der gesuchten Koordinate entfernt als welche die weiter unten in der Liste stehen. So würde wenn die Latitude genau mit der gesuchten Latitude übereinstimmt mit 0 multipliziert, und würde somit ganz oben in der Liste herauskommen, obwohl der Punkt vielleicht mit seiner Longitude hunderte Kilometer weit weg wäre.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (29. Jul 2020 um 19:26 Uhr)
  Mit Zitat antworten Zitat