# ///////////////////////////////////////////////////////////////////////////
# FONCTIONS DONNEES
# ///////////////////////////////////////////////////////////////////////////

def recupere_donnees_fichier_csv(nom_fichier):
    """ Fonction qui récupère les données relevées du ballon sonde sans les en-têtes de la 1ère ligne """
    altitudes = []                                  # Initialisation des listes de valeurs relevées
    temperatures = []
    longitudes = []
    latitudes = []
    # Ouverture du fichier csv au format releves_ballon_sonde.csv en mode "read"
    contenu_fichier = open(nom_fichier, 'r')
    # Supprime la 1ère ligne avec les en-têtes
    contenu_fichier.readline()
    # Parcours des lignes du fichier csv contenant les donnees relevées
    for ligne in contenu_fichier.readlines():
        # rstrip() supprime les \n et espaces en fin de ligne
        ligne = ligne.rstrip()
        # création d'une listeValeurs. split(";") sépare les valeurs grâce au ;
        listeValeurs = ligne.split(";")
        # conversion string en int de l'altitude et insertion dans la liste correspondante
        altitudes.append(int(listeValeurs[0]))
        # conversion string en float de la température et insertion dans la liste correspondante
        temperatures.append(float(listeValeurs[1]))
        # conversion string en float de la longitude et insertion dans la liste correspondante
        longitudes.append(float(listeValeurs[2]))
        # conversion string en float de la latitude et insertion dans la liste correspondante
        latitudes.append(float(listeValeurs[3]))

    contenu_fichier.close()
    return altitudes, temperatures, longitudes, latitudes


def genere_kml(liste_longitudes, liste_latitudes):
    """ Fonction qui génère un fichier de données géographiques au format standard international KML
        Ce fichier est visionnable ensuite dans différents logiciels
    """
    assert len(liste_latitudes) == len(liste_longitudes)
    fichier_kml = open(
        'ballon sonde.kml', 'w')    # Création et ouverture du fichier kml en mode "write"
    entete_fichier = '<?xml version="1.0" encoding="UTF-8"?>\n'
    entete_fichier += '<kml xmlns="http://www.opengis.net/kml/2.2">\n'
    entete_fichier += '<Document>\n'
    entete_fichier += '<name>Trajectoire ballon sonde</name>\n'
    # Ecriture du contenu de la variable entete_fichier dans le fichier kml
    fichier_kml.write(entete_fichier)
    for i in range(len(liste_longitudes)):
        corps_fichier = '<Placemark>\n'
        corps_fichier += f'<name>Point {i}</name>\n'
        corps_fichier += '<Point>\n'
        corps_fichier += f'<coordinates>{liste_longitudes[i]},{liste_latitudes[i]}</coordinates>\n'
        corps_fichier += '</Point>\n'
        corps_fichier += '</Placemark>\n'
        fichier_kml.write(corps_fichier)
    bas_fichier = '</Document>\n'
    bas_fichier += '</kml>\n'
    fichier_kml.write(bas_fichier)
    fichier_kml.close()                         # Fermeture du fichier kml


# ///////////////////////////////////////////////////////////////////////////
# TRAVAIL DEMANDE
# ///////////////////////////////////////////////////////////////////////////

# QUESTION 1
altitudes, temperatures, longitudes, latitudes = recupere_donnees_fichier_csv("releves_ballon_sonde.csv")


# QUESTION 2
def conversion_K_en_C(liste_temperatures):
    liste_celsius = []
    for t in liste_temperatures:
        liste_celsius.append(round(t - 273.15,1))
    return liste_celsius

#print(temperatures)
#print(conversion_K_en_C(temperatures))

# QUESTION 3


def altitude_la_plus_froide(liste_altitudes, liste_temperatures):
    temp_froide = liste_temperatures[0]
    alti_froides = [liste_altitudes[0]]
    for i in range(1, len(liste_altitudes)):
        if liste_temperatures[i] < temp_froide:
            temp_froide = liste_temperatures[i]
            alti_froides = [liste_altitudes[i]]
        elif liste_temperatures[i] == temp_froide:
            alti_froides.append(liste_altitudes[i])
    return temp_froide, alti_froides

# AUTRES ELEMENTS DE CODE
genere_kml(longitudes, latitudes)
