2010-04-18 22 views
2

J'ai une base de données avec des points d'intérêt qui ont tous une adresse.Comment obtenir des POI à proximité

Je veux savoir quelle est la méthode /nom/appel pour obtenir toutes à proximité POI d'une position donnée.

Je comprends que je dois convertir mes adresses LAT/LON coordonnées au moins, mais ma question est:

pour une LAT/LONG donné comment puis-je obtenir de la base de données/tableau ce que les POI sont à proximité par la distance, par exemple:

Vous êtes ici 0,0 POI les plus proches dans un rayon de 2 km sont:

  • POI a (à 1,1 km)
  • POI C (à 1,3 km)
  • POI F (à 1,9 km)

Je ne sais pas ce que je devrais examiner pour obtenir ce que je veux :-(

Toute aide est grandement appréciée . Merci

Répondre

2

Je veux savoir quelle est la méthode/nom/appeler pour obtenir tous les POI à proximité d'une position donnée.

Le calcul du great-circle distance entre deux coordonnées de latitude/longitude est facile avec le haversine formula. Vous pouvez lire plus loin et vérifier la mise en œuvre au Calculate distance, bearing and more between Latitude/Longitude points par Chris Veness.

Pour un LAT/LONG donné, comment puis-je obtenir de la base de données/tableau quels POI sont proches par distance?

Si vous n'avez qu'une poignée de POI, vous pouvez simplement calculer la distance du grand cercle entre votre point et chaque point d'intérêt. Ensuite, il suffit de trier la liste des résultats par la distance. Toutefois, si vous prévoyez de nombreux points d'intérêt, vous devez envisager d'utiliser une base de données avec les fonctionnalités spatial indexing. MySQL, PostgreSQL et SQL Server 2008 ont tous des caractéristiques géo-spatiales (natives ou via des extensions), qui comprennent l'indexation spatiale et les implémentations de la formule de la haversine.