public HDBSeries(TimeSeriesDatabase db, TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { string str = ConnectionStringUtility.GetToken(ConnectionString, "server", ""); m_server = (HDBServer)Enum.Parse(typeof(HDBServer), str); m_sdi = ConnectionStringUtility.GetIntFromConnectionString(ConnectionString, "sdi"); }
public AddSite(TimeSeriesDatabase db) { InitializeComponent(); this.m_db = db; Setup(); }
public UsgsRealTimeSeries(TimeSeriesDatabase db,Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db,sr) { var p = ConnectionStringUtility.GetToken(ConnectionString,"UsgsParameter",""); m_parameter = (UsgsRealTimeParameter)Enum.Parse(typeof(UsgsRealTimeParameter), p); m_site_no = ConnectionStringToken( "site_no"); }
public ScenarioSelector(TimeSeriesDatabase db) { InitializeComponent(); m_db = db; ReloadGrid(); LoadSeriesList(); LoadMonthList(); SetSortMetricColumnVisibility(tabControl1); }
public void Import(string filename, TimeSeriesDatabase db) { xls = new NpoiExcel(filename); m_db = db; var siteMapping = xls.ReadDataTable("siteMapping",true,true); Merge(siteMapping,false, MissingSchemaAction.Ignore); var scenarioMapping = xls.ReadDataTable("scenarioMapping",true,true); Merge(scenarioMapping, false, MissingSchemaAction.Ignore); ImportToPisces(); }
public ScenarioSelectorCCProjectionsForm(TimeSeriesDatabase db) { InitializeComponent(); m_db = db; scenarioCCProjections1 = new ScenarioSelectorCCProjections(m_db); scenarioCCProjections1.Parent = tabPageProjections; scenarioCCProjections1.Dock = DockStyle.Fill; scenarioCCReference1 = new ScenarioSelectorCCProjections(); scenarioCCReference1.Parent = tabPageReference; scenarioCCReference1.Dock = DockStyle.Fill; }
public BasicMeasurement(TimeSeriesDatabase db, TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(sr) { this.m_db = db; this.m_sr = sr; int id = Convert.ToInt32(ConnectionStringToken("id", "-1")); Console.WriteLine("ctor BasicMeasurement id ="+id); var tbl = m_db.Hydrography.GetMeasurements(); m_measurementRow = tbl.FindByid(id); }
private void AddSeries(TimeSeriesDatabase db, string scenarioName, string scenarioNumber) { DataTable scenarioSheet = xls.ReadDataTable(scenarioNumber,true,true); int count = 0; foreach (DataRow row in scenarioSheet.Rows) { var externalSiteID = row["ExternalSiteID"].ToString(); var internalSiteID = LookupInternalSiteID(externalSiteID); string basin = LookupBasin(externalSiteID); var parent = db.GetOrCreateFolder(basin); string filename = row["FilePath"].ToString(); if( !File.Exists(filename)) { if( filename!= "") errors.Add("Missing File: " + filename); continue; } Series s = ReadExternalSeriesData(scenarioName, filename, externalSiteID); s.Name = internalSiteID; if( row.Table.Columns.IndexOf("units")>=0) { s.Units = row["units"].ToString(); } s.ConnectionString = "ScenarioName=" + scenarioName; var id =-1; if (db.GetSeriesFromName(internalSiteID) == null) { id = db.AddSeries(s, parent); var sc = db.GetSeriesCatalog("id =" + id); // alter entry in database to remove scenario postfix from table name sc.Rows[0]["tablename"] = internalSiteID.ToLower(); db.Server.SaveTable(sc); } else { // if this series already exists (for another scenario) // only save the TableData s.Table.Columns[0].ColumnName = "datetime"; s.Table.Columns[1].ColumnName = "value"; db.CreateSeriesTable(s.Table.TableName, false); db.Server.InsertTable(s.Table); } if (OnProgress != null) OnProgress(this, new ProgressEventArgs( "saving " + internalSiteID + " " + scenarioName, count / scenarioSheet.Rows.Count * 100)); count++; } }
public SiteInfo(TimeSeriesDatabase db, string siteID) { m_db = db; m_siteID = siteID; var a = db.GetSiteCatalog("siteid = '" + m_siteID + "'"); if (a.Rows.Count == 0) m_siteRow = a.NewsitecatalogRow(); else { m_siteRow = a[0]; } }
public SeriesProperties(Series s, TimeSeriesDatabase db) { m_db = db; m_quality = new Quality(m_db); string[] DBunits = db.GetUniqueUnits(); if (s == null) { throw new ArgumentNullException(); } m_series = s; InitializeComponent(); this.LoadList(comboBoxUnits, DBunits); ReadSeriesProperties(); this.textBoxExpression.Enabled = s is CalculationSeries; buttonBuildExpression.Enabled = s is CalculationSeries; LoadQualityLimits(); }
public void ReadExcelScenario() { string fn = Path.Combine(TestData.DataPath, "Scenarios", "InputScenarioConfig.xlsx"); var ds = new ScenarioManagement.ScenarioDataSet(); var fn1 = FileUtility.GetTempFileName(".pdb"); SQLiteServer svr = new SQLiteServer(fn1); var db = new TimeSeriesDatabase(svr,false); ds.Import(fn, db); Assert.IsTrue(ds.ScenarioMapping.Count > 0); // create Scenarios svr.CloseAllConnections(); File.Delete(fn1); }
public static void ImportDirectory(string path, TimeSeriesDatabase db) { string[] files = FileUtility.GetFilesRecursive(path); for (int i = 0; i < files.Length; i++) { try { Logger.WriteLine("Parsing file " + files[i]); ImportFile(files[i], db,true); } catch (Exception e) { string msg = "Error reading " + files[i]; Logger.WriteLine(msg + e.Message, "ui"); // System.Windows.Forms.MessageBox.Show(msg); } } Logger.WriteLine("done importing directory "); }
public SiteMetaData(TimeSeriesDatabase db) { m_db = db; InitializeComponent(); comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; m_props = db.GetSiteProperties(); m_sites = db.GetSiteCatalog(); var temp = m_sites.Copy(); // copy for the combo box (selection only) for (int i = 0; i < temp.Rows.Count; i++) { var r = temp.Rows[i]; r["description"] = r["siteid"].ToString().ToUpper() + " " + r["description"].ToString(); } comboBox1.DataSource = temp; comboBox1.ValueMember = "description"; comboBox1.DisplayMember = "description"; }
public HydrometInstantSeries(TimeSeriesDatabase db, TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { HydrometInfoUtility.ParseConnectionString(ConnectionString, out server, out cbtt, out pcode); }
public HydrossSeries(TimeSeriesDatabase db, Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db,sr) { ExternalDataSource = true; Init(db); }
string m_path; // //CHJ/YT//IR-MONTH/IRVZZBZD/ #endregion Fields #region Constructors public UsaceSeries(TimeSeriesDatabase db, TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { m_path = ConnectionStringUtility.GetToken(sr.ConnectionString, "DssPath", ""); ExternalDataSource = true; }
private void addPiscesDatabase_Click(object sender, EventArgs e) { try { Cursor = Cursors.WaitCursor; Performance p = new Performance(); OpenFileDialog fd = new OpenFileDialog(); fd.DefaultExt = "*.pdb"; fd.Filter = "Pisces database (*.pdb)|*.pdb"; if (fd.ShowDialog() == DialogResult.OK) { SQLiteServer svr = new SQLiteServer(fd.FileName); TimeSeriesDatabase db = new TimeSeriesDatabase(svr,false); DB.InsertDatabase(CurrentFolder, db); DatabaseChanged(); } UserPreference.Save("fileName", fd.FileName); p.Report("done reading " + fd.FileName); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { Cursor = Cursors.Default; } }
public SpreadsheetGearSeries(TimeSeriesDatabase db, Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { }
static void Main(string[] args) { if (args.Length < 4 || args.Length > 5) { Console.WriteLine("Usage:"); Console.WriteLine("30_year_avg creates 30 year average pisces database"); Console.WriteLine("Usage: 30_year_avg config.csv group|all output.db boise|yakima [hmet.txt]"); Console.WriteLine("config.csv example below:\n"); Console.WriteLine("group,station,daily_pcode,title,ylabel"); Console.WriteLine("Boise Payette,plei,qd,\"Payette River near Letha, ID\",Discharge - cfs"); Console.WriteLine(" Boise Payette,emm,qd,\"Payette River near Emmett, ID\",Discharge - cfs"); Console.WriteLine("\ngroup is used to filter specific parts of config file. enter all to disable filtering"); Console.WriteLine("output.db is the name of a pisces database that will be created."); Console.WriteLine("boise|yakima specifiy which hydromet server to read data from"); Console.WriteLine("hmet.txt is an optional output with hydromet daily format"); return; } string fn = args[2]; if (File.Exists(fn)) { Console.WriteLine("Deleting existing database "); File.Delete(fn); } var svr = new SQLiteServer(fn); var db = new TimeSeriesDatabase(svr); HydrometHost host = HydrometHost.PN; if (args[3] == "yakima") { host = HydrometHost.Yakima; } DataTable config = new CsvFile(args[0]); if (args[1] != "all") { // filter out specific group config = DataTableUtility.Select(config, "group = '" + args[1] + "'", ""); } if (args.Length == 5 && File.Exists(args[4])) { Console.WriteLine("deleting " + args[4]); File.Delete(args[4]); } var prevFolderName = Guid.NewGuid().ToString(); PiscesFolder folder = null; for (int x = 0; x < config.Rows.Count; x++) { var row = config.Rows[x]; string folderName = row["group"].ToString(); if (prevFolderName != folderName) { prevFolderName = folderName; folder = db.AddFolder(folderName); } string CBTT = row["station"].ToString(); string Pcode = row["daily_pcode"].ToString(); Console.WriteLine(CBTT + " " + Pcode); Series s = new HydrometDailySeries(CBTT, Pcode, host); // Data ranges collected var t1 = new DateTime(1980, 10, 1); var t2 = new DateTime(2010, 9, 30); s.Read(t1, t2); var s7100 = LabelAndSave30Year(db, 7100, CBTT, Pcode, folder, host); var s8110 = LabelAndSave30Year(db, 8110, CBTT, Pcode, folder, host); var s6190 = LabelAndSave30Year(db, 6190, CBTT, Pcode, folder, host); //Creates thirty-year average from raw data and adds to database var avg = Reclamation.TimeSeries.Math.MultiYearDailyAverage(s, 10); avg.Name = "avg 1981-2010 " + CBTT + " " + Pcode; avg.Table.TableName = "avg_1981_2010" + CBTT + "" + Pcode; db.AddSeries(avg, folder); avg = Reclamation.TimeSeries.Math.ShiftToYear(avg, 8109); if (args.Length == 5) { HydrometDailySeries.WriteToArcImportFile(avg, CBTT, Pcode, args[4], true); } } }
public EquationTemplates(TimeSeriesDatabase db, string outputFileName) { m_db = db; m_sites = m_db.GetSiteCatalog(); sw = new StreamWriter(outputFileName); }
public SiteCsvTable(TimeSeriesDatabase db) { this.db = db; }
public DatabaseVariableResolver(TimeSeriesDatabase db, CalculationSeries s) { this.db = db; this.s = s; }
public ProfileDesigner(TimeSeriesDatabase db) { InitializeComponent(); wDB = new WaterProfileDatabase(db); m_db = db; }
//static string ManualInstType = "M - manually read static water level"; public static void ImportFile(string filename, TimeSeriesDatabase db, bool manual) { if (!manual) { throw new NotImplementedException("this method is for importing manually entered data"); } DataTable rbmsDataTable = ReadRBMSFile(filename); if (rbmsDataTable.Rows.Count == 0) { Logger.WriteLine(filename + " has no valid data. It will be skipped"); return; } string sql = @" select a.id,a.tablename,a.name, b.value as InstType , c.value as DrillHole, d.value as riser from seriescatalog a left join seriesproperties b on ( b.seriesid=a.id and b.name='InstType') left join seriesproperties c on ( c.seriesid=a.id and c.name='DrillHole') left join seriesproperties d on ( d.seriesid=a.id and d.name='Riser') where b.value = 'M - manually read static water level' "; var sc = db.Server.Table("view_seriescatalog", sql); db.SuspendTreeUpdates(); int skipcount = 0; int addCount = 0; var tableList = new List <string>(); for (int i = 0; i < rbmsDataTable.Rows.Count; i++) { string drillHole = rbmsDataTable.Rows[i]["DH"].ToString(); string riser = rbmsDataTable.Rows[i]["Riser"].ToString(); var strDate = rbmsDataTable.Rows[i]["DateTime"].ToString(); var t = DateTime.Now.Date; var filter = "DrillHole ='" + drillHole + "'" + " and " + " riser = '" + riser + "'"; if (!DateTime.TryParse(strDate, out t)) { Logger.WriteLine("Error: could not parse " + strDate); Logger.WriteLine(filter); continue; } var strVal = rbmsDataTable.Rows[i]["Measured"].ToString(); double val = -999; if (!double.TryParse(strVal, out val)) { Logger.WriteLine("Error: could not parse " + strVal); Logger.WriteLine(filter); continue; } var rows = sc.Select(filter); if (rows.Length != 1) { Logger.WriteLine("Warning: Matched " + rows.Length + " records skipping: " + filter); skipcount++; continue; } //int id = Convert.ToInt32(sc.Rows[0]["id"]); int id = Convert.ToInt32(rows[0]["id"]); var s = db.GetSeries(id); if (!tableList.Contains(s.Table.TableName)) { tableList.Add(s.Table.TableName); } string fn = Path.GetFileName(filename); if (fn.Length > 50) { fn = fn.Substring(0, 50); } s.Add(t, val, fn); db.SaveTimeSeriesTable(id, s, DatabaseSaveOptions.UpdateExisting); addCount++; } db.ResumeTreeUpdates(); Logger.WriteLine("finished importing " + filename); Logger.WriteLine("skipped " + skipcount + " records."); Logger.WriteLine("added/updated " + addCount + " records."); Logger.WriteLine(tableList.Count + " tables were modified"); for (int i = 0; i < tableList.Count; i++) { Console.WriteLine(tableList[i]); } }
public static void ImportFile(string filename, TimeSeriesDatabase db) { ImportFile(filename, db, false); }
public CsvTimeSeriesWriter(TimeSeriesDatabase db) { this.db = db; }
/// <summary> /// Imports all files recursively /// </summary> /// <param name="path"></param> /// <param name="fileFilter">filter such as *.csv</param> public static void Import(TimeSeriesDatabase db, string path, string fileFilter, string scenarioRegex) { DirectoryScanner ds = new DirectoryScanner(path, fileFilter, scenarioRegex); var scenarios = db.GetScenarios(); int scenarioNumber = 1; foreach (var scenario in ds.UniqueScenarios()) { scenarios.AddScenarioRow(scenario, false, scenarioNumber.ToString(), 0); } db.Server.SaveTable(scenarios); List <string> errorList = new List <string>(); for (int i = 0; i < ds.Files.Length; i++) { try { TextSeries s = new TextSeries(ds.Files[i]); s.Read(); if (scenarioRegex != "" && ds.Scenario[i] != "") { s.Name = ds.Siteid[i]; s.ConnectionString = "ScenarioName=" + ds.Scenario[i]; s.SiteID = ds.Siteid[i]; s.Table.TableName = (ds.Siteid[i] + "_" + ds.Scenario[i]).ToLower(); } else { var name = TimeSeriesDatabase.SafeTableName(Path.GetFileNameWithoutExtension(ds.Files[i])); s.Name = name; s.SiteID = name; s.Table.TableName = name; ds.Siteid[i] = name; } if (db.GetSeriesFromName(ds.Siteid[i]) == null) { int id = db.AddSeries(s); var sc = db.GetSeriesCatalog("id =" + id); // alter entry in database to remove scenario postfix from table name sc.Rows[0]["tablename"] = ds.Siteid[i]; db.Server.SaveTable(sc); } else { // if this series already exists (for another scenario) // only save the TableData s.Table.Columns[0].ColumnName = "datetime"; s.Table.Columns[1].ColumnName = "value"; db.CreateSeriesTable(s.Table.TableName, false); db.Server.InsertTable(s.Table); } Logger.WriteLine("importing [" + i + "] --> " + ds.Files[i], "ui"); } catch (Exception ex) { errorList.Add(ex.Message); Logger.WriteLine(ex.Message); } } if (errorList.Count > 0) { throw new Exception(String.Join("\n", errorList.ToArray())); } }
/// <summary> /// Exports scenarios. One pisces database per scenario. /// /// </summary> /// <param name="excelFileName"></param> /// <param name="DB"></param> public void Export(string excelFileName, TimeSeriesDatabase DB) { }
public UsgsGroundWaterLevelSeries(TimeSeriesDatabase db, Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { m_site_no = ConnectionStringUtility.GetToken(ConnectionString, "site_no", ""); }
/// <summary> /// Examples: /// /// --cgi=sites --propertyFilter=program:agrimet --json_required_properties=json_extra /// </summary> /// <param name="args"></param> public static void Main(string[] args) { string propertyFilter = ""; var cgi = ""; var json_property_stubs = ""; var payload = ""; var p = new OptionSet(); var format = "json"; var verbose = false; p.Add("server"); p.Add("cgi=", "required cgi to execute cgi=sites or cgi=series", x => cgi = x); p.Add("json_property_stubs=", "comma separated list of properties (i.e. 'region,url,') to created empty stubs if neeed ", x => json_property_stubs = x); p.Add("propertyFilter=", "property filter like program:agrimet", x => propertyFilter = x); p.Add("payload=", "test query data for a CGI", x => payload = x); p.Add("format=", "format json(default) | csv ", x => format = x); p.Add("verbose", " get more details", x => verbose = true); try { p.Parse(args); } catch (OptionException e) { Console.WriteLine(e.Message); } if (cgi == "") { ShowHelp(p); return; } if (verbose) { Logger.EnableLogger(); Logger.WriteLine("verbose =true"); } var db = TimeSeriesDatabase.InitDatabase(new Arguments(args)); if (cgi == "inventory") { Console.Write("Content-Type: text/html\n\n"); db.Inventory(); } else if (cgi == "sites") { if (format == "json") { JSONSites d = new JSONSites(db); d.Execute(json_property_stubs.Split(','), propertyFilter); } else if (format == "csv") { CsvTable c = new CsvTable(db); c.Execute(propertyFilter); } } else if (cgi == "instant") { CsvTimeSeriesWriter c = new CsvTimeSeriesWriter(db); c.Run(TimeInterval.Hourly, payload); } else if (cgi == "site") { SiteInfo si = new SiteInfo(db); si.Run(payload); } else if (cgi == "test-perf-large") { TestCGI c = new TestCGI(); c.PerfTestLarge(); } else if (cgi == "test-perf-small") { TestCGI c = new TestCGI(); c.PerfTestSmall(); } else if (cgi == "dump") { TestCGI c = new TestCGI(); c.DumpTest(); } else { Console.WriteLine("invalid cgi: " + cgi); } }
public ScenarioSelectorCCProjections(TimeSeriesDatabase db) { InitializeComponent(); SetupOperationsModelSelector(); m_db = db; }
public SiteInfoCGI(TimeSeriesDatabase db) { this.db = db; }
public PiscesCommandLine(TimeSeriesDatabase db) { m_db = db; }
public WaterProfileDatabase(TimeSeriesDatabase db) { m_db = db; }
public static void Import(Reclamation.Core.Arguments args, TimeSeriesDatabase dbase) { //// Pisces /ImportIdwr /Data:data.dat /Index:index.dat /Filename:SnakeMonthly.sdf if (!args.Contains("Data") || !args.Contains("Filename")) { Console.WriteLine("Usage: Pisces /ImportIdwr /Data:datafile /Filename:databasename"); Console.WriteLine(" or: Pisces /ImportIdwr /Data:datafile /Index:indexfile /Filename:databasename"); return; } string dbname = args["Filename"]; IdwrMonthy id; db = dbase; if (args.Count == 3) { id = new IdwrMonthy(args["Data"], "noIndex" , dbname); } else { if (args.Contains("Index")) { if (args[2] == "ValidityCheck") id = new IdwrMonthy(args["Data"], "ValidityCheck", dbname); else id = new IdwrMonthy(args["Data"], args["Index"], dbname); } else id = new IdwrMonthy(args["Data"], "noIndex", dbname); } id.Import(); }
private void Init(TimeSeriesDatabase db) { fileName = ConnectionStringUtility.GetFileName(ConnectionString, db.DataSource); ScenarioName = Path.GetFileNameWithoutExtension(fileName); stationID = ConnectionStringUtility.GetToken(ConnectionString, "stationID", ""); varcode = ConnectionStringUtility.GetToken(ConnectionString, "varcode", ""); extra1 = ConnectionStringUtility.GetToken(ConnectionString, "extra1", ""); extra2 = ConnectionStringUtility.GetToken(ConnectionString, "extra2", ""); }
/// <summary> /// Expand simplified query /// BOII MX,MN,MM /// is translated to /// BOII MX, BOII MN, BOII MM /// /// GREY /// is translated to /// GREY GH, GREY Q /// </summary> /// <param name="query"></param> /// <returns></returns> public static string ExpandQuery(string query, TimeInterval interval, TimeSeriesDatabase db = null) { var rval = new List <string>(); string title = ""; var idx = query.IndexOf("#"); if (idx >= 0) { title = query.Substring(idx); query = query.Substring(0, idx); } query = query.Trim(); if (CbttOnly(query)) { string[] pcodes = GetParameters(query, interval, db); if (pcodes.Length > 0) { query = query + " " + String.Join(",", pcodes); // return query; } } string[] pairs = query.Split(','); string cbtt = ""; var pc = ""; for (int i = 0; i < pairs.Length; i++) { string s = pairs[i]; s = s.Replace(": ", ":"); var tokens = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (i == 0 && tokens.Length != 2) { Logger.WriteLine("query syntax Error: first pair must have cbtt and pcode"); return(query); } if (tokens.Length == 2) { cbtt = tokens[0]; pc = tokens[1]; } else if (tokens.Length == 1) { pc = tokens[0]; } else if (tokens.Length == 0) { continue; } rval.Add(cbtt + " " + pc); } string r = String.Join(",", rval.ToArray()); if (r.Trim() != query.Trim()) { Logger.WriteLine("query expanded to '" + r + "'"); } return(r + title); }
/********************************** * * Create a tree file that is usable by pisces * * input : riverware rdf file * output : comma seperated tree file. * * // example portion of input file. (this input file is using snapshots in riverware) ----------------------------------- object_type: SnapShotObj object_name: Most Likely 2 slot_name: Andrews Gage 12447390 at RM 3_5_Gage Outflow END_SLOT_PREAMBLE units: cfs // example output. There is no nesting of tree levels for now. RiverwareName,Description,RiverwareDataType,Level,Units Riverware Results,,,0, Yakima River at Parker PARW,Yakima River at Parker PARW,Gage Outflow,1,cfs Yakima River at Grandview,Yakima River at Grandview,Gage Inflow,1,cfs ... **********************************/ public static void AddRiverWareFileToDatabase(string rdfFilename, PiscesFolder parent, TimeSeriesDatabase db) { Reclamation.Core.TextFile tf = new Reclamation.Core.TextFile(rdfFilename); #region notes /* SnapShotStyle... ------------------------------------- 2001-9-29 24:00 2001-9-30 24:00 object_type: SnapShotObj object_name: Most Likely 2 ### scernario name slot_name: Andrews Gage 12447390 at RM 3_5_Gage Outflow # object_name slotName are combined. END_SLOT_PREAMBLE units: cfs Regular Style ... --------------------------------------- END_COLUMN END_SLOT object_type: StreamGage object_name: Yakima 202_0 at Easton EASW slot_name: Gage Outflow END_SLOT_PREAMBLE units: cfs scale: 1 */ #endregion int number_of_runs = LookupNumberOfRuns(tf); PiscesFolder folder = parent; if (number_of_runs == 1) folder = db.AddFolder(parent, Path.GetFileNameWithoutExtension(rdfFilename)); int sz = tf.Length; // object_type and object_name should occur on consecutive lines. int index = tf.IndexOfBoth("object_name:", "slot_name:", 0); var objectList = new List<string>(); //list to avoid duplicates in tree Performance p1 = new Performance(); Performance p2 = new Performance(); p2.Pause(); int counter = 0; db.SuspendTreeUpdates(); var sc = db.GetSeriesCatalog(); Dictionary<string, int> objTypeID = new Dictionary<string, int>(); Dictionary<string, int> objNameID = new Dictionary<string, int>(); while (index < sz && index > 0) { //slot_name: Andrews Gage 12447390 at RM 3_5_Gage Outflow string slot_name = tf[index + 1].Substring(11); //Andrews Gage 12447390 at RM 3_5_Gage Outflow string object_type = tf[index - 1].Substring(13); string object_name = tf[index].Substring(13); string units = tf[index + 3].Substring(6).Trim(); string tag = object_name + ":" + slot_name; if (!objectList.Contains(tag)) { int scenarioNumber = -1; if (number_of_runs > 1) scenarioNumber = 1; RiverWareSeries s; if (object_type == "SnapShotObj") s = new RiverWareSeries(rdfFilename, "", slot_name, scenarioNumber, true, units); else s = new RiverWareSeries(rdfFilename, object_name, slot_name, scenarioNumber, false, units); s.Units = units; s.ConnectionString = ConnectionStringUtility.MakeFileNameRelative(s.ConnectionString, db.DataSource); p2.Continue(); if (object_type.Contains("Reservoir")) { object_type = "Reservoir"; } else if (object_type.Contains("Reach")) { object_type = "Reach"; } else if (object_type.Contains("Diversion")) { object_type = "Diversion"; } else if (object_type.Contains("Canal")) { object_type = "Canal"; } int id = sc.NextID(); if (!sc.FolderExists(object_type, folder.ID)) { objTypeID.Add(object_type, id); sc.AddFolder(object_type, id, folder.ID); id++; } if (!sc.FolderExists(object_name, objTypeID[object_type])) { objNameID.Add(object_name, id); sc.AddFolder(object_name, id, objTypeID[object_type]); id++; } sc.AddSeriesCatalogRow(s, id, objNameID[object_name], ""); objectList.Add(tag); } index = tf.IndexOfBoth( "object_name:", "slot_name:", index + 2); counter++; } p1.Report("total"); p2.Report("db.add()"); //398.7732813 seconds elapsed. total //384.6792607 seconds elapsed. db.add() // disable tree refresh (doubles perf) // 255.9736646 seconds elapsed. total // 241.7702669 seconds elapsed. db.add() // implemented member ExternalDataSource //34.8756696 seconds elapsed. total //20.3753912 seconds elapsed. db.add() var convention = Reclamation.TimeSeries.RiverWare.ImportRiverWare.ScenarioConvention.Default; if (number_of_runs > 1) // Multiple runs. {// show dialog to allow water year naming or traces var dlg = new Reclamation.TimeSeries.RiverWare.ImportRiverWare(); if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { convention = dlg.NamingConvention; } // Add Scenarios. var tblScen = db.GetScenarios(); for (int i = 0; i < number_of_runs; i++) { string name = "Run" + i; if (convention == RiverWare.ImportRiverWare.ScenarioConvention.ByYear) { name = (dlg.FirstYear + i ).ToString(); } //string scenarioPath = ConnectionStringUtility.MakeFileNameRelative("FileName=" + item, DB.Filename); tblScen.AddScenarioRow(name, true, "ScenarioNumber=" + (i + 1).ToString(), 0); } db.Server.SaveTable(tblScen); } db.Server.SaveTable(sc); db.ResumeTreeUpdates(); db.RefreshFolder(parent); }
public HydrossSeries(TimeSeriesDatabase db, Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { ExternalDataSource = true; Init(db); }
public InventoryReport(TimeSeriesDatabase db, string payload) { this.db = db; this.query = payload; }
public ScenarioSelector(TimeSeriesDatabase db) { InitializeComponent(); m_db = db; ReloadGrid(); }
//static string ManualInstType = "M - manually read static water level"; public static void ImportFile(string filename, TimeSeriesDatabase db, bool manual) { if( !manual) throw new NotImplementedException("this method is for importing manually entered data"); DataTable rbmsDataTable = ReadRBMSFile(filename); if (rbmsDataTable.Rows.Count == 0) { Logger.WriteLine(filename + " has no valid data. It will be skipped"); return; } string sql = @" select a.id,a.tablename,a.name, b.value as InstType , c.value as DrillHole, d.value as riser from seriescatalog a left join seriesproperties b on ( b.seriesid=a.id and b.name='InstType') left join seriesproperties c on ( c.seriesid=a.id and c.name='DrillHole') left join seriesproperties d on ( d.seriesid=a.id and d.name='Riser') where b.value = 'M - manually read static water level' "; var sc = db.Server.Table("view_seriescatalog",sql); db.SuspendTreeUpdates(); int skipcount = 0; int addCount = 0; var tableList = new List<string>(); for (int i = 0; i < rbmsDataTable.Rows.Count; i++) { string drillHole = rbmsDataTable.Rows[i]["DH"].ToString(); string riser = rbmsDataTable.Rows[i]["Riser"].ToString(); var strDate = rbmsDataTable.Rows[i]["DateTime"].ToString(); var t = DateTime.Now.Date; var filter = "DrillHole ='" + drillHole + "'" + " and " + " riser = '" + riser + "'"; if (!DateTime.TryParse(strDate, out t)) { Logger.WriteLine("Error: could not parse " + strDate); Logger.WriteLine(filter); continue; } var strVal = rbmsDataTable.Rows[i]["Measured"].ToString(); double val = -999; if( !double.TryParse(strVal,out val)) { Logger.WriteLine("Error: could not parse " + strVal); Logger.WriteLine(filter); continue; } var rows = sc.Select(filter); if (rows.Length != 1) { Logger.WriteLine("Warning: Matched "+rows.Length +" records skipping: "+filter); skipcount++; continue; } //int id = Convert.ToInt32(sc.Rows[0]["id"]); int id = Convert.ToInt32(rows[0]["id"]); var s = db.Factory.GetSeries(id); if( !tableList.Contains(s.Table.TableName)) tableList.Add(s.Table.TableName); string fn = Path.GetFileName(filename); if (fn.Length > 50) fn = fn.Substring(0, 50); s.Add(t, val, fn); db.SaveTimeSeriesTable(id, s, DatabaseSaveOptions.UpdateExisting); addCount++; } db.ResumeTreeUpdates(); Logger.WriteLine("finished importing " + filename); Logger.WriteLine("skipped " + skipcount + " records."); Logger.WriteLine("added/updated " + addCount + " records."); Logger.WriteLine(tableList.Count +" tables were modified"); for (int i = 0; i < tableList.Count; i++) { Console.WriteLine(tableList[i]); } }
string m_path; // //CHJ/YT//IR-MONTH/IRVZZBZD/ public UsaceSeries(TimeSeriesDatabase db, TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { m_path = ConnectionStringUtility.GetToken(sr.ConnectionString, "DssPath", ""); ExternalDataSource = true; }
public void Interpolate2DWithDatabase() { Logger.EnableLogger(); var fn = FileUtility.GetTempFileName(".pdb"); File.Delete(fn); SQLiteServer svr = new SQLiteServer(fn); var db = new TimeSeriesDatabase(svr, false); var c = new CalculationSeries("rir_q"); var path = Path.Combine(TestData.DataPath, "rating_tables"); path = Path.Combine(path, "rir_q.txt"); c.Expression = "FileLookupInterpolate2D(rir_fb, rir_ra, \"" + path + "\")" + " + FileLookupInterpolate2D(rir_fb, rir_rb, \"" + path + "\")"; c.TimeInterval = TimeInterval.Irregular; db.AddSeries(c); var fb = new Series("rir_fb"); fb.TimeInterval = TimeInterval.Irregular; db.AddSeries(fb); fb.Add("6-1-2011", 5110.99); fb.Add("6-2-2011", 5111.31); fb.Add("6-3-2011", 5111.71); fb.Add("6-4-2011", 5112.09); var ra = new Series("rir_ra"); ra.TimeInterval = TimeInterval.Irregular; ra.Add("6-1-2011", 2.1); ra.Add("6-2-2011", 1.29); ra.Add("6-3-2011", 1.29); ra.Add("6-4-2011", 1.29); db.AddSeries(ra); var rb = new Series("rir_rb"); rb.TimeInterval = TimeInterval.Irregular; rb.Add("6-1-2011", 2.1); rb.Add("6-2-2011", 1.28); rb.Add("6-3-2011", 1.28); rb.Add("6-4-2011", 1.28); db.AddSeries(rb); TimeSeriesImporter ti = new TimeSeriesImporter(db); ti.Import(fb, computeDependencies: true);// this should force a calculation... var q = db.GetSeriesFromTableName("rir_q"); Assert.NotNull(q, "Series not created"); q.Read(); /* * Flows from Hydromet * 6-1-2011, 1009.87 * 6-2-2011, 602.24 * 6-3-2011, 603.32 * 6-4-2011, 604.34 */ Assert.AreEqual(4, q.Count); Assert.AreEqual(1009.87, System.Math.Round(q[0].Value, 2)); Assert.AreEqual(603.32, System.Math.Round(q[2].Value, 2)); }
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, false); // 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); var csvFileName = FileUtility.GetTempFileName(".csv"); File.WriteAllLines(csvFileName, new string[] { "Date,value", "1-1-2001, 12.34" }); // Add Csv file data to March Folder. s = new TextSeries(csvFileName); 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(); }
private static string[] GetParametersFromPostgres(string cbtt, TimeInterval interval) { var rval = new List<string>(); var svr = PostgreSQL.GetPostgresServer(); TimeSeriesDatabase p = new TimeSeriesDatabase(svr,false); var sql = " lower(siteid) = '"+ svr.SafeSqlLiteral(cbtt.ToLower())+"' and TimeInterval = '"+interval.ToString()+"'"; var sc = p.GetSeriesCatalog(sql); foreach (var item in sc) { TimeSeriesName tn = new TimeSeriesName(item.TableName); rval.Add(tn.pcode); } return rval.ToArray(); }
static void Main(string[] args) { Logger.EnableLogger(true); #if !PISCES_OPEN var x = HdbPoet.Hdb.Instance; // force this assembly to load. #endif try { string fileName = ""; if (args.Length == 1) { fileName = args[0]; if (!File.Exists(fileName)) { MessageBox.Show("Could not open file '" + fileName + "'"); return; } } else if (UserPreference.Lookup("fileName") != "" && File.Exists(UserPreference.Lookup("fileName")) && Path.GetExtension(UserPreference.Lookup("fileName")) != ".sdf") { fileName = UserPreference.Lookup("fileName"); } else {// open default database fileName = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\tsdatabase.pdb"; } if (!File.Exists(fileName)) { SQLiteServer.CreateNewDatabase(fileName); } HydrometInfoUtility.SetDefaultHydrometServer(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadExit += new EventHandler(Application_ThreadExit); Application.ApplicationExit += new EventHandler(Application_ApplicationExit); //Application.Idle += new EventHandler(Application_Idle); //Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); explorer = new PiscesSettings(new ExplorerView()); // explorer.Database explorer.Open(fileName); db = explorer.Database; piscesForm1 = new PiscesForm(explorer); piscesForm1.FormClosed += new FormClosedEventHandler(explorerForm1_FormClosed); //Pisces2 p2 = new Pisces2(explorer); //p2.FormClosed += new FormClosedEventHandler(explorerForm1_FormClosed); Application.Run(piscesForm1); explorer.Database.SaveSettingsToDatabase(explorer.TimeWindow); //db.SaveSettingsToDatabase(explorer.TimeWindow); PostgreSQL.ClearAllPools(); FileUtility.CleanTempPath(); } catch (Exception exc) { MessageBox.Show(exc.ToString()); } }
public Hydrography(TimeSeriesDatabase db) { m_db = db; }
public WebData(TimeSeriesDatabase db) { m_db = db; }