Ejemplo n.º 1
0
        /// <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]);
        }
Ejemplo n.º 2
0
        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();
            };
        }