Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#11 Message par PieM » mer. 28 nov. 2018 19:44 lien vers la Data-Sheet : Cliquez ici

Bonsoir à tous,

Je crois que dans cette affaire, il faut raison garder concernant la précision ! inutile d'avoir 30 décimales pour les coordonnées. le 1/1000 de degrés donne 1851mm . Je pense donc que tous les calculs peuvent se faire avec des entiers sans problème.
Cela est à considérer avec la précision intrinsèque des données GPS, qui si elles sont données avec une précision de 2.5m pour ce GPS, il certain qu'en pratique, cette précision est rarement atteinte. Les raisons sont multiples comme le soulignait Paul. Car outre le nombre de satellites, leur position dans le ciel est très importante. Une indication importante est la DOP (dilution of position) donné par la trame GSA je crois, qui renseigne sur le degré de précision à attendre. Plus le nombre est petit, plus grande est la précision.

Concernant le cercle de longitude , il est // à l'équateur, à la latitude du lieu. donc plus on se rapproche des pôles plus ce cercle est petit ...
Toujours pas compris l'intérêt de passer par des DMS pour faire des calculs ! Sauf à disposer d'une bibliothèque ad hoc qui traite ces valeurs, ce dont je doute!
Si en physique on travaille surtout en radians, ce n'est pas un hasard.

récupération d'une Trames GPS
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2586
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#12 Message par paulfjujo » mer. 28 nov. 2018 20:08 lien vers la Data-Sheet : Cliquez ici

ça le fait avec des Doubles flottants ..

Calcul_D_2points_GPS.jpg


:!!: Temps-X va etre content !
du RapidQ


Code : Tout sélectionner


$Include 
"Rapidq.inc"

$Include "Minimize.inc"

Dim i as integer
Dim j 
as integer
Dim k 
as integer
Dim l 
as integer
Dim m 
as integer

Dim Lat_A_Degre 
as double
Dim Lat_B_Degre 
as double
Dim Long_A_Degre 
as double
dim Long_B_Degre 
as double

Dim Lat_a 
as double
Dim Lat_b 
as double
Dim Long_a 
as double
dim Long_b 
as double
dim R 
as double
dim d 
as double
dim PI 
as double
dim df1 
as double

 
Create MainForm 
as QForm
      Caption 
"Calcul distance points GPS"
      
Top     127
      Left    
642
      Width   
477
      Height  
348
End Create
Create Label1 
as QLabel
      Parent  
MainForm
      Top     
120
      Left    
72
      Width   
160
      Height  
45
      Caption 
"Label1"
      
Color   = &HF0F0F0
      Font
.Name "MS Sans Serif"
      
Font.Color = -2147483640
      Font
.Size 12
      Font
.AddStyles fsBold
End Create
Create Label2 
as QLabel
      Parent  
MainForm
      Top     
200
      Left    
72
      Width   
184
      Height  
61
      Caption 
"Label2"
      
Color   = &HF0F0F0
      Font
.Name "MS Sans Serif"
      
Font.Color = -2147483640
      Font
.Size 12
      Font
.AddStyles fsBold
End Create





Function  Distance()  as double

    R 
6378000.000    ' Rayon de la terre en M
    Lat_a = (PI * Lat_A_degre)/180.0
    Lon_a = (PI * Long_A_degre)/180.0
    Lat_b = (PI * Lat_b_degre)/180.0
    Lon_b = (PI * Long_B_degre)/180.0
    Distance= R * (PI/2 - asin( sin(lat_b) * sin(lat_a) + cos(lon_b - lon_a) * cos(lat_b) * cos(lat_a)))
End Function


   PI=3.141592653589793238
   Lat_A_Degre=45.852165
   Long_A_Degre= 5.063613
   Lat_B_Degre=  45.757818
   Long_B_Degre= 4.832374
   df1=Distance()

   Label1.Caption="dist  20.92kms  Dagneux-Lyon => " + str$(df1) + "m"
   
   '
-Tour Eiffel
   Lat_A_Degre
48.85837288276533
   Long_A_Degre
2.2944796085357666
   
'un point dans la rue adjacente
   Lat_B_Degre=48.86030413121802
   Long_B_Degre=2.295973041789125
   
   df1=Distance()

   Label2.Caption="dist  241M  Tour eiffel et rue à coté => " + str$(df1) +" m"
   
   


   SetMinimize(MainForm)
   MainForm.ShowModal
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#13 Message par Jérémy » mer. 28 nov. 2018 22:12 lien vers la Data-Sheet : Cliquez ici

Re ,

Je trouve 271 mètres ! est ce une erreur de calcul ou l’approximation ?

Je suis resté en degré pour éviter les conversions inutiles et gagner en temps de calcul.
Calcul de X ( Latitude) :
LatA - LatB = 0,00193124845269
1° = 111111 mètres donc
0,00193124845269° = 214,58294682683859 mètres

