/// <summary>ConstruireListePrediction est une methode statique de la classe DataWilaya . /// <para>Construire la liste a deux dimention qui contien les donées de prédiction</para> /// </summary> public DataWilayaPrediction ConstruireListePrediction(int Duree) { int j = 0; DayData DonneeLu1, DonneeLu2 = new DayData(); DataWilayaPrediction DonnesMeteoListe2 = new DataWilayaPrediction(); for (int i = 0; i <= listeDesJours.Count - 1; i++) { DonneeLu1 = listeDesJours[i]; while (listeDesJours[j].DateDuJour.Date.CompareTo(listeDesJours[i].DateDuJour.Date.AddDays(Duree)) < 0) { j++; } if (listeDesJours[j].DateDuJour.Date.Equals(listeDesJours[i].DateDuJour.Date.AddDays(Duree))) { DonneeLu2 = listeDesJours[j]; j++; DonnesMeteoListe2.Ajouter(listeDesJours[i], DonneeLu2); } if (j == listeDesJours.Count) { break; } } return(DonnesMeteoListe2); }
public void ModifierUneDate(DayData donnée) { bool exist = RechercheParDate(donnée.DateDuJour, out int ind); if (exist) { listeDesJours[ind] = donnée; } else if (listeDesJours != null) { if (listeDesJours.Count > 0) { if (listeDesJours.Count == ind) { listeDesJours.Add(donnée); } else { listeDesJours.Insert(ind, donnée); } } else { listeDesJours.Add(donnée); } } }
public List <Tuple <float, DayData> > CalculerPreduction(DayData jour) { List <Tuple <float, DayData> > laPreduction = new List <Tuple <float, DayData> >(); float preJour = 0; int i; byte j = 0; DateTime date = new DateTime(2010, jour.DateDuJour.Month, jour.DateDuJour.Day); DateTime dateFin = new DateTime(2010, jour.DateDuJour.Month, jour.DateDuJour.Day); //Console.WriteLine("Date initial : " + date + " " + j); date = date.AddDays(-15); dateFin = dateFin.AddDays(15); //Console.WriteLine("Date initial : " + date + " " + j); while (dateFin.Year != jour.DateDuJour.Year) { do { i = donnesMeteoListePrediction.FindIndex(a => a.Item1.DateDuJour == date); date = date.AddDays(1); //Console.WriteLine("Date initial : "+date+" "+j); j++; } while (i < 0 && date != dateFin.AddDays(1)); if (i >= 0) { while (i < donnesMeteoListePrediction.Count && donnesMeteoListePrediction[i].Item1.DateDuJour <= dateFin) { //Console.WriteLine(donnesMeteoListePrediction[i].Item1.DateDuJour + " " + Simularite(jour, donnesMeteoListePrediction[i].Item1)); preJour = 100 - 25 * (float)Simularite(jour, donnesMeteoListePrediction[i].Item1); if (preJour < 0) { preJour = 0; } laPreduction.Add(new Tuple <float, DayData>(preJour, (DayData)(donnesMeteoListePrediction[i].Item2.Clone()))); /*if(simularite < seuil ) * Affichagedes donnees ^^ */ i++; } } date = date.AddYears(1).AddDays(-j); dateFin = dateFin.AddYears(1); j = 0; } laPreduction.Sort((x, y) => y.Item1.CompareTo(x.Item1)); foreach (Tuple <float, DayData> w in laPreduction) { Console.WriteLine(w.Item1 + " " + w.Item2); } return(laPreduction); }
private void HamburgerMenuControl_OnItemClick(object sender, ItemClickEventArgs e) { HamburgerMenuIconItem ItemCliced = (HamburgerMenuIconItem)e.ClickedItem; if (ItemCliced.Label == "Prévision") { Prevision LaPageDePrévision = (Prevision)ItemCliced.Tag; if (((favoris)Favo.Tag).UserData.IsEmpty()) { MessageBox.Show("La liste des favoris est Vide"); } else { Tuple <int, int> LaWilayaEtLaDuree = ((favoris)Favo.Tag).UserData.getFirstElement(); if (LaPageDePrévision.NumWilaya != LaWilayaEtLaDuree.Item1) { DayData daymlm = IOData.LireDonnesJour("../../DonnesDunJour", LaWilayaEtLaDuree.Item1); DateTime today = DateTime.Now.Add(IOData.LireDate()); LaPageDePrévision.NumWilaya = LaWilayaEtLaDuree.Item1; LaPageDePrévision.Duree = LaWilayaEtLaDuree.Item2; if (daymlm != null && !daymlm.Vide() && (daymlm.DateDuJour.Date == today.Date)) { LaPageDePrévision.GridRec.Visibility = Visibility.Hidden; LaPageDePrévision.flipView1.Visibility = Visibility.Visible; LaPageDePrévision.BtmModifier.Visibility = Visibility.Visible; LaPageDePrévision.Sauv.Visibility = Visibility.Visible; LaPageDePrévision.Appliquer.Visibility = Visibility.Visible; LaPageDePrévision.BtnAnnuler.Visibility = Visibility.Visible; LaPageDePrévision.DounneesToday = daymlm; LaPageDePrévision.ConstruireLesPagesDePreduction(); } else { LaPageDePrévision.GridRec.Visibility = Visibility.Visible; LaPageDePrévision.flipView1.Visibility = Visibility.Hidden; LaPageDePrévision.BtnAnnuler.Visibility = Visibility.Hidden; LaPageDePrévision.Sauv.Visibility = Visibility.Hidden; LaPageDePrévision.Appliquer.Visibility = Visibility.Hidden; LaPageDePrévision.BtmModifier.Visibility = Visibility.Hidden; } } else if (LaPageDePrévision.Duree != LaWilayaEtLaDuree.Item2 && LaPageDePrévision.DounneesToday != null && !LaPageDePrévision.DounneesToday.Vide()) { LaPageDePrévision.Duree = LaWilayaEtLaDuree.Item2; LaPageDePrévision.ConstruireLesPagesDePreduction(); LaPageDePrévision.Sauv.Visibility = Visibility.Visible; } } } HamburgerMenuControl.Content = e.ClickedItem; }
private void Mainm() { DayData jour = new DayData(); jour.DateDuJour = new DateTime(2019, 2, 5); jour.TempuratureMax = 14; jour.TempuratureMin = 9; jour.Humidite = 65; jour.Pression = 769.5f; jour.Precipitation = 0; jour.Nebulosite = 10; jour.VitesseDuVent = 2; jour.DirectionDuVent[0] = (Direction.SUD); jour.DirectionDuVent[0] = (Direction.SUD_EST); jour.DistanceDeVisibilite = 10; DataWilayaPrediction DonnesMeteo = IOData.LireDonnesWilayaPrediction(@"C:\Users\moham\Desktop\Projet2cp\PRE", 16, 5); DonnesMeteo.CalculerPreduction(jour); /* * //Convertir les fichier exel qui se trouve dans le dossier DT3 . en fichier binaire dans DATABINAIRE (le fichier excel dois etre nommée ex: 1.csv) * Conversion.Convertir(@"C:\Users\moham\Desktop\Projet2cp\DT3", @"C:\Users\moham\Desktop\Projet2cp\DATABINAIRE"); * Console.WriteLine("Fin de convertir \n\n\nPress Any key"); * Console.Read(); * //Affichier lecontenue du fichier binaire ...\48.bin * Conversion.AffichierBinaire(@"C:\Users\moham\Desktop\Projet2cp\DATABINAIRE",48); * Console.WriteLine("Fin de l'affichage du fichier binaire ...\\48.bin\nPress Any key"); * Console.ReadLine(); * //Creation de 48 fichier de preduction apartir des fichier binaire qui se trouve dans le dossier (...\DATABINAIRE) * for (int i = 1; i <= 48; i++) * { * //Creation * Conversion.FichierPrediction(@"C:\Users\moham\Desktop\Projet2cp\DATABINAIRE", @"C:\Users\moham\Desktop\Projet2cp\PRE", i, 5); * //Récupirer le contenu du des fichiers de preduction dans (DonnesMeteo) * DataWilayaPrediction DonnesMeteo = IOData.LireDonnesWilayaPrediction(@"C:\Users\moham\Desktop\Projet2cp\PRE", i, 5); * DonnesMeteo.Afficher(); * }*/ //Console.ReadLine(); }
public static void EcrireDonnesJour(DayData donnesMeteo, string dossier, int Wilaya) { if (!Directory.Exists(dossier)) { Directory.CreateDirectory(dossier); } try { BinaryFormatter binaryFormatter = new BinaryFormatter(); using (Stream stream = File.Open(dossier + "\\Donneesaujourdhui" + Wilaya + ".bin", FileMode.Create)) { binaryFormatter.Serialize(stream, donnesMeteo); } } catch (Exception em) { MessageBox.Show(em.Message); } }
/// <summary>LireDonnesWilaya est une methode statique de la classe IOData . /// <para>Lire un objet de type DataWilaya de la wilaya numero "numDeWilaya"</para> /// </summary> public static DayData LireDonnesJour(string dossier, int Wilaya) { if (!Directory.Exists(dossier)) { Directory.CreateDirectory(dossier); } DayData donnesMeteo = new DayData(); try { using (Stream stream = File.Open(dossier + "\\Donneesaujourdhui" + Wilaya + ".bin", FileMode.Open)) { var binaryFormatter = new BinaryFormatter(); donnesMeteo = (DayData)binaryFormatter.Deserialize(stream); } } catch { donnesMeteo = new DayData(); } return(donnesMeteo); }
public float Simularite(DayData jour1, DayData jour2) { float resultat = 0f; if (!jour2.VideTempuratureMax() && !jour1.VideTempuratureMax()) { resultat = resultat + 8 * ((float)Math.Abs(jour1.TempuratureMax - jour2.TempuratureMax)) / 40.0f; } else { resultat += 4f; } if (!jour2.VideTempuratureMin() && !jour1.VideTempuratureMin()) { resultat = resultat + 8 * ((float)Math.Abs(jour1.TempuratureMin - jour2.TempuratureMin)) / 40.0f; } else { resultat += 4f; } if (!jour2.VidePression() && !jour1.VidePression()) { resultat = resultat + 3 * Math.Abs(jour1.Pression - jour2.Pression) / 40.0f; } else { resultat += 1.5f; } if (!jour2.VidePrecipitation() && !jour1.VidePrecipitation()) { resultat = resultat + (0.5f) * ((float)Math.Abs(jour1.Precipitation - jour2.Precipitation)) / 100; } else { resultat += 0.25f; } if (!jour2.VideNebulosite() && !jour1.VideNebulosite()) { resultat = resultat + (0.25f) * ((float)Math.Abs(jour1.Nebulosite - jour2.Nebulosite)) / 100; } else { resultat += 0.25f; } if (!jour2.VideHumidite() && !jour1.VideHumidite()) { resultat = resultat + 3 * ((float)Math.Abs(jour1.Humidite - jour2.Humidite)) / 100; } else { resultat += 1.5f; } if (!jour2.VideDistanceDeVisibilite() && !jour1.VideDistanceDeVisibilite()) { resultat = resultat + ((float)Math.Abs(jour1.DistanceDeVisibilite - jour2.DistanceDeVisibilite)) / 65; } else { resultat += 0.5f; } //Direction du vent float resTmp = 0f; if (jour1.DirectionDuVent[0] == 0) { if (jour2.DirectionDuVent[0] == 0) { resTmp = 0f; } else { resTmp = 2f; } } else { if (jour2.DirectionDuVent[0] == 0) { resTmp = 2f; } else { resTmp = (Math.Abs(jour2.DirectionDuVent[0] - jour1.DirectionDuVent[0])); if (resTmp > 4) { resTmp = 8 - resTmp; } } } resultat += resTmp / 4.0f; return(resultat); }
/// <summary>Ajouter est une methode statique de la classe DataWilayaPrediction . /// <para>Ajouter les donée du couple (unJour1,unJour2) dans la liste des données</para> /// </summary> public void Ajouter(DayData jour1, DayData jour2) { donnesMeteoListePrediction.Add(new Tuple <DayData, DayData>((DayData)jour1.Clone(), (DayData)jour2.Clone()));; }
/// <summary>AjouterUnJour est une methode statique de la classe DataWilaya . /// <para>Ajouter les donée du jour "unJour" dans la liste des données</para> /// </summary> public void AjouterUnJour(DayData unJour) { listeDesJours.Add(unJour); }
/// <summary>Convertir est une methode de la classe Conversion . /// <para>Convertir un fichier excel de la wilaya nommée (NumDeWilaya.csv) qui est dans le dossier "DossierSource" en binaire dans le dossier "DossierDesstination"</para> /// </summary> public static void Convertir(string dossierSource, string dossierDesstination, int numDeWilaya) { System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); string ligne; DayData enreg = new DayData(); DataWilaya donnesMeteo = new DataWilaya(); try { StreamReader fichier = new StreamReader(dossierSource + "\\" + numDeWilaya + ".csv"); while ((ligne = fichier.ReadLine()) != null) { string[] substrings = ligne.Split(';'); string[] DateCompHeur = substrings[0].Split(' '); string[] DateComp = DateCompHeur[0].Split('.'); DateTime UneDate = new DateTime(int.Parse(DateComp[2]), int.Parse(DateComp[1]), int.Parse(DateComp[0])); enreg.DateDuJour = UneDate; if (substrings[1].Length != 0) { enreg.TempuratureMin = (sbyte)float.Parse(substrings[1]); } if (substrings[2].Length != 0) { enreg.Pression = float.Parse(substrings[2]); } if (substrings[3].Length != 0) { enreg.Humidite = byte.Parse(substrings[3]); } if (substrings[4].Length != 0) { string[] DirectVn = substrings[4].Split('.'); enreg.DirectionDuVent[0] = (Direction)int.Parse(DirectVn[0]); enreg.DirectionDuVent[1] = (Direction)int.Parse(DirectVn[1]); } if (substrings[5].Length != 0) { enreg.VitesseDuVent = byte.Parse(substrings[5]); } if (substrings[6].Length != 0) { enreg.Nebulosite = (byte)float.Parse(substrings[6]); } if (substrings[7].Length != 0) { enreg.DistanceDeVisibilite = float.Parse(substrings[7]); } if (substrings[8].Length != 0) { enreg.Precipitation = float.Parse(substrings[8]); } if (substrings[9].Length != 0) { enreg.Neige = (byte.Parse(substrings[9]) == 1) ? true : false; } if (substrings[10].Length != 0) { enreg.TempuratureMax = (sbyte)float.Parse(substrings[10]); } enreg.Existe = true; //L'ajout de l'instance dans la liste donnesMeteo.AjouterUnJour(enreg); //DateActuel = DateActuel.AddDays(1); enreg = new DayData(); } fichier.Close(); //La serialisation de la liste dans le fichier IOData.EcrireDonnesWilaya(donnesMeteo, dossierDesstination, numDeWilaya); } catch (Exception e) { Console.WriteLine("Erreur !!!!!!"); MessageBox.Show(e.Message); } }