Nmea analyser tracage du parcours en 2d et 3d + exportation excel et google earth

Soyez le premier à donner votre avis sur cette source.

Vue 21 140 fois - Téléchargée 3 438 fois

Description

Analyseur de fichier de log GPS au format NMEA 0183, et en plus il dessine le parcours en 2D et en 3D(rotation + zoom)

Cette idée m'ai venu avant de partir en vacances au ski : donc au ski j'ai mis mon PDA equipé GPS dans le sac a dos et j'enregistrais mon parcours dans un fichier de log
Je crois que cette source va donner des idées pour ceux qui partent en avril :p

Cette la partie 3D est ni faite avec DirectX ni avec OpenGL mais par bebelious (http://www.codes-sources.com/code.aspx?ID=36149) à laquelle j'ai ajouter la fonction rotation et zoom (Clique gauche et droit) et qu'il a repris dans sont code; cette petite aparté faite revenons sur mon code...

Alors il lis une premiere fois le fichier, il dechiffre les trames GPS NMEA (GPGGA,GPGSV,GPRMC,...) puis refait un autre fichier
avec un format dérivé du NMEA (crée par moi :p), notamment en groupant toutes les infos sur les satellites (ID,azimut, elevation,puissance) dans une seul trame, car dans la normes NMEA 0183 il y a 3 trames qui se suivent et qui contiennent chacunes 4 satellites et donc ces 12 satellites se retrouvent sur une seule trame, plus simple pour interpréter lorsqu'on veux dessiner l'évolution des satellites. Et aussi car lors de la 1ere lecture je calcul les longitudes et latitudes min/max pour pouvoir dessiner le parcours au meilleur zoom.

grace à cette equation : 1.853 * 60 * ArcCos(Cos(latA) * Cos(latB) * Cos(lonB - lonA) + Sin(latA) * Sin(latB))
on peut calculer la distance entre 2 points, et dont je suis fièr car j'ai eu du mal à la mettre en oeuvre et elle tient compte de la courbure de la terre (j'en ai trouvé plusieurs sur le net mais aucunes ne fonctionnaient et celle là fonctionne)

possibilité d'exporter vers un fichier Excel : il y a creation d'une "feuille tableau" avec heure/lat/lon/alt/vitesse de chaque Point puis à la fin de chaque colones le calcul du min/max/moyenne; puis 2 "feuilles graphe" avec l'evolution de l'altitude et de la vitesse

possibilité d'exporter vers un fichier Google Earth (.kml (Keyhole Markup Language))

Conclusion :


Info 0 : ya un fichier exemple de log dans le zip, c'est un des mes parcours au ski, celui qui trouve qu'elle station c'est il gagne ...
bah rien :p

Info 1 : les heures provenant du NMEA sont des heures GMT donc pour Paris il faut rajouter 1 heure

Info 2 : les fichiers Google Earth sont en "2 parties", 1 partie "Trace" et 1 partie "Points" je vous conseille de decocher
les points dans l'arboréssance à gauche dans GE sinon, si vous devez rotationer la carte ca risque de ramer un peu (suivant le nombre de points ajoutés)...

J'ai essayé de commenter au max, si pb sur des fonctions postez un message

Pour la partie Excel testé avec Excel 2003 (aucun pb) et avec Excel 2000 (qq pb de temps en temps mais pas à chaque fois, dites moi)

Pour le calcul de la vitesse, je calcul d'abord le distance entre 2 points puis je multiplie par 3600 pour donner en km/h
sur la capture il ya vitesse max : 276 km/h, je m'explique si je ne verifie par les trames avec le checksum il m'est arrivé pendant mes test d'avoir une vitesse de 16 Milllions de km/h mais après ajout de la fonction checksum le vitesse redevenai raisonable, maintenant les trames interprété ne comportent pas d'erreurs après pour le reste aucun moyen de controler si c'est cohérant !!!

laissez vos commentaires et vos notes

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
85
Date d'inscription
dimanche 5 mars 2006
Statut
Membre
Dernière intervention
4 août 2014

Je n arrive pas a telecharger le fichier exe ?:(
Messages postés
27
Date d'inscription
dimanche 3 juin 2007
Statut
Membre
Dernière intervention
25 février 2008

bonjours,

pour rdechap

long1_lonA = 430,24602
' long1_LatA = 4355,40266
' RM2.Fields("Longitude") = 430,22218
' RM2.Fields("Latitude") = 4355,28036
4355,28 signifie 43 degres et 55 minutes tu n'est pas dans le bon format
convertis tes valeurs en 43,.......
essaye MyDegree( 4355.28036)
ou
MyDegree("4355,28036")

attention la condition

If latB - latA 0 Then Dst_PP 0: Exit Function
est fausse puisque la longitude peut varier

tu peut essayer un truc de ce genre


If Latb Lata Then Dst_PP abs(lona - lonb) * 1.853:exit sub


If Lona Lonb Then Dst_PP abs(latb - lata )* 1.853:exit sub

bon autremment j'arrive pas a le faire marcher:-(
dommage mais le code est interresant
Messages postés
25
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
4 juillet 2008

Bonjour,

j'essai d'utiliser votre fonction pour calculer la distance entre deux points GPS.... au lieu de trouver une distance d'aproximativement 620m cela me retourne 17m....
les coordonées sont en commentaire dans le code.

Merci d'avance pour votre aide,

'definition des variables
Global long1_lonA, long1_LatA

Private Sub P_Map_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'pour info
' long1_lonA = 430,24602
' long1_LatA = 4355,40266
' RM2.Fields("Longitude") = 430,22218
' RM2.Fields("Latitude") = 4355,28036


''''' Calcul de la distance
msgbox Dst_PP(Val(long1_lonA), Val(long1_LatA), Val(RM2.Fields("Longitude")), Val(RM2.Fields("Latitude")))

End Sub

Function Dst_PP(ByVal lonA, ByVal latA, ByVal lonB, ByVal latB)
Const PI = 3.14159265358979
Const rad = 0.0174532925

lonA = lonA * rad
lonB = lonB * rad

latA = latA * rad
latB = latB * rad
If latB - latA 0 Then Dst_PP 0: Exit Function
Dst_PP = (1 / rad) * 1.853 * 60 * ArcCos(Cos(latA) * Cos(latB) * Cos(lonB - lonA) + Sin(latA) * Sin(latB)) 'On multiplie par 1.853 pour convertir en Km car ce sont des miles
Dst_PP = FormatNumber(Dst_PP, 4)
End Function

Function ArcSin(X)
ArcSin = Atn(X / Sqr(-X * X + 1))
End Function

Function ArcCos(X)
ArcCos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End Function
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Si tu veux améliorer ta source j'ai posté un petit exemple rien que pour toi :

http://www.vbfrance.com/code.aspx?ID=40043

Montrant comment charger des données KML dans GoogleEarth. Pour une idée d'Amélioration qui serait ouvrir GE et voir le fichier KML automatiquement après génération.

Pour les 276 kmh le record du monde étant environ de 250 km/h ca va être difficile de faire passer ca pour une perf perso :)
Messages postés
102
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
29 avril 2007

Après 8 mois j'ai enfin la reponse, mais hélas pour pouvoir gagner le cado il fallait repondre moins de 10min après le post :p, bref

tu dois etre quelqu'un de là bas pour m'avoir sorti les caractéristiques de chaques remontesé (tu dois etre pisteur, ou quelque chose dans le genre...) ou alors tu y es parti pendant les vacances de printemps après avoir vu mon post...

bon effectivement la fonction de calcul de distance ne prend pas en compte l'altitude, mais du faite que dans les telecabines on est entouré de fer, le gps ne recoit pas forcement une position exacte (erronée) c'est peut etre ce qui explique les ecart d'1 ou 2 km/h.

par contre ce qui m'embette le plus c'est les valeurs comme 276km/h, j'ai pas d'idée pour les traiter convenablement...

si quelqu'un à une idée ??? jsuis preneur

voila une bonne occasion de modifier ma source

merci pour ce commentaire
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.