/// <summary> /// Retrieve difference data table between two scenarios /// </summary> /// <param name="type"></param> /// <param name="resultType"></param> /// <param name="col"></param> /// <param name="compareScenario"></param> /// <returns></returns> public DataTable getDifference(ArcSWAT.SWATUnitType type, string resultType, string col, ArcSWAT.ScenarioResult compareScenario, System.ComponentModel.BackgroundWorker worker = null) { string tableId = string.Format("{0}_{1}_{2}_{3}_{4}", type, resultType, col, compareScenario.ModelType, compareScenario.Scenario.Name); if (!_differenceDataset.Tables.Contains(tableId)) { List <int> ids = getSWATUnitIDs(type); DataTable dt = new System.Data.DataTable(tableId); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("R2", typeof(double)); foreach (int id in ids) { if (worker != null) { worker.ReportProgress(0, string.Format("{0}:{1}", type, id)); } ArcSWAT.SWATUnit unit = getSWATUnit(type, id); if (unit == null) { continue; } ArcSWAT.SWATUnitResult unitResult = unit.getResult(resultType); if (unitResult == null) { continue; } ArcSWAT.SWATUnitColumnYearResult oneUnitResult = unitResult.getResult(col, -1); if (oneUnitResult == null) { continue; } try { DataRow r = dt.NewRow(); r[0] = id; r[1] = oneUnitResult.Compare(compareScenario).Statistics.Statistic("", StatisticCompareType.R2); dt.Rows.Add(r); } catch (System.Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } } _differenceDataset.Tables.Add(dt); } return(_differenceDataset.Tables[tableId]); }
private void TableResultsCtrl_Load(object sender, EventArgs e) { cmbIDs.SelectedIndexChanged += (s, ee) => { _unit = _units[Convert.ToInt32(cmbIDs.SelectedItem.ToString())]; if (_unit == null) return; lblInfo.Text = _unit.ToStringBasicInfo(); if (cmbResultTypes.Items.Count > 0) { _result = _unit.Results[cmbResultTypes.SelectedItem.ToString()]; updateResult(); return; } cmbResultTypes.Items.Clear(); foreach (string type in _unit.Results.Keys) cmbResultTypes.Items.Add(type); if (cmbResultTypes.Items.Count > 0) cmbResultTypes.SelectedIndex = 0; }; cmbResultTypes.SelectedIndexChanged += (s, ee) => { if (_unit == null) return; _result = _unit.Results[cmbResultTypes.SelectedItem.ToString()]; if (_result == null) return; cmbColumns.Items.Clear(); foreach (string col in _result.Columns) cmbColumns.Items.Add(col); if (cmbColumns.Items.Count > 0) cmbColumns.SelectedIndex = 0; updateResult(); }; cmbColumns.SelectedIndexChanged += (s, ee) => { //to-do change the char while columns changes if (_result == null) return; updateResult(); }; }