Calcul du coef
Coef = cos((lat A - lat B)/2)
Coef = 0,99999999985798276732360805289735

Calcul de Y (Longitude) :
Y = (longA - longB) * coef * 111111
Y = 165,93686219040595502936796895009

Et pour finir notre Pythagore
D² = X² + y²

D² = 73580,883302487615104661638845443
D = Racine carré ( 73580,883302487615104661638845443 )

D = 271,25796449595284667603789269645 mètres


en sachant que je n'ai rien arrondi !
pas sur que le calcul du coef soit utilise sur ce coup vu sa valeur !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#14 Message par PieM » jeu. 29 nov. 2018 09:26 lien vers la Data-Sheet : Cliquez ici

Bonjour,

si Coef = 0,999999999, c'est que Paris est passé à l'équateur !! dérive des continents sans doute...
de toute façon tu ne trouveras pas 241m le calcul n'étant pas le même. Pour s'approcher du calcul prendre 111.317 au lieu de 111.111

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#15 Message par Jérémy » jeu. 29 nov. 2018 10:05 lien vers la Data-Sheet : Cliquez ici

Bonjour ,

PieM a écrit :Source du message si Coef = 0,999999999, c'est que Paris est passé à l'équateur !!

Ben je pense avoir respecté la règle de ton calcul pour le coef .
coef = cos((lat A - lat B)/2)
coef = cos( (48.86030413121802 - 48.85837288276533) / 2 )
coef = 0,99999999985798276732360805289735

Je comprends bien que c'est très proche de 1 donc on se trouve sur l'équateur donc aucune incidence sur le calcul final. Ce n'est pas la bonne formule
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#16 Message par PieM » jeu. 29 nov. 2018 11:33 lien vers la Data-Sheet : Cliquez ici

Désolé ! c'est cos((lat A + lat B)/2) = coef
On calcule la moyenne des latitudes.

Remarque : en se contentant de calculer le cosinus avec 3 décimales, et en effectuant les calculs avec les longueurs en cm le résultat est de 241.20 m ! :sifflotte:

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#17 Message par Jérémy » jeu. 29 nov. 2018 12:19 lien vers la Data-Sheet : Cliquez ici

Ah ben zut je trouve 226,32679756999866288916018229893 mètre !!

Allez je recommence tout .

Merci PieM il faut que j'arrive a trouver comme toi !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#18 Message par Jérémy » jeu. 29 nov. 2018 16:15 lien vers la Data-Sheet : Cliquez ici

-----Tour Eiffel
Dégré Decimaux
Lat : 48,858372
Lon : 2,2944796

------Rue de la tour eiffel
Lat : 48,860304
Lon : 2,295973

1° = 11131700 centimètres

LatA - LatB =
48,860304 - 48,858372 = 0,001932
(0,001932 * 11131700) = 21506 centimètres


coef = cos(LatA + Latb) / 2)
coef = cos ( 97,718676 / 2 ) = cos (48,859338)
coef = 0,658


puis :
LonA - LonB =
2,295973 - 2,2944796 = 0,0014934
0,0014934 * 0,658 * 11131700 = 10938 centimètres


X² + Y² = Distance²
(21506²)+(10938²) = 582147880
Racine carré de = 24127 centimètres



ALLEEELLUIIHHAAAA
C'est en faisant des erreurs, que l'on apprend le mieux !!!

récupération d'une Trames GPS
PieM
Membre
Membre
Messages : 21
Enregistré en : juin 2016

#19 Message par PieM » jeu. 29 nov. 2018 18:15 lien vers la Data-Sheet : Cliquez ici

Tu vois quand tu veux !!... :bravo:

récupération d'une Trames GPS
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#20 Message par Jérémy » jeu. 29 nov. 2018 20:00 lien vers la Data-Sheet : Cliquez ici

Merci PieM ,

Mais tu m'as bien mâché le travail quand même ! Franchement j'ai encore appris plein de truc.
Après avoir mis au point la formule de calcul d'une distance entre deux points, il me faut maintenant faire exécuter ça par mon PIC pour vérifier mon programme et ensuite sur la façon de traiter l'information.

Car le GPS sera sur le robot. et que le PIC de ce robot a pas mal de truc a faire.
Du coup je ne sais pas trop comment m'y prendre .

Soit je fais les calculs avec les PIC du robot , ainsi j'envoie par voir radio (à ma télécommande) peu de données car elles sont déjà transformées
Ou alors j'envoie les valeurs brutes par voie radio , mais ça fait beaucoup de données et je les traites avec mon PIC écran sur la télécommande qui lui se tourne un peu les pouces !

Si vous avez des idées suggestions par expérience je suis preneur ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

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