示例#1
0
 public int FindPositionToInsetInTrams(Traget t, int startPos, EnregistrementDetail ed)
 {
     if (t.enregistrements.Count > startPos && startPos >= 0)
     {
         for (int i = startPos; i < t.enregistrements.Count; i++)
         {
             if (ed.Etiquette1 == t.enregistrements[i].Etiquette1)
             {
                 return(i);
             }
         }
     }
     return(-1);
 }
示例#2
0
 public int FindPositionToInsetInBuses(Traget t, int startPos, EnregistrementDetail ed)
 {
     if (t.enregistrements.Count > startPos && startPos >= 0)
     {
         double minDistance = DistanceTo(t.enregistrements[startPos].Latitude, t.enregistrements[startPos].Longitude,
                                         ed.Latitude, ed.Latitude, "M");
         int pos = startPos;
         int i   = startPos + 1;
         while (i < t.enregistrements.Count && DistanceTo(t.enregistrements[i].Latitude, t.enregistrements[i].Longitude,
                                                          ed.Latitude, ed.Latitude, "M") < minDistance)
         {
             i++;
         }
         return(i);
     }
     return(-1);
 }
示例#3
0
 public int FindPositionToInsetInBuses(Traget t,int startPos, EnregistrementDetail ed )
 {
     if (t.enregistrements.Count > startPos && startPos>=0)
     {
         double minDistance = DistanceTo(t.enregistrements[startPos].Latitude, t.enregistrements[startPos].Longitude,
             ed.Latitude, ed.Latitude, "M");
         int pos = startPos;
         int i = startPos + 1;
         while (i<t.enregistrements.Count && DistanceTo(t.enregistrements[i].Latitude, t.enregistrements[i].Longitude,
             ed.Latitude, ed.Latitude, "M")<minDistance)
         {
             i++;
         }
         return i;
     }
     return -1;
 }
示例#4
0
        public List<ResultBus> GetEnregistrementsByLine(int numeroLine)
        {
            List<ResultBus> results = new List<ResultBus>();
            Dictionary<int, BusLog> buses = this.lines[numeroLine].Buses;
            foreach (var bus in buses)
            {
                //exception a gére du enregistrement[0]
                Traget aller = new Traget();
                Traget retour = new Traget();
                List<EnregistrementDetail> ed = bus.Value.Enregistrements[0].Details;
                int i = 0;
                while (i<ed.Count)
                {
                    Traget t = new Traget();
                    char sense='0';
                    t.NumeroBus = bus.Key;
                    t.NumeroLine = numeroLine;
                    t.Sense = ed[i].Sense;
                    t.AddEnregistrement(ed[i]);
                    i++;
                    while (i<ed.Count && (ed[i].DateEnregistrement-ed[i-1].DateEnregistrement).TotalMinutes<4 && ed[i].Sense == ed[i-1].Sense )
                    {
                        t.AddEnregistrement(ed[i]);
                        sense = ed[i].Sense;
                        i++;

                    }
                    if (sense == 'A')
                    {
                        aller = aller.Fusion(t);
                    }
                    else if (sense == 'R')
                    {
                        retour = retour.Fusion(t);
                    }
                }

                results.Add(new ResultBus(bus.Key,aller.Summarize(),retour.Summarize()));

            }
            return results;
        }
示例#5
0
        public Traget SummarizeTram()
        {
            Traget result = new Traget();

            result.NumeroBus  = this.NumeroBus;
            result.Sense      = this.Sense;
            result.NumeroLine = this.NumeroLine;
            if (this.enregistrements.Count > 0)
            {
                foreach (var ed in this.enregistrements)
                {
                    EnregistrementDetail enreg = result.enregistrements.Find(delegate(EnregistrementDetail e)
                    {
                        return(e.Etiquette1 == ed.Etiquette1);
                    }
                                                                             );
                    if (enreg == null)
                    {
                        List <EnregistrementDetail> enregisResult = this.enregistrements.FindAll(delegate(EnregistrementDetail e)
                        {
                            return(e.Etiquette1 == ed.Etiquette1);
                        }
                                                                                                 );
                        int totalRssi = 0;
                        int cp        = 0;
                        foreach (var enregistrementDetail in enregisResult)
                        {
                            totalRssi += enregistrementDetail.Rssi;
                            cp++;
                        }
                        int qualite = 0;
                        if (cp != 0)
                        {
                            qualite = (int)(totalRssi / cp);
                        }

                        result.AddEnregistrement(new EnregistrementDetail(ed.DateEnregistrement, ed.Longitude, ed.Latitude, ed.Sense, ed.Etiquette1, ed.Etiquette2, GetQualiteFromRssi(qualite), ed.Ber, ed.La));
                    }
                }
            }
            return(result);
        }
