Calcul des coordonnées GPS dans un rayon de x km

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
matthias60
Messages: 1
Enregistré le: 25 Mai 2007, 16:49

Calcul des coordonnées GPS dans un rayon de x km

par matthias60 » 25 Mai 2007, 16:52

Bonjour à tous,
Je géolocalise des données d'un site selon le code postal du lieu où elles se trouvent.
J'ai en parallèle une base de données avec les villes correspondantes ainsi que leurs coordonnées GPS...

Je voudrais pouvoir effectuer une recherche sur ces données en spécifiant un code postal ainsi qu'un rayon en km.
Je pense que pour simplifier et pour pouvoir le faire d'une requête SQL dans ma base de données, il faudra que je simplifie en fait au carré dont le cercle est inscrit dedans (lattitudes et longitudes comprises entre 2 bornes).
Mon problème c'est pour trouver ces valeurs de bornes!

J'ai bien le calcul suivant qui me donne la distance entre 2 points. Mais moi j'ai un point et un rayon et je ne m'en sors pas... :(

Code: Tout sélectionner
d = R * (pi/2 - asin ( sin x1 * sin x2 + cos ( y1 - y2 ) * cos x1 * cos x2 ))


avec
d distance entre les 2 points
R rayon de la Terre
x1 lattitude en radians du 1er point
x1 lattitude en radians du 2eme point
y1 longitude en radians du 1er point
y1 longitude en radians du 2eme point

Je connais d, R, x1 et y1 et je cherche les x2 et y2 possibles



alben
Membre Irrationnel
Messages: 1144
Enregistré le: 18 Mai 2006, 21:33

par alben » 26 Mai 2007, 00:50

Bonsoir,
Je ne suis par certain de comprendre ce que tu cherches. Ta formule se simplifie un tout petit peu :
cos(d/R) = sin x1 * sin x2 + cos ( y1 - y2 ) * cos x1 * cos x2 )
Si j'ai bien compris, il faut trouver les valeurs extrêmes de x2 et y2

Pour cela, d'abord raisonner sur y3=y1-y2, ce qui élimine une paramètre. Ensuiteil faudrait limiter les possibilités pour les paramètres x1 et d/R.
Ensuite, il est possible de calculer une table pour chaque valeur des paramètres.
Les paramètres fixés, on peut sortir y3 en fonction de x2.
Après quelques essais "à la main", il ne devrait pas être difficile de programmer une machine pour détecteur les plages...
Tu aurais alors une séries de valeurs mini et maxi pour les paires de paramètres.
Il reste à détecter des régularités : je soupçonne que x1 et x2min (ainsi que max) varient ensemble...

cesar
Membre Rationnel
Messages: 841
Enregistré le: 05 Juin 2005, 07:12

par cesar » 26 Mai 2007, 06:43

as tu calculé l'erreur introduite si tu faisais l'approximation avec une surface plane au lieu d'une sphere ??? si elle est acceptable, cela simplifierait beaucoup ton probleme....

alben
Membre Irrationnel
Messages: 1144
Enregistré le: 18 Mai 2006, 21:33

par alben » 26 Mai 2007, 08:06

Bonjour,
A la réflexion, ton problème n'est pas très compliqué.
Les valeurs possibles pour x2 seront celles pour lesquelles on obtientdra un cos(y1-y2) compris entre -1 et 1. Ta relation étant continue, il suffit de déterminer pour quelles valeurs ce cosinus prend les valeurs limites 1 et -1
avec cos(y1-y2)=1 ta formule devient :cos(d/R)=cos(x2-x1) et donc
x2=x1±d/R
avec cos(y1-y2)=-1 ta formule devient :cos(d/R)=-cos(x2+x1) et donc
x2=pi - x1 ± d/R
Cela te donnes donc deux zones. Tu devrais pouvoir en éliminer une (la seconde je pense, si tes distances ne vont pas d'une hémisphère à l'autre).

En ce qui concerne la plage pour y2, il suffit de dériver par rapport à x2 pour trouver le mini atteint par cos(y1-y2).
En restant dans la première zone, on trouve : sin (y1-y2)= sin(d/R) / cos(x1)
et donc y2 =y1± arcsin(a) avec a=sin(d/R) / cos(x1)

En résumé, en supposant que d soit relativement petit (moins de 2000 Km) et que l'on soit pas près des pôles (x1<1) , on définit une zone plutôt ellipique centrée sur (x1,y1) d'axe selon x de 2d/R et 2arcsin(a) selon y

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 53 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite