import pandas as pd 
import numpy as np
import os
import folium


# Fonction qui prends en argument le nom du fichier csv et écarse ce même fichier en ajoutant les colonnes x et y
def trajectoire(nomFichier):

	df = pd.read_csv(nomFichier,sep=';',index_col = 0)
	# Nettoyage des données
	df = df[(df['Take off switch'] != 0) & (df['Ground Speed']!=0)]

	longueurtab=len(df['Route'])
	# Interval de mesure
	delta_temps = 2
	# Calcul colonne vitesse sol
	df['vitesse'] = df['Ground Speed'] / 3.6

	# Calcul colonne angle
	df['angle'] = df['Route'] / 180*np.pi
    # Conversion  de la colonne vitesse en array
	vitesse = df['vitesse'].values.tolist()
	angle =df['angle'].values.tolist()
    # Calcul de x et y en itéatif
	x=[]
	x.append(np.sin(angle[0])*delta_temps*vitesse[0]) 
	y=[]
	y.append(np.cos(angle[0])*delta_temps*vitesse[0])

	i=1
	while i < longueurtab:
		x.append(np.sin(angle[i])*delta_temps*vitesse[i] + x[i-1])
		y.append(np.cos(angle[i])*delta_temps*vitesse[i] + y[i-1])
		i+=1
	# Ajout des colonnes à notre object datafram	
	df['x'] = x
	df['y'] = y


	
    # Re ecriture de notre dataframe dans le fichier csv resultat.csv
	df.to_csv(nomFichier, sep = ';')

# Fonction qui concatène tous les fichiers csv d'un répertoire et écris le résutltat dans un fichier resultat.csv
def concatenation_fichier(chemin_repertoire):

	os.chdir(chemin_repertoire)
	listeFichier = os.listdir()
	liste_Data = []
	for i in listeFichier : 
		liste_Data.append(pd.read_csv(i,sep = ';',index_col=0))
	result = pd.concat(liste_Data)
	result.to_csv('resultat.csv',sep =';')
# lat = 53.769497
#long =  -3.023667 

# Fonction qui transfrome les x et y du fichier resultat.csv en coordonnée GPS
def transformeGPS(lat=53.769497,longi=-3.023667):
    df = pd.read_csv('resultat.csv',sep=';')
    x = df['x'].values.tolist()
    y = df['y'].values.tolist()
    deltaLatitude = []
    deltaLatitude.append(lat)
    deltaLongitude = []
    deltaLongitude.append(longi)
    for i in range(0, len(x)-1):
        deltaX = (float(x[i+1]) - float(x[i]))/1000
        deltaY = (float(y[i+1]) - float(y[i]))/1000
        latitude = deltaLatitude[i]
        rayon_latitude = np.cos(latitude*2*np.pi/360)*6378
        stockLong = deltaLongitude[i] + (deltaX*360)/(2*np.pi*rayon_latitude)
        deltaLongitude.append(stockLong)
        stockLat = deltaLatitude[i] + (deltaY*360)/(40000)
        deltaLatitude.append(stockLat)#2*pi*6356))
    return( deltaLatitude, deltaLongitude)
    

# Fonction qui trace la trajectoire sur une carte et la sauvegarde sous carte.html 
def dessineCarte(latitude, longitude):
	m = folium.Map(location=[53.7,-3], zoom_start=10)
	for i in range(0,len(latitude)):
		folium.CircleMarker(location=[latitude[i], longitude[i]], radius=2, weight=2).add_to(m)
	m.save('carte.html')

		