示例#6
0
        public Traget Fusion(Traget target)
        {
            int j = 0, i = 0, countThis = 0, countTarget = 0;
            List <EnregistrementDetail> listThis, listTarget;

            listTarget  = target.enregistrements;
            listThis    = this.enregistrements;
            countTarget = target.enregistrements.Count;
            countThis   = this.enregistrements.Count;
            Traget result = new Traget();

            result.NumeroLine = (this.NumeroLine == 0 ? target.NumeroLine : this.NumeroLine);
            result.NumeroBus  = (this.NumeroBus == 0 ? target.NumeroBus : this.NumeroBus);
            result.Sense      = (this.Sense == (char)0 ? target.Sense : this.Sense);
            foreach (var ed in listThis)
            {
                result.AddEnregistrement(ed);
            }
            int pos = 0;

            foreach (var ed in listTarget)
            {
                if (this.NumeroBus > 1000)
                {
                    result.AddEnregistrement(ed);
                }
                else
                {
                    pos = FindPositionToInsetInTrams(result, pos, ed);
                }
                if (pos == -1)
                {
                    result.AddEnregistrement(ed);
                }
                else
                {
                    result.enregistrements.Insert(pos, ed);
                }
            }
            return(result);
        }
示例#7
0
        public List <ResultBus> GetEnregistrementsByLine(int numeroLine)
        {
            List <ResultBus>         results = new List <ResultBus>();
            Dictionary <int, BusLog> buses   = this.lines[numeroLine].Buses;

            foreach (var bus in buses)
            {
                //exception a gére du enregistrement[0]
                Traget aller  = new Traget();
                Traget retour = new Traget();
                List <EnregistrementDetail> ed = bus.Value.Enregistrements[0].Details;
                int i = 0;
                while (i < ed.Count)
                {
                    Traget t     = new Traget();
                    char   sense = '0';
                    t.NumeroBus  = bus.Key;
                    t.NumeroLine = numeroLine;
                    t.Sense      = ed[i].Sense;
                    t.AddEnregistrement(ed[i]);
                    i++;
                    while (i < ed.Count && (ed[i].DateEnregistrement - ed[i - 1].DateEnregistrement).TotalMinutes < 4 && ed[i].Sense == ed[i - 1].Sense)
                    {
                        t.AddEnregistrement(ed[i]);
                        sense = ed[i].Sense;
                        i++;
                    }
                    if (sense == 'A')
                    {
                        aller = aller.Fusion(t);
                    }
                    else if (sense == 'R')
                    {
                        retour = retour.Fusion(t);
                    }
                }

                results.Add(new ResultBus(bus.Key, aller.Summarize(), retour.Summarize()));
            }
            return(results);
        }
示例#8
0
        public Traget SummarizeBus()
        {
            Traget result = new Traget();

            result.NumeroBus  = this.NumeroBus;
            result.Sense      = this.Sense;
            result.NumeroLine = this.NumeroLine;
            if (this.enregistrements.Count > 0)
            {
                EnregistrementDetail ed = this.enregistrements[0];
                int lastQualite         = GetQualiteFromRssi(ed.Rssi);
                result.AddEnregistrement(new EnregistrementDetail(ed.DateEnregistrement, ed.Longitude, ed.Latitude, ed.Sense, ed.Etiquette1, ed.Etiquette2, lastQualite, ed.Ber, ed.La));
                for (int i = 1; i < this.enregistrements.Count; i++)
                {
                    int currentQualite = GetQualiteFromRssi(this.enregistrements[i].Rssi);
                    if (currentQualite != lastQualite)
                    {
                        result.AddEnregistrement(new EnregistrementDetail(this.enregistrements[i].DateEnregistrement, this.enregistrements[i].Longitude, this.enregistrements[i].Latitude, this.enregistrements[i].Sense, this.enregistrements[i].Etiquette1, this.enregistrements[i].Etiquette2, currentQualite, this.enregistrements[i].Ber, this.enregistrements[i].La));
                        lastQualite = currentQualite;
                    }
                }
            }
            return(result);
        }
示例#9
0
 public ResultBus(int numeroBus, Traget aller, Traget retour)
 {
     NumeroBus = numeroBus;
     Aller     = aller;
     Retour    = retour;
 }
示例#10
0
        public int FindPositionToInsetInTrams(Traget t, int startPos, EnregistrementDetail ed)
        {
            if (t.enregistrements.Count > startPos && startPos >= 0)
            {
                for (int i = startPos; i < t.enregistrements.Count; i++)
                {
                    if (ed.Etiquette1 == t.enregistrements[i].Etiquette1 )
                    {
                        return i;
                    }
                }

            }
            return -1;
        }
示例#11
0
        public Traget SummarizeTram()
        {
            Traget result = new Traget();
            result.NumeroBus = this.NumeroBus;
            result.Sense = this.Sense;
            result.NumeroLine = this.NumeroLine;
            if (this.enregistrements.Count > 0)
            {
                foreach (var ed in this.enregistrements)
                {
                    EnregistrementDetail enreg =   result.enregistrements.Find(delegate(EnregistrementDetail e)
                    {
                        return e.Etiquette1 == ed.Etiquette1;
                    }
                    );
                    if(enreg==null)
                    {
                        List<EnregistrementDetail> enregisResult = this.enregistrements.FindAll(delegate(EnregistrementDetail e)
                        {
                            return e.Etiquette1 == ed.Etiquette1;
                        }
                      );
                        int totalRssi = 0;
                        int cp=0;
                        foreach (var enregistrementDetail in enregisResult)
                        {
                            totalRssi += enregistrementDetail.Rssi;
                            cp++;
                        }
                        int qualite=0;
                        if(cp!=0)
                         qualite= (int)(totalRssi/cp);

                        result.AddEnregistrement(new EnregistrementDetail(ed.DateEnregistrement,ed.Longitude,ed.Latitude,ed.Sense,ed.Etiquette1,ed.Etiquette2,GetQualiteFromRssi(qualite),ed.Ber,ed.La));
                    }
                }
            }
            return result;
        }
示例#12
0
 public Traget SummarizeBus()
 {
     Traget result = new Traget();
     result.NumeroBus = this.NumeroBus;
     result.Sense = this.Sense;
     result.NumeroLine = this.NumeroLine;
     if (this.enregistrements.Count > 0)
     {
         EnregistrementDetail ed = this.enregistrements[0];
         int lastQualite = GetQualiteFromRssi(ed.Rssi);
         result.AddEnregistrement(new EnregistrementDetail(ed.DateEnregistrement, ed.Longitude, ed.Latitude, ed.Sense, ed.Etiquette1, ed.Etiquette2, lastQualite, ed.Ber, ed.La));
         for (int i = 1; i < this.enregistrements.Count; i++)
         {
             int currentQualite = GetQualiteFromRssi(this.enregistrements[i].Rssi);
             if (currentQualite != lastQualite)
             {
                 result.AddEnregistrement(new EnregistrementDetail(this.enregistrements[i].DateEnregistrement, this.enregistrements[i].Longitude, this.enregistrements[i].Latitude, this.enregistrements[i].Sense, this.enregistrements[i].Etiquette1, this.enregistrements[i].Etiquette2, currentQualite, this.enregistrements[i].Ber, this.enregistrements[i].La));
                 lastQualite = currentQualite;
             }
         }
     }
     return result;
 }
示例#13
0
        public Traget Fusion(Traget target)
        {
            int j = 0, i = 0, countThis = 0, countTarget = 0;
            List<EnregistrementDetail> listThis, listTarget;
            listTarget = target.enregistrements;
            listThis = this.enregistrements;
            countTarget = target.enregistrements.Count;
            countThis = this.enregistrements.Count;
            Traget result = new Traget();
            result.NumeroLine = (this.NumeroLine == 0 ? target.NumeroLine : this.NumeroLine);
            result.NumeroBus = (this.NumeroBus == 0 ? target.NumeroBus : this.NumeroBus);
            result.Sense = (this.Sense == (char)0 ? target.Sense : this.Sense);
            foreach (var ed in listThis)
            {
                result.AddEnregistrement(ed);
            }
            int pos = 0;
            foreach (var ed in listTarget)
            {
                if (this.NumeroBus > 1000)
                    result.AddEnregistrement(ed);
                else
                    pos = FindPositionToInsetInTrams(result, pos, ed);
                if (pos == -1)
                {
                    result.AddEnregistrement(ed);

                }
                else
                {
                    result.enregistrements.Insert(pos, ed);
                }
            }
            return result;
        }
示例#14
0
 public ResultBus(int numeroBus, Traget aller, Traget retour)
 {
     NumeroBus = numeroBus;
     Aller = aller;
     Retour = retour;
 }