2012-06-03 4 views
0

J'ai un point donné (longitude, latitude) et je veux obtenir toutes les gammes de points qui viennent disons 5 miles de rayon au point donné?comment calculer tous les points (longitude, latitude) dans un rayon donné à partir du point donné (longitude, latitude)?

+0

Je pense que vous devriez être plus précis ... Ceci est une question Java non? –

+2

[Qu'avez-vous essayé?] (Http://www.whathaveyoutried.com/) Je veux dire * en plus de * demander à des étrangers au hasard sur Internet de le faire pour vous. –

+1

Ceci n'a rien à voir avec Java, c'est une question de base de géométrie sphérique, qui est hors sujet pour SO. Et en passant, "tous les points" vont consommer plus de mémoire que ce qui est actuellement disponible dans l'univers entier. –

Répondre

5

Je ne fais que deviner ici, mais je pense que vous devrez trouver une approche différente. Si vous essayez de faire quelque chose comme Foursquare, Google Maps, etc où il trouve des endroits dans un rayon de 5 mile de votre emplacement actuel, je pense que vous trouverez que ces services ne pas calculer tous les points dans ce rayon et ensuite les faire correspondre à des endroits à ces points.

Il y aurait probablement une certaine intelligence derrière le code qui fait quelque chose comme ça ...

  1. Obtenez les utilisateurs emplacement actuel
  2. Trouver la banlieue (ou à défaut, trouver la ville) que le courant L'emplacement existe dans. Trouvez également toutes les banlieues environnantes adjacentes à celui-ci.
  3. Trouver tous les endroits dans les banlieues, et de calculer la distance ils sont loin de l'emplacement de l'utilisateur actuel

Ce type de processus est une méthode potentielle qui pourrait être employé par ces services. Cela concerne un petit sous-ensemble de comparaisons de lieux, qui est relativement rapide à effectuer. En outre, les endroits sur une carte ont habituellement une banlieue/ville associée de toute façon, donc les recherches de base de données pour les lieux seraient plutôt rapides, car il y aurait un indice qui implique la banlieue. Si vous avez pour but de faire quelque chose comme ça, j'essaierais de trouver une façon différente de comparer les points plutôt que de simplement essayer de tout calculer dans votre rayon. Et bien sûr, il y aurait aussi beaucoup d'algorithmes spécifiques pour mieux le calculer, mais ce n'est pas mon domaine d'expertise, et ce serait mieux adapté à un autre forum. Je n'essaie pas de dire que c'est la meilleure façon de le faire, mais il y a beaucoup d'autres façons de le faire qui s'appuient sur des données de localisation connues qui seraient plus rapides et plus intelligentes que votre exigence suggérée.

Questions connexes