private void AddEncodedTimeToDictionary(TimeDomainContainer timeContainer, double encodedTime) { if (!_dictionaryTimeDecoder.ContainsKey(encodedTime)) { _dictionaryTimeDecoder.Add(encodedTime, timeContainer); } }
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); }
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); }
public static double EncodeTimeAsDouble(TimeDomainContainer domainContainer, double timeEncodingFactor) { return((EncodeTimeAsInteger(domainContainer) / timeEncodingFactor)); }