public void TestUsgsQualificationCodes() { UsgsDailyValueSeries s = new UsgsDailyValueSeries("13168500", UsgsDailyParameter.DailyMeanTemperature); var t1 = new DateTime(1997, 8, 1); var t2 = new DateTime(1997, 8, 15); s.Read(t1, t2); s.RemoveMissing(); Assert.AreEqual(23.5, s[0].Value); Assert.AreEqual("A", s[0].Flag); s.WriteToConsole(true); /* * USGS 13168500 1997-08-02 177 A 26.6 A 21.1 A 23.5 A * USGS 13168500 1997-08-03 163 A 27.5 A 20.8 A 23.9 A * USGS 13168500 1997-08-04 153 A 25.7 A 22.8 A 23.9 A * USGS 13168500 1997-08-05 144 A 27.5 A 21.6 A 24.2 A * USGS 13168500 1997-08-06 149 A 28.2 A 21.9 A 24.7 A * USGS 13168500 1997-08-07 140 A 27.5 A 22.4 A 25.0 A * USGS 13168500 1997-08-08 135 A 26.9 A 22.3 A 24.4 A * USGS 13168500 1997-08-09 131 A 26.0 A 20.9 A 23.2 A * USGS 13168500 1997-08-10 130 A 27.1 A 21.6 A 23.9 A * */ }
public void TestDaily() { UsgsDailyValueSeries s = new UsgsDailyValueSeries("13190500", UsgsDailyParameter.DailyMeanDischarge); s.Read(new DateTime(2003, 10, 1), DateTime.Now); s.WriteCsv(@"C:\temp\andi_qd_usgs.csv"); }
public void ManageSeriesCatalogDirectly() { Logger.EnableLogger(); var filename = @"c:\temp\test.pdb"; if (File.Exists(filename)) { File.Delete(filename); } Console.WriteLine(filename); var server = new SQLiteServer(filename); var db = new TimeSeriesDatabase(server, false); var seriesCatalog = db.GetSeriesCatalog(); var siteCatalog = db.GetSiteCatalog(); // create a folder for each month for (int i = 1; i <= 12; i++) { var t = new DateTime(2015, i, 1); seriesCatalog.GetOrCreateFolder("Months", t.ToString("MMMM")); } // Add USGS series (Boise River) to the January Folder Series s = new UsgsDailyValueSeries("13206000", UsgsDailyParameter.DailyMeanDischarge); s.SiteID = "usgs_13206000"; var januaryIndex = seriesCatalog.GetOrCreateFolder("Months", "January"); seriesCatalog.AddSeriesCatalogRow(s, seriesCatalog.NextID(), januaryIndex, "usgs_boiseriver_flow"); // Add Hydromet series to the February Folder s = new HydrometDailySeries("bhr", "af", HydrometHost.GreatPlains); s.Name = "gphyd_bhr_af"; s.SiteID = "gphyd_bhr"; var feb = seriesCatalog.GetOrCreateFolder("Months", "February"); seriesCatalog.AddSeriesCatalogRow(s, seriesCatalog.NextID(), feb, "usgs_boiseriver_flow"); // Add Site information siteCatalog.AddsitecatalogRow("usgs_13206000", "BOISE RIVER AT GLENWOOD BRIDGE NR BOISE ID", "ID"); siteCatalog.AddsitecatalogRow("gphyd_bhr", "Big Horn Reservoir", "MT"); server.SaveTable(seriesCatalog); s = db.GetSeriesFromName("gphyd_bhr_af"); s.Read(); Console.WriteLine(s.Count); // Add CSV file db.Inventory(); }
public void AddSeriesDirectly() { Logger.EnableLogger(); var filename = FileUtility.GetTempFileNameInDirectory(@"c:\temp\", ".pdb"); if (File.Exists(filename)) { File.Delete(filename); } Console.WriteLine(filename); var server = new SQLiteServer(filename); var db = new TimeSeriesDatabase(server); // create a folder for each month for (int i = 1; i <= 12; i++) { var t = new DateTime(2015, i, 1); db.AddFolder("Months", t.ToString("MMMM")); } // Add USGS series (Boise River) to the January Folder Series s = new UsgsDailyValueSeries("13206000", UsgsDailyParameter.DailyMeanDischarge); s.SiteID = "13206000"; var folder = db.GetOrCreateFolder("Months", "January"); s.Read(DateTime.Parse("2015-01-01"), DateTime.Parse("2015-01-10")); db.AddSeries(s, folder); // Add Hydromet series to the February Folder s = new HydrometDailySeries("bhr", "af", HydrometHost.GreatPlains); s.Name = "gphyd_bhr_af"; s.SiteID = "gphyd_bhr"; var feb = db.GetOrCreateFolder("Months", "February"); db.AddSeries(s, feb); // Add Csv file data to March Folder. s = new TextSeries(@"c:\temp\test_river.csv"); s.Read();// read data. Use Read(t1,t2) to limit by dates s.SiteID = "test"; s.Units = "cfs"; s.Table.TableName = "test_river"; // table name needs to be unique db.AddSeries(s, db.GetOrCreateFolder("Months", "March")); s = db.GetSeriesFromName("gphyd_bhr_af"); s.Read(); Console.WriteLine(s.Count); // Add CSV file db.Inventory(); }
/// <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"); } }
/// <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); TimeSeriesRouting.RouteDaily(s, cbtt, pcode, RouteOptions.Outgoing); } 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) TimeSeriesRouting.RouteInstant(s, cbtt, pcode, RouteOptions.Outgoing); } catch(Exception e) { errors = true; Console.WriteLine(e.Message); } } } if (errors) throw new Exception("Error reading one or more sites"); }