Trame NMEA
Un récepteur GPS crée une chaîne de caractères, appelée trame, à partir des informations issues des satellites. Celle-ci a une structure imposée par une norme appelée NMEA-0183.
Comment convertir la trame fournie par le GPS en informations de géolocalisation ?
La structure d'une trame NMEA produite par un GPS
La norme NMEA détermine dans quel ordre sont placées les informations issues des satellites et sous quelle forme elles sont enregistrées.
Pour lire les informations comprises dans la trame, il est nécessaire de connaître ces règles d'écriture. Les données, comme l'heure, la latitude ou la longitude, sont placées dans des champs séparés par des virgules comme dans l'exemple suivant :
$GPGGA,073028.314,2514.3215,N,00819.1214,E,1,04,2.1,238.5,M,,,,0000*43
L'enregistrement d'une trame NMEA
Le GPS produit des trames NMEA[1] en permanence et les enregistre ou les envoie par réseaux. Il est possible de les récupérer grâce à des applications sur smartphone.
Ci-dessous :Trames NMEA envoyées par un GPS et enregistrées grâce à une application
Exemple :

Donner la latitude, la longitude et l'heure sur la première trame NMEA de l'image ci-dessus.
Couper un texte en Python
Couper un texte en Python
L'instruction split en Python permet de couper une chaîne de caractères en précisant le séparateur. Pour récupérer ensuite les morceaux, il suffit de préciser la position (comptée à partir de 0) de la donnée recherchée entre crochets.
Je comprends un programme
Trame="$GPGGA,12241.000,2135.3214,N,00740.9373,E,1,04,3.2,200.2,M,,,,0000*32"
Champs=Trame.split(",")
print(Champs[0])
print(Champs[l])
print(Champs[2])
Coup de pouce Python
La ligne 1 enregistre la trame en chaîne de caractères dans la variable Trame.
La ligne 2 découpe la trame à chaque virgule. La liste des champs obtenus est alors enregistrée dans la variable Champs.
La ligne 3 permet l'affichage du premier champ, ici : $GPGGA
La ligne 4 permet l'affichage du deuxième champ, ici : 12241.000
La ligne 5 permet l'affichage du troisième champ, ici : 2135.3214
Exemple :

Comment programmer l'étape « Vérifier qu'il s'agit d'une trame de GPS » ?
À quelle étape de l'algorithme ci-dessus fait-on intervenir un programme qui utilise l'instruction split ?
Comment récupérer la latitude, la longitude et l'altitude d'une trame NMEA à l'aide d'un programme en Python ?
CONCLUSION.

Quelles sont les informations présentes dans une trame NMEA ? Comment peut-on les extraire ?