コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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();
        }
コード例 #6
0
 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);
     }
 }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 /// <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()));;
 }
コード例 #10
0
 /// <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);
 }
コード例 #11
0
        /// <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);
            }
        }