private void AddEncodedTimeToDictionary(TimeDomainContainer timeContainer, double encodedTime)
 {
     if (!_dictionaryTimeDecoder.ContainsKey(encodedTime))
     {
         _dictionaryTimeDecoder.Add(encodedTime, timeContainer);
     }
 }
Exemplo n.º 2
0
        public static int EncodeTimeAsInteger(TimeDomainContainer domainContainer)
        {
            int result = 0;

            switch (domainContainer.CurrentTimeDomain)
            {
            case TimeDomain.Year:
                result = domainContainer.Year;
                break;

            case TimeDomain.YearMonth:
                result = domainContainer.Month;
                break;

            case TimeDomain.YearMonthDay:
                result = domainContainer.ToDate().DayOfYear;
                break;

            case TimeDomain.YearQuarter:
                result = domainContainer.Quarter;
                break;
            }

            return(result);
        }
Exemplo n.º 3
0
        public static TimeDomainContainer DecodeTime(TimeDomain timeDomain, double encodedTime, double timeEncodingFactor)
        {
            TimeDomainContainer container = null;

            switch (timeDomain)
            {
            case TimeDomain.Year:
                container = new TimeDomainContainer(Convert.ToInt32(encodedTime * timeEncodingFactor));
                break;

            case TimeDomain.YearMonth:
                container = new TimeDomainContainer(Convert.ToInt32(encodedTime * timeEncodingFactor));
                break;

            case TimeDomain.YearMonthDay:
                int decodedTime = Convert.ToInt32((encodedTime * timeEncodingFactor));

                break;

            case TimeDomain.YearQuarter:
                container = new TimeDomainContainer(Convert.ToInt32(encodedTime * timeEncodingFactor));
                break;
            }

            return(container);
        }
        //private int getTimeOutputs()
        //{
        //    if (this.DataSetTimeDomain == Common.TimeDomain.Year)
        //    {
        //        return 1;
        //    }
        //    else if (this.DataSetTimeDomain == Common.TimeDomain.YearMonth)
        //    {
        //        return 12;
        //    }
        //    else if (this.DataSetTimeDomain == Common.TimeDomain.YearQuarter)
        //    {
        //        return 4;
        //    }
        //    else if (this.DataSetTimeDomain == Common.TimeDomain.YearMonthDay)
        //    {
        //        return 365;
        //    }
        //    else
        //    {
        //        return -1;
        //    }
        //}

        private bool LoadDataFromFile(string filePath)
        {
            bool loaded = false;

            _gisDataSet            = new GISDataSet();
            _dictionaryTimeDecoder = new Dictionary <double, TimeDomainContainer>();

            try
            {
                if (File.Exists(filePath))
                {
                    using (FileStream fs = new FileStream(filePath, FileMode.Open))
                    {
                        using (StreamReader sr = new StreamReader(fs))
                        {
                            sr.ReadLine(); //just the header.  There's no need to do anything with it

                            while (!sr.EndOfStream)
                            {
                                string currentLine = sr.ReadLine();

                                string[] arrayValues = currentLine.Split('\t');


                                GISDataPoint gsPoint = null;

                                //TODO: need a way to get the layout to assign the values to the point better;
                                double encodedTime = 0;

                                _dataYear = int.Parse(arrayValues[1]);

                                switch (DataSetTimeDomain)
                                {
                                case Common.TimeDomain.Year:
                                    domainContainer = new TimeDomainContainer(int.Parse(arrayValues[1]));
                                    encodedTime     = Common.EncodeTimeAsDouble(domainContainer, TimeEncodingFactor);

                                    AddEncodedTimeToDictionary(domainContainer, encodedTime);

                                    gsPoint = new GISDataPoint(Int64.Parse(arrayValues[0]),
                                                               encodedTime,
                                                               Double.Parse(arrayValues[2]), Double.Parse(arrayValues[3]), Double.Parse(arrayValues[4]), domainContainer);
                                    break;

                                case Common.TimeDomain.YearMonth:
                                    domainContainer = new TimeDomainContainer(int.Parse(arrayValues[1]), int.Parse(arrayValues[2]), true);
                                    encodedTime     = Common.EncodeTimeAsDouble(domainContainer, TimeEncodingFactor);

                                    AddEncodedTimeToDictionary(domainContainer, encodedTime);

                                    gsPoint = new GISDataPoint(Int64.Parse(arrayValues[0]),
                                                               encodedTime,
                                                               Double.Parse(arrayValues[3]), Double.Parse(arrayValues[4]), Double.Parse(arrayValues[5]), domainContainer);

                                    break;

                                case Common.TimeDomain.YearMonthDay:
                                    domainContainer = new TimeDomainContainer(int.Parse(arrayValues[1]), int.Parse(arrayValues[2]), int.Parse(arrayValues[3]));
                                    encodedTime     = Common.EncodeTimeAsDouble(domainContainer, TimeEncodingFactor);

                                    AddEncodedTimeToDictionary(domainContainer, encodedTime);

                                    gsPoint = new GISDataPoint(Int64.Parse(arrayValues[0]),
                                                               encodedTime,
                                                               Double.Parse(arrayValues[4]), Double.Parse(arrayValues[5]), Double.Parse(arrayValues[6]), domainContainer);
                                    break;

                                case Common.TimeDomain.YearQuarter:
                                    domainContainer = new TimeDomainContainer(int.Parse(arrayValues[1]), int.Parse(arrayValues[2]), true);
                                    encodedTime     = Common.EncodeTimeAsDouble(domainContainer, TimeEncodingFactor);

                                    AddEncodedTimeToDictionary(domainContainer, encodedTime);

                                    gsPoint = new GISDataPoint(Int64.Parse(arrayValues[0]),
                                                               encodedTime,
                                                               Double.Parse(arrayValues[3]), Double.Parse(arrayValues[4]), Double.Parse(arrayValues[5]), domainContainer);

                                    break;
                                }

                                _listGISDataPoints.Add(gsPoint);
                            }
                        }
                    }
                }
                else
                {
                    //should throw?
                    //probably just log and return false;
                }

                if (_gisDataSet.Count > 0)
                {
                    loaded = true;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(loaded);
        }
Exemplo n.º 5
0
 public static double EncodeTimeAsDouble(TimeDomainContainer domainContainer, double timeEncodingFactor)
 {
     return((EncodeTimeAsInteger(domainContainer) / timeEncodingFactor));
 }