2011-11-10 3 views
0

J'ai une série de coordonnées GPS en format pointillé décimal, multiplié par 1.000.000. Par exemple, une latitude de 51.1 et une longitude de 4.1 seraient enregistrées sous la forme Y 51100000 et X 4100000. Ces coordonnées sont enregistrées dans une base de données SQlite 3. En utilisant Ruby 1.9.2 et Rails 3.0.8, je dois pouvoir obtenir tous les enregistrements qui sont dans un certain rayon d'un certain point central. Par exemple, étant donné le centre de latitude 51 et la longitude 4, je dois trouver tous les enregistrements dans un rayon de 10.Comment trouver les coordonnées GPS dans un cercle de délimitation

Cet article explique assez bien comment effectuer une requête pour obtenir ces documents, mais SQLite ne semble pas soutenir les fonctions mathématiques qui sont utilisés: http://www.movable-type.co.uk/scripts/latlong-db.html

est-il une autre façon que je serais en mesure de récupérer les les enregistrements appropriés de la base de données qui n'impliquent pas l'itération à travers le tableau entier?

Merci!

Répondre

1

Sauf si vous devez utiliser SQLite, essayez avec Sphinx:

Je convertir les coordonnées GPS de latitude/coordonnées lng, puis utilisez Sphinx (il est petit bijou pensée-rails pour sphynx: http://freelancing-god.github.com/ts/en/). Avec Sphinx, vous pouvez rechercher des points dans un cercle donné avec la fonction de Sphinx: @geodist

Un brillant exemple de la façon de le faire, vous verrez ici: http://joeyschoblaska.com/blog_posts/220-thinking-sphinx-searching-by-location-and-keyword

+0

Merci, qui ont obtenu fonctionner! Je suis en effet coincé en utilisant SQLite pour le moment. Bien que cela puisse changer à un moment donné dans le futur, je dois le faire fonctionner maintenant. – Laurens

Questions connexes