public override void Load(string filename) { if (this.State == RunningState.Busy) { return; } if (File.Exists(filename)) { var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var sr = new StreamReader(fs, Encoding.Default); string line = sr.ReadLine(); int nvar = TypeConverterEx.Split <string>(line, TypeConverterEx.Comma).Length - 1; _DataSource = new ListTimeSeries <double>(nvar); while (!sr.EndOfStream) { line = sr.ReadLine(); if (!TypeConverterEx.IsNull(line)) { var strs = TypeConverterEx.Split <string>(line); var buf = TypeConverterEx.SkipSplit <double>(line, 1); _DataSource.Add(DateTime.Parse(strs[0]), buf); } } fs.Close(); sr.Close(); } }
public override void Load(string filename) { if (this.State == RunningState.Busy) { return; } _cache_file = filename + ".csv"; if (File.Exists(_cache_file) && File.Exists(filename)) { InitMonitor(filename); _DataSource = new ListTimeSeries <double>(_MFMonitor.Root[0].Children.Count); var fs = new FileStream(_cache_file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var sr = new StreamReader(fs, Encoding.Default); string line = sr.ReadLine(); int t = 0; while (!sr.EndOfStream) { line = sr.ReadLine(); if (!string.IsNullOrEmpty(line)) { var buf = TypeConverterEx.SkipSplit <double>(line, 1); var date = ModelService.Start.AddDays(t); _DataSource.Add(date, buf); t++; } } fs.Close(); sr.Close(); } else { if (File.Exists(filename)) { InitMonitor(filename); int total_var = _MFMonitor.Root[0].Children.Count; _DataSource = new ListTimeSeries <double>(total_var); var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); var sr = new StreamReader(fs, Encoding.Default); string line = ""; int t = 0; int nvar = (total_var - 4) / 2; while (!sr.EndOfStream) { line = sr.ReadLine(); if (!string.IsNullOrEmpty(line)) { if (line.Contains("VOLUMETRIC BUDGET FOR ENTIRE MODEL AT END OF TIME STEP")) { break; } } } while (!sr.EndOfStream) { line = sr.ReadLine(); if (!string.IsNullOrEmpty(line)) { if (line.Contains("VOLUMETRIC BUDGET FOR ENTIRE MODEL AT END OF TIME STEP")) { var vector = new double[total_var]; double total_in = 0, total_out = 0, ds = 0, error = 0; for (int i = 0; i < 7; i++) { sr.ReadLine(); } for (int i = 0; i < nvar; i++) { line = sr.ReadLine(); var buf = TypeConverterEx.Split <string>(line); if (buf.Length == 6) { vector[i] = double.Parse(buf[5]); } else if (buf.Length == 8) { vector[i] = double.Parse(buf[7]); } total_in += vector[i]; } for (int i = 0; i < 5; i++) { sr.ReadLine(); } for (int i = nvar; i < nvar * 2; i++) { line = sr.ReadLine(); var buf = TypeConverterEx.Split <string>(line); if (buf.Length == 6) { vector[i] = double.Parse(buf[5]); } else if (buf.Length == 8) { vector[i] = double.Parse(buf[7]); } total_out += vector[i]; } ds = vector[2 * nvar] - vector[0]; error = total_in - total_out; vector[2 * nvar] = total_in; vector[2 * nvar + 1] = total_out; vector[2 * nvar + 2] = ds; vector[2 * nvar + 3] = error; if (t > 0) { var date = ModelService.Start.AddDays(t - 1); _DataSource.Add(date, vector); } t++; } } } fs.Close(); sr.Close(); var csv_file = filename + ".csv"; StreamWriter sw = new StreamWriter(csv_file); var head = from item in _MFMonitor.Root[0].Children select item.Name; line = "Date" + "," + string.Join(",", head); sw.WriteLine(line); var row = new double[total_var]; for (int i = 0; i < _DataSource.Dates.Count; i++) { for (int n = 0; n < total_var; n++) { row[n] = _DataSource.Values[n][i]; } line = _DataSource.Dates[i].ToString("yyyy-MM-dd") + "," + string.Join(",", row); sw.WriteLine(line); } sw.Close(); } } }