Ich habe in meiner Android-Anwendung eine Datenbanktabelle mit Geo Pointes (lat und lon sind Dezimalgrad-Werte), etwa 1000 Punkte. Und ich muss 20 nächstgelegenen Punkt zu einem gegebenen Geo-Punkt auswählen.Nächste N nächste Geo-Punkte
Ich habe bei Stackoverflow die Antwort gefunden, wie man Abstand zwischen zwei geo Punkten berechnet und war sehr glücklich, bis ich versuchte, meine Frage zu schreiben. Ich habe herausgefunden, dass es nicht möglich ist trignometrische Funktionen in der integrierten SQLite von Android zu verwenden.
Aber dann habe ich eine Idee. Ich muss nicht wirklich eine Entfernung berechnen. In der Nähe eines Punktes liegt der kleinere Unterschied in ihren Geo-Koordinaten.
Wie könnte ich diese Tatsache verwenden? Wäre es ausreichend, die gespeicherten Punkte nach (lat_0 - lat_n)^2 + (lon0-lon_n)^2 zu ordnen, wobei lat_0 und lon_0 Geokoordinaten eines gegebenen Punktes sind?
Danke,
Mur
UPD
der beste Weg, eine Antwort auf meine Frage zu bekommen war also Ansatz zu testen, die ich oben beschrieben.
Es funktioniert ziemlich gut, aber nicht wirklich genau mit der genauen Entfernung verglichen.
Also, wenn Sie nur eine Strecke berechnen müssen, ist diese Lösung in Ordnung, aber in meinem Fall musste ich auch Stationen nach Entfernung bestellen und konnte diese Lösung nicht verwenden.
Mein Dank geht John bei CashCommons und Philip. Danke Jungs
Was ist, wenn sie sich in einem Land wie Deutschland befinden? – Tima
Vorsicht, 1 Meile in Lat! = 1 Meile in Lon, außer am Äquator – Philip
Wahrscheinlich wird das auch funktionieren. Das Problem entsteht durch die Verzerrung der Karte auf ein Flugzeug. Bei einer Mercator-Projektion zum Beispiel verringert sich die Skalierung, wenn Sie sich in der Nähe der Pole befinden. Die Antarktis ist nicht wirklich so groß wie auf einer flachen Karte. ;) – John