public Reach(DataRow rchInfoRow, ScenarioResult scenario) : base(rchInfoRow, scenario) { RowItem item = new RowItem(rchInfoRow); _id = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_RCH); _area = item.getColumnValue_Double(ScenarioResultStructure.COLUMN_NAME_AREA_KM2); if (scenario.Subbasins.ContainsKey(_id)) _sub = scenario.Subbasins[_id] as Subbasin; }
protected override void read() { if (_table != null) return; if(_parentData == null) return; if(_parentData.Observation == null) return; //get table name //each observed data for one corresponding table in the database string tableName = ObservationData.getTableName(_parentData.UnitType,_parentData.ID,_col); //get filter based on given year string filter = ""; if (_year > 0) //specific year { filter += string.Format("{0} >= '{1}-01-01' and {0} <= '{2}-12-31'", ObservationData.OBSERVATION_COLUMN_DATE, _year-1,_year); //read two years of data to consider hydrological year } else //all years in between start and end year { if (_parentData.StartYear > 0) { filter += string.Format("{0} >= '{1}-01-01'", ObservationData.OBSERVATION_COLUMN_DATE, _parentData.StartYear); } if (_parentData.EndYear > 0) { if(filter.Length > 0) filter += " and "; filter += string.Format("{0} <= '{1}-01-01'", ObservationData.OBSERVATION_COLUMN_DATE, _parentData.EndYear); } } if (filter.Length > 0) filter = " where " + filter; DataTable dt = _parentData.Observation.GetDataTable( string.Format("select * from [{0}] {1}",tableName,filter)); if (dt.Columns.Count == 2) { //add a date time column and convert time from text to date dt.Columns.Add(SWATUnitResult.COLUMN_NAME_DATE, typeof(DateTime)); DateTime d = DateTime.Now; foreach (DataRow r in dt.Rows) { RowItem item = new RowItem(r); if (DateTime.TryParse(item.getColumnValue_String(0), out d)) r[2] = d; } dt.Columns[1].ColumnName = _col; _table = dt; } }
public HRU(DataRow hruInfoRow, ScenarioResult scenario) : base(hruInfoRow,scenario) { RowItem item = new RowItem(hruInfoRow); _id = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_HRU); _seqIdInSubbasin = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_HRU_SEQ); _area = item.getColumnValue_Double(ScenarioResultStructure.COLUMN_NAME_AREA_KM2); _area_fr_sub = item.getColumnValue_Double(ScenarioResultStructure.COLUMN_NAME_AREA_FR_SUB); _area_fr_wshd = item.getColumnValue_Double(ScenarioResultStructure.COLUMN_NAME_AREA_FR_WSHD); //connect hru and subbasin int subid = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_SUB); if (scenario.Subbasins.ContainsKey(subid)) { _sub = scenario.Subbasins[subid] as Subbasin; if (_sub != null) _sub.addHRU(this); } }
private void calculateDate(DataRow r) { DateTime d = DateTime.Now; RowItem item = new RowItem(r); int year = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_YEAR); int month = 1; int day = 1; if (_result.Interval == SWATResultIntervalType.MONTHLY || _result.Interval == SWATResultIntervalType.DAILY) month = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_MONTH); if (_result.Interval == SWATResultIntervalType.DAILY) day = item.getColumnValue_Int(ScenarioResultStructure.COLUMN_NAME_DAY); r[SWATUnitResult.COLUMN_NAME_DATE] = new DateTime(year, month, day); }
private void loadData(SWATUnitType type) { if (!_exist) return; DataTable dt = GetDataTable("select name from sqlite_master where type = 'table'"); if (dt.Rows.Count > 0) { foreach (DataRow r in dt.Rows) { //get table name string tableName = r[0].ToString(); if(!tableName.Contains(type.ToString())) continue; //see if there are some data //don't consider empty tables dt = GetDataTable( string.Format("select count(*) from [{0}]", tableName)); RowItem item = new RowItem(dt.Rows[0]); if (item.getColumnValue_Int(0) == 0) continue; //extract the id from table name string[] all_in_tableName = tableName.Split(OBSERVATION_TABLE_NAME_DELIMITER); if (all_in_tableName.Length < 3) continue; int id = -1; if (int.TryParse(all_in_tableName[1], out id)) { string col = all_in_tableName[2]; string dataUniqueId = getUniqueId(type, id, col); if (!_allData.ContainsKey(dataUniqueId)) { SWATUnitObservationData data = new SWATUnitObservationData( id, type, col, -1, -1, this); //add to all data _allData.Add(dataUniqueId,data); //add to display data string display_id = string.Format("{0}_{1}",type,id); if (!_allData_display.ContainsKey(display_id)) _allData_display.Add(display_id, new List<SWATUnitObservationData>()); _allData_display[display_id].Add(data); } } } } }
private void loadData(SWATUnitType type, int id, string col) { if (!_exist) return; string tableName = getTableName(type, id, col); DataTable dt = GetDataTable( string.Format("select name from sqlite_master where type = 'table' and name = '{0}'", tableName)); if (dt.Rows.Count > 0) { //see if there are some data //don't consider empty tables dt = GetDataTable( string.Format("select count(*) from [{0}]", tableName)); if (dt.Rows.Count == 0) return; RowItem item = new RowItem(dt.Rows[0]); if (item.getColumnValue_Int(0) == 0) return; //read data string dataUniqueId = getUniqueId(type, id, col); //remove previous one _allData.Remove(dataUniqueId); _allData_display.Remove(dataUniqueId); //add new one SWATUnitObservationData data = new SWATUnitObservationData( id, type, col, -1, -1, this); //add to all data _allData.Add(dataUniqueId, data); //add to display data string display_id = string.Format("{0}_{1}", type, id); if (!_allData_display.ContainsKey(display_id)) _allData_display.Add(display_id, new List<SWATUnitObservationData>()); _allData_display[display_id].Add(data); } }
private void checkStatus() { if (DatabasePath == null || !File.Exists(DatabasePath)) { _status = ScenarioResultStatus.NO_EXIST; return; } DataTable dt = Query.GetDataTable("select * from " + ScenarioResultStructure.TABLE_NAME_WATERSHED_AVERAGE_ANNUAL, DatabasePath); if (dt.Rows.Count == 0) { _status = ScenarioResultStatus.UNSUCCESS; return; } foreach (DataRow r in dt.Rows) { RowItem item = new RowItem(r); string name = item.getColumnValue_String("NAME"); if (name.Equals(ScenarioResultStructure.NAME_STATUS_START_YEAR)) _startYear = item.getColumnValue_Int("VALUE"); else if (name.Equals("END_YEAR")) _endYear = item.getColumnValue_Int("VALUE"); else if (name.Equals("OUTPUT_INTERVAL")) _interval = (SWATResultIntervalType)(item.getColumnValue_Int("VALUE")); else if (name.Equals("SUCCESS")) _status = ScenarioResultStatus.NORMAL; } //some version don't have this output, need to upgrade if (_startYear == ScenarioResultStructure.UNKONWN_ID) throw new Exception("Missing output starting year. Please upgrade your SWAT executable."); _generationTime = (new System.IO.FileInfo(DatabasePath)).LastWriteTime; }
public static StringCollection GetDataColumns(string path, string table) { DataTable dt = GetDataTable(string.Format("PRAGMA table_info({0})", table),path); StringCollection cols = new StringCollection(); foreach (DataRow r in dt.Rows) { RowItem item = new RowItem(r); if (item.getColumnValue_String("type").ToLower().Equals("float")) cols.Add(item.getColumnValue_String("name")); } return cols; }