Coordonées GPS + Ordre par proximité

Résolu
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 8 mai 2006 à 20:13
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 8 mai 2006 à 23:13
Bonjour,


Etant donner que je ne sais pas où posser ma question, et qu'elle a un rapport avec les requettes SQL (MySQL) je la posse ici, en esperons qu'ont puissent m'aider.

Je developpe dans mon coin un site de rencontre, les membres entre leurs code postal et selectionne le pays, une tache cron va recuperer les coordonées GPS (Lattitude/logitude) sur le site tageo.com.
J'obtient par exemple (pour Paris):

Latitude : 48.86
Longitude : 2.33

Ces deux valeurs sont stoquer dans deux champs `lat` et `lon` .

Je souhaiterais affiner les resultats par proximité des membres, je stoque dans une session bien a part la latitude & longitude de la residence du membre.




Je voudrais savoir si quelqu'un pourais m'aider/conseiller pour realiser une requette SQL (envers une base MySQL) qui afficherais (order) par proximité du membre (par exemple, d'abord les membres qui habite a coté de paris et puis ont s'eloigne (en cercle)).

Cela est-il possible avec MySQL ? quel genre de formule mathematique SQL pourais-t-on utiliser ? (pour trier par proximité coté MySQL), existe-il sinon des parades beaucoup plus simple ?

Mes connaisances en SQL sont assez limité, c'est pourqoui je souhaiterais avoir vos conseilles pour realiser une requette qui opere cela.
Merci d'avance.


Merci d'avance.

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
8 mai 2006 à 21:33
Salut,

C'est pas compliqué,
c'est un simple calcul de maths.

Alors tu sais calculé une distance entre deux points A B en connaissance
l'absicce et l'ordonnées.

Distance = Sqr((xb - xa) ^ 2 + (yb - ya) ^ 2 )

il reste plus qu'a faire le calcul.

Un genre de

select id_menbre, id_ville, lat as xb, lon as yb, Sqr((xb - xa) ^ 2 + (yb - ya) ^ 2 ) as distance
from membre
where Sqr((xb - xa) ^ 2 + (yb - ya) ^ 2 ) < 5km (trouver une valeur pour avoir par exemple 5 km
order by distance.

La requete n'a pas été testé car je n'est pas mysql ;-)

il faut trouver la formule de la distance entre la lattidude --> des kms
http://www.movable-type.co.uk/scripts/LatLong.html

Je pense que tu as tous les elements pour reussir.

Voila
3
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
8 mai 2006 à 23:13
Merci beaucoup !

Je ne savais pas que de tel requette été feseable sous MySQL, sa doit faire quelques jours que je tourne autour du pot a cause de cette reflexion.
Pour info j'été partie dans l'idée de tout recalculer pour chaque membre a l'inscription, donc d'avoir une db enorme (en utilisant la formule des distances de deux points).
0