trier une table en fonction d'une distance (lat et long)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : trier une table en fonction d'une distance (lat et long)

Re: trier une table en fonction d'une distance (lat et long)

par tom_nameless » 29 déc. 2010, 12:38

Oui sorry une faute de frappe pour le By

Concernant ton erreur, $formule est défini comme un string avec les double quote
Est-ce normale ?
j'ai trouvé mon erreur.. un problème de ' à la place de `

Re: trier une table en fonction d'une distance (lat et long)

par Spols » 29 déc. 2010, 12:34

Oui sorry une faute de frappe pour le By

Concernant ton erreur, $formule est défini comme un string avec les double quote
Est-ce normale ?

Re: trier une table en fonction d'une distance (lat et long)

par tom_nameless » 29 déc. 2010, 12:18

j'ai trouvé une formule pour lister des données situées à x km d'un lieu..
$formule="(6366*acos(cos(radians($latitude))*cos(radians(`lat`))*cos(radians(`lon`) -radians($longitude))+sin(radians($latitude))*sin(radians(`lat`))))";

$sql="SELECT ville,$formule AS dist FROM ville WHERE $formule<='$_GET[distance]' ORDER by dist ASC";

Re: trier une table en fonction d'une distance (lat et long)

par tom_nameless » 29 déc. 2010, 10:53

une distance d calcul entre 2 points A et B qui ont chacun une coordonnée x et y (longitude et lattitude)
d = racine((Ax - Bx)² + (Ay - Ay)²)
C'est normal qu'il y ait 2 fois Ay dans (Ay - Ay)² ? ?
j'imagine que c'est :
d = racine((Ax - Bx)² + (Ay - By)²)

Re: trier une table en fonction d'une distance (lat et long)

par Spols » 29 déc. 2010, 09:49

C'est de la géométrie, tu peux considérer la terre comme une sphère de 6400 km mais le calcul n'est pas évident.

tu peux aussi considérer une surface plane si tu est limité à un pays comme la france par exemple (pour un continent tu pourrais avoir des ratés, mais pas neccéssairement important)
une distance d calcul entre 2 points A et B qui ont chacun une coordonnée x et y (longitude et lattitude)
d = racine((Ax - Bx)² + (Ay - Ay)²)
ensuite un tri croissant est possible
Dans ton code, Ax etc. ne sont pas des variables. Tu dois biensur remplacer par tes longitude / latitude.

Re: trier une table en fonction d'une distance (lat et long)

par stealth35 » 29 déc. 2010, 07:10

les données viennent d'une base SQL ?
je dois comparer une latitude et longitude issue d'un formulaire aux coordonnées (lat et long) enregistrées de ma bdd
donc oui ?

Re: trier une table en fonction d'une distance (lat et long)

par tom_nameless » 28 déc. 2010, 22:24

les données viennent d'une base SQL ?
je dois comparer une latitude et longitude issue d'un formulaire aux coordonnées (lat et long) enregistrées de ma bdd

Re: trier une table en fonction d'une distance (lat et long)

par stealth35 » 28 déc. 2010, 20:01

les données viennent d'une base SQL ?

Re: trier une table en fonction d'une distance (lat et long)

par tom_nameless » 28 déc. 2010, 19:09

merci pour ta réponse et tes explications.
Je n'avais pas pensé à comparer la distance.. c'est une bonne méthode.

Comment on peut faire ce calcule en PHP ?
d = racine((Ax - Bx)² + (Ay - Ay)²)
$valeur1 = (Ax - Bx);
$valeur2 = (Ay - Ay);
$distance = sqrt( pow($valeur1, 2) + pow($valeur2, 2));

Re: trier une table en fonction d'une distance (lat et long)

par Spols » 28 déc. 2010, 17:36

C'est de la géométrie, tu peux considérer la terre comme une sphère de 6400 km mais le calcul n'est pas évident.

tu peux aussi considérer une surface plane si tu est limité à un pays comme la france par exemple (pour un continent tu pourrais avoir des ratés, mais pas neccéssairement important)
une distance d calcul entre 2 points A et B qui ont chacun une coordonnée x et y (longitude et lattitude)
d = racine((Ax - Bx)² + (Ay - Ay)²)
ensuite un tri croissant est possible

trier une table en fonction d'une distance (lat et long)

par tom_nameless » 28 déc. 2010, 16:55

Bonjour

j'ai une table avec des adresses et des données GPS (latitude et longitude)
j'aimerai savoir comment peut on faire pour trier la table en fonction de la distance, du plus près géographiquement au plus loin..

ou sinon faire comme dans l'exemple ci-dessous, en fonction d'un rayon de x km :
http://www.campingandcaravanningclub.co ... ityIds=164