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; }
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); } }
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); } }
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); } }
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); }
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); } }