Exemple #1
0
        public static Series ReadCorpsDataFile(string url, TimeInterval interval, params string[] headers)
        {
            string units = headers[headers.Length - 1];
            if( units == "n (ft)") // hack for Banks Lake.
                units = "(ft)";

            Series rval = new Series(units, interval);
            rval.HasFlags = true;

            string fileName = FileUtility.GetTempFileName(".txt");
            Web.GetTextFile(url, fileName, true);

            int[] widths = new int[] { 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9,9,9 };

            var tf = new FixedWidthTextFile(fileName, widths);

            int col, row;
            tf.FindIndexToRange(headers, out row, out col);
            if (row < 0 || col < 0)
            {
                Logger.WriteLine("Error: no index found for headers '" + String.Join("','", headers) + "'");
                return rval;
            }

            rval.Name = String.Join(" ", headers, 0, headers.Length - 1);
            ReadDataIntoSeries(tf, rval, row + headers.Length, col);

            return rval;
        }
Exemple #2
0
        private static void ReadDataIntoSeries(FixedWidthTextFile tf, Series s, int firstRowIndex, int columnIndex, DateTime fileDate)
        {
            for (int r = firstRowIndex; r < tf.RowCount; r++)
            {
                int hr;
                if (tf[r, 0].Trim() == "" || !int.TryParse(tf[r, 0].Trim(), out hr))
                {
                    continue;
                }

                hr = Convert.ToInt32(tf[r, 0].Trim());

                DateTime t = fileDate;

                if (hr == 24)
                {
                    t = t.AddDays(1);// use hour zero
                }
                else
                {
                    t = t.AddHours(hr);
                }


                var    val = tf[r, columnIndex];
                double d;
                if (!double.TryParse(val, out d))
                {
                    Logger.WriteLine("Error: parsing '" + val + "' as a number");
                    continue;
                }

                s.Add(t, d);
            }
        }
Exemple #3
0
        private static void ReadDataIntoSeries(FixedWidthTextFile tf, Series s, int firstRowIndex, int columnIndex,DateTime fileDate)
        {
            for (int r = firstRowIndex; r < tf.RowCount; r++)
            {
                int hr;
                if (tf[r, 0].Trim() == "" || !int.TryParse(tf[r,0].Trim(),out hr))
                    continue;

                hr = Convert.ToInt32(tf[r, 0].Trim());

                DateTime t = fileDate;

                if (hr == 24)
                    t = t.AddDays(1);// use hour zero
                else
                    t = t.AddHours(hr);

                var val = tf[r, columnIndex];
                double d;
                if (!double.TryParse(val, out d))
                {
                    Logger.WriteLine("Error: parsing '" + val + "' as a number");
                    continue;
                }

                s.Add(t, d);
            }
        }
Exemple #4
0
        private static void ReadDataIntoSeries(FixedWidthTextFile tf, Series s, int firstRowIndex, int columnIndex)
        {
            for (int r = firstRowIndex; r < tf.RowCount; r++)
            {
                string   dateStr = tf[r, 0];
                DateTime t;
                if (dateStr.Trim() == "")
                {
                    continue;
                }

                if (!TryParseDateTime(dateStr, out t))
                {
                    Console.WriteLine("found an invalid date '" + dateStr + "'  processing will stop");
                    return;
                }
                int    hr = 0;
                string h  = tf[r, 1].Substring(0, 3);
                if (!int.TryParse(h, out hr))
                {
                    hr = 0;
                }

                if (s.TimeInterval == TimeInterval.Daily)
                {
                    if (hr == 1)
                    {
                        t = t.AddDays(-1);
                    }
                }
                if (s.TimeInterval == TimeInterval.Hourly)
                {
                    if (hr == 24)
                    {
                        t = t.AddDays(1);    // use hour zero
                    }
                    else
                    {
                        t = t.AddHours(hr);
                    }
                }

                var    val = tf[r, columnIndex];
                double d;
                if (!double.TryParse(val, out d))
                {
                    Logger.WriteLine("Error: parsing '" + val + "' as a number");
                    continue;
                }

                if (t.Month == 2)
                {
                    Console.WriteLine();
                }
                s.Add(t, d);
            }
        }
Exemple #5
0
        public static Series ReadCorpsDataFile(string url, params string[] headers)
        {
            string units = headers[headers.Length - 1];

            if (units == "n (ft)") // hack for Banks Lake.
            {
                units = "(ft)";
            }

            Series rval = new Series(units, TimeInterval.Irregular);

            rval.HasFlags = true;

            string fileName = FileUtility.GetTempFileName(".txt");

            Web.GetTextFile(url, fileName, true);


            //                         8,14,19,28,36,43,52,61,69
            int[] widths = new int[] { 8, 6, 5, 9, 8, 7, 9, 9, 8 };

            var tf = new FixedWidthTextFile(fileName, widths);

            int col, row;

            tf.FindIndexToRange(headers, out row, out col);
            if (row < 0 || col < 0)
            {
                Logger.WriteLine("Error: no index found for headers '" + String.Join("','", headers) + "'");
                return(rval);
            }

            DateTime t = ReadDate(fileName);

            rval.Name = String.Join(" ", headers, 0, headers.Length - 1);
            ReadDataIntoSeries(tf, rval, row + headers.Length, col, t);

            return(rval);
        }
Exemple #6
0
        private static void ReadDataIntoSeries(FixedWidthTextFile tf, Series s, int firstRowIndex, int columnIndex)
        {
            for (int r = firstRowIndex; r < tf.RowCount; r++)
            {
                string dateStr = tf[r, 0];
                DateTime t;
                if (dateStr.Trim() == "")
                    continue;

                if (!TryParseDateTime(dateStr, out t))
                {
                    Console.WriteLine("found an invalid date '" + dateStr+"'  processing will stop");
                    return;
                }
                int hr = 0;
                string h = tf[r, 1].Substring(0, 3);
                if (!int.TryParse(h, out hr))
                {
                    hr = 0;
                }

                if (s.TimeInterval == TimeInterval.Daily)
                {
                    if (hr == 1)
                    {
                        t = t.AddDays(-1);
                    }
                }
                if (s.TimeInterval == TimeInterval.Hourly)
                {
                        if (hr == 24)
                            t = t.AddDays(1);// use hour zero
                        else
                            t = t.AddHours(hr);
                }

                var val = tf[r, columnIndex];
                double d;
                if (!double.TryParse(val, out d))
                {
                    Logger.WriteLine("Error: parsing '" + val + "' as a number");
                    continue;
                }

                if (t.Month == 2)
                {
                    Console.WriteLine();
                }
                s.Add(t, d);
            }
        }