﻿from math import floor
# floor(x) renvoie le plus grand entier naturel inférieur ou égal à x
# pour un nomnbre x positif, cela correspond à la partie entière devant la virugule.

#fonction donnée :
def latitude(trame):
    """fonction qui renvoie la latitude du lieu en degré décimal
    (sans prise en compte du signe)
    à partir de la trame NMEA 0183 entrée comme paramètre"""

    #découpage de la trame suivant les virgules
    liste_information=trame.split(",")  # liste des éléments composants la trame


    #Extraction de la latitude à partir du troisème élément de la liste ;
    # il se nomme liste_information[2] car la numérotation commence à 0.

    minute = floor(float(liste_information[2])) % 100
    degre = int(floor(float(liste_information[2]) - minute) / 100)
    seconde = (float(liste_information[2])-floor(float(liste_information[2])))*60

    decimales_degre = (float(liste_information[2]) - degre*100)/60
    resultat = degre+decimales_degre
    return resultat

# l'entrée trame sera une trame MNEA 0183, par exemple :
# trame = "$GPGGA,194701.45,2612.3990,S,2802.6016,E,1,06,2.35,1,M,,,,0000*0E"
# contenu de la trame entre guillemets en tant que chaînes de caractères.
