public void TestRealTime() { string site_no = "13069500"; // / SNAKE RIVER NR BLACKFOOT ID UsgsRealTimeParameter parameter = UsgsRealTimeParameter.Discharge; UsgsRealTimeSeries s = new UsgsRealTimeSeries(site_no, parameter); s.Read(new DateTime(2011, 1, 12), new DateTime(2011, 1, 13)); Assert.AreEqual(192, s.Count); Assert.AreEqual(2240, s[0].Value); }
/// <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"); } }