J'ai dans mon application android une table de base de données avec des géo-pointes (lat et lon sont des valeurs de degré décimal), environ 1000 points. Et je dois sélectionner 20 points le plus proche d'un point géo donné.Prochaine étape N Geo-Points les plus proches
J'ai trouvé à Stackoverflow la réponse comment calculer la distance entre deux points de géo et était très heureux, jusqu'à ce que j'aie essayé d'écrire ma requête. J'ai découvert, qu'il n'est pas possible d'utiliser des fonctions trignométriques dans sqlite intégré d'android.
Mais alors j'ai une idée. Je n'ai pas vraiment besoin de calculer une distance. Le proche d'un point est à un autre la plus petite différence dans leurs coordonnées géographiques devrait être.
Comment pourrais-je utiliser ce fait? Serait-il suffisant de commander les points sauvegardés par (lat_0 - lat_n)^2 + (lon0-lon_n)^2, où lat_0 et lon_0 sont des coordonnées géographiques d'un point donné?
Merci,
Mur
UPD
Ainsi, la meilleure façon d'obtenir une réponse à ma question était de tester l'approche que je décris ci-dessus.
Cela fonctionne plutôt bien mais pas vraiment exactement par rapport à la distance exacte.
Donc, si vous avez juste besoin de calculer une distance, cette solution est correcte, mais dans mon cas, j'ai aussi besoin de commander des stations à distance et je n'ai pas pu utiliser cette solution.
Mes remerciements vont à John chez CashCommons et Philip. Merci les gars
et s'ils se trouvent dans un pays comme l'Allemagne? – Tima
Attention, 1 mile dans lat! = 1 mile dans lon, sauf à l'équateur – Philip
Probablement que cela va fonctionner, aussi. Le problème provient de la distorsion de la carte sur un avion. Pour une projection Mercator, par exemple, l'échelle diminue si vous êtes proche des pôles. L'Antarctique n'est pas vraiment aussi grande que sur une carte plate. ;) – John