static void Main(string[] args) { if (args.Length != 3) { Console.WriteLine("Usage: ImportCsv site_list.csv instant|daily daysBack"); return; } FileUtility.CleanTempPath(); Logger.EnableLogger(); CsvFile csv = new CsvFile(args[0]); int daysBack = int.Parse(args[2]); /* * * interval,filename,date_column,value_column,cbtt,pcode * instant,kid.csv,Time,MB1.Hw_FlowMeter,ACHO,QC1 * instant,kid.csv,Time,MB1.Hw_FlowCalc,ACHO,QC2 * instant,kid.csv,Time,MB1.MillerHill_FlowPump1,HMPO,QP1 * instant,kid.csv,Time,MB1.MillerHill_FlowPump2,HMPO,QP2 * instant,kid.csv,Time,MB1.MillerHill_FlowPump3,HMPO,QP3 * */ var rows = csv.Select("interval = '" + args[1] + "'"); var interval = TimeInterval.Daily; if (args[1] == "instant") { interval = TimeInterval.Irregular; } Console.WriteLine("Processing " + rows.Length + " parameters"); for (int i = 0; i < rows.Length; i++) { var filename = rows[i]["filename"].ToString(); var dateColumn = rows[i]["date_column"].ToString(); var valueColumn = rows[i]["value_column"].ToString(); var cbtt = rows[i]["cbtt"].ToString(); var pcode = rows[i]["pcode"].ToString(); DataTable tbl = new CsvFile(filename); CalculationSeries s = new CalculationSeries(); s.TimeInterval = interval; s.Expression = valueColumn; s.Parser.VariableResolver = new DataTableVariableResolver(tbl, dateColumn); s.Calculate(DateTime.Now.AddDays(-daysBack), DateTime.Now); Console.WriteLine("Processing " + cbtt + "_" + pcode + " " + s.Count + " records"); TimeSeriesTransfer.Import(s, cbtt, pcode); } }
static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Usage: ImportOwrd site_list.csv hoursBack"); return; } int hoursBack = Convert.ToInt32(args[1]); Point.MissingValueFlag = 998877; bool errors = false; CsvFile csv = new CsvFile(args[0], CsvFile.FieldTypes.AllText); foreach (DataRow row in csv.Rows) { string site_id = row["site_id"].ToString(); string pcode = row["pcode"].ToString(); string cbtt = row["cbtt"].ToString(); var s = new OwrdSeries(site_id, OwrdSeries.OwrdDataSet.Instantaneous_Flow, true); try { s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now); s.RemoveMissing(); Console.WriteLine(cbtt + " " + s.Count + " points"); if (s.Count > 0) { TimeSeriesTransfer.Import(s, cbtt, pcode); } } catch (Exception e) { errors = true; Console.WriteLine(e.Message); } } if (errors) { Console.WriteLine("Error reading one or more sites"); } }
private static Series ProcessFile(string url, TimeInterval interval, string cbtt, string pcode, double offset, params string[] headers) { //Series s; //if (interval == TimeInterval.Hourly) //{ // s = CorpsHourlyFile.ReadCorpsDataFile(url, headers); //} //else //{ var s = CorpsDataFile.ReadCorpsDataFile(url, interval, headers); // } string units = headers[headers.Length - 1]; if (offset != 0) { s = s + offset; } //if ( (cbtt.ToLower() == "gcl" || cbtt.ToLower() == "bnk") && pcode.ToLower() == "fb") //{// compute acre-feet using rating table. // var af = TimeSeriesDatabaseDataSet.RatingTableDataTable.ComputeSeries(s, cbtt.ToLower()+ "_af.csv"); // TimeSeriesTransfer.Import(af, cbtt, "af"); //} if (units == "(kcfs)" || units == "(kaf)" || pcode == "Q" || pcode == "QW" || pcode == "QE") {// multiply by 1000 Reclamation.TimeSeries.Math.Multiply(s, 1000.0); } TimeSeriesTransfer.Import(s, cbtt, pcode); return(s); }
/// <summary> /// reads USGS instant streamflow data and saves in Hydromet format /// </summary> /// <param name="args"></param> static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Usage: ImportUsgs site_list.csv hoursBack"); return; } int hoursBack = Convert.ToInt32(args[1]); Point.MissingValueFlag = 998877; bool errors = false; CsvFile csv = new CsvFile(args[0], CsvFile.FieldTypes.AllText); foreach (DataRow row in csv.Rows) { var interval = GetInterval(row); string site_id = row["site_id"].ToString(); string usgs_parameter = row["usgs_parameter"].ToString(); string pcode = row["pcode"].ToString(); string cbtt = row["cbtt"].ToString(); Series s; Console.WriteLine(cbtt); if (interval == TimeInterval.Daily) { if (usgs_parameter.ToLower() == "gageheight") { s = new UsgsDailyValueSeries(site_id, UsgsDailyParameter.DailyMeanDischarge); } else { Logger.WriteLine("Error: the parameter '" + usgs_parameter + "' is not yet supported"); s = new Series(); } s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now); TimeSeriesTransfer.Import(s, cbtt, pcode, "usgs"); } else if (interval == TimeInterval.Irregular) { if (usgs_parameter.ToLower() == "watertemp") { s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.Temperature); } else if (usgs_parameter.ToLower() == "gageheight") { s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.GageHeight); } else if (usgs_parameter.ToLower() == "discharge") { s = new UsgsRealTimeSeries(site_id, UsgsRealTimeParameter.Discharge); } else { Logger.WriteLine("Error: the parameter '" + usgs_parameter + "' is not yet supported"); s = new Series(); } try { s.Read(DateTime.Now.AddHours(-hoursBack), DateTime.Now); if (usgs_parameter.ToLower() == "watertemp" && pcode.ToLower() == "wf") { //(°C × 9/5) + 32 = °F s = s * 9.0 / 5.0 + 32.0; } s.RemoveMissing(); if (s.Count > 0) { TimeSeriesTransfer.Import(s, cbtt, pcode, "usgs"); } } catch (Exception e) { errors = true; Console.WriteLine(e.Message); } } } if (errors) { throw new Exception("Error reading one or more sites"); } }