/// <summary> /// Compare result and observed data /// </summary> /// <param name="result"></param> public SWATUnitColumnYearCompareResult(SWATUnitColumnYearResult result) { if (result == null) { return; } SWATUnitColumnYearObservationData observed = result.ObservedData; if (observed == null) { return; } _result1 = result; _data2 = observed; _interval = _result1.UnitResult.Interval; _chartColumns.Add(_result1.ColumnCompare); _chartColumns.Add(_data2.ColumnCompare); _tableColumns.Add(_result1.ColumnCompare); _tableColumns.Add(_data2.ColumnCompare); //_tableColumns.Add("ABSOLUTE"); //_tableColumns.Add("RELATIVE"); _statistic = new StatisticCompare(this, SeasonType.WholeYear); }
/// <summary> /// Compare two results /// </summary> /// <param name="result1"></param> /// <param name="result2"></param> public SWATUnitColumnYearCompareResult(SWATUnitColumnYearResult result1, SWATUnitColumnYearResult result2) { if (result1 == null || result2 == null) { return; } if (result1.UnitResult.Unit.Scenario.Scenario.Name.Equals(result2.UnitResult.Unit.Scenario.Scenario.Name)) //same scenario { if (result1.UnitResult.Unit.Scenario.ModelType == result2.UnitResult.Unit.Scenario.ModelType) //same model type { return; } } else //different scenario { if (result1.UnitResult.Unit.Scenario.ModelType != result2.UnitResult.Unit.Scenario.ModelType) //different model type { return; } } if (result1.UnitResult.Unit.Type != result2.UnitResult.Unit.Type || result1.UnitResult.Unit.ID != result2.UnitResult.Unit.ID) { return; //differnt unit type or id } if (!result1.UnitResult.Name.Equals(result2.UnitResult.Name) || result1.UnitResult.Interval != result2.UnitResult.Interval) { return; //differnt data table or interval } if (!result1.Column.Equals(result2.Column) || result1.Year != result2.Year) { return; //different data column or year } _result1 = result1; _data2 = result2; _interval = _result1.UnitResult.Interval; _chartColumns.Add(_result1.ColumnCompare); _chartColumns.Add(_data2.ColumnCompare); _tableColumns.Add(_result1.ColumnCompare); _tableColumns.Add(_data2.ColumnCompare); //_tableColumns.Add("ABSOLUTE"); //_tableColumns.Add("RELATIVE"); if (_result1.ObservedData != null) { _chartColumns.Add(_result1.ObservedData.ColumnCompare); _tableColumns.Add(_result1.ObservedData.ColumnCompare); } _statistic = new StatisticCompare(this, SeasonType.WholeYear); }
/// <summary> /// Compare two results /// </summary> /// <param name="result1"></param> /// <param name="result2"></param> public SWATUnitColumnYearCompareResult(SWATUnitColumnYearResult result1, SWATUnitColumnYearResult result2) { if(result1 == null || result2 == null) return; if (result1.UnitResult.Unit.Scenario.Scenario.Name.Equals(result2.UnitResult.Unit.Scenario.Scenario.Name)) //same scenario { if (result1.UnitResult.Unit.Scenario.ModelType == result2.UnitResult.Unit.Scenario.ModelType) //same model type return; } else //different scenario { if (result1.UnitResult.Unit.Scenario.ModelType != result2.UnitResult.Unit.Scenario.ModelType) //different model type return; } if (result1.UnitResult.Unit.Type != result2.UnitResult.Unit.Type || result1.UnitResult.Unit.ID != result2.UnitResult.Unit.ID) return; //differnt unit type or id if (!result1.UnitResult.Name.Equals(result2.UnitResult.Name) || result1.UnitResult.Interval != result2.UnitResult.Interval) return; //differnt data table or interval if (!result1.Column.Equals(result2.Column) || result1.Year != result2.Year) return; //different data column or year _result1 = result1; _data2 = result2; _interval = _result1.UnitResult.Interval; _chartColumns.Add(_result1.ColumnCompare); _chartColumns.Add(_data2.ColumnCompare); _tableColumns.Add(_result1.ColumnCompare); _tableColumns.Add(_data2.ColumnCompare); //_tableColumns.Add("ABSOLUTE"); //_tableColumns.Add("RELATIVE"); if (_result1.ObservedData != null) { _chartColumns.Add(_result1.ObservedData.ColumnCompare); _tableColumns.Add(_result1.ObservedData.ColumnCompare); } _statistic = new StatisticCompare(this,SeasonType.WholeYear); }
/// <summary> /// Compare result and observed data /// </summary> /// <param name="result"></param> public SWATUnitColumnYearCompareResult(SWATUnitColumnYearResult result) { if (result == null) return; SWATUnitColumnYearObservationData observed = result.ObservedData; if (observed == null) return; _result1 = result; _data2 = observed; _interval = _result1.UnitResult.Interval; _chartColumns.Add(_result1.ColumnCompare); _chartColumns.Add(_data2.ColumnCompare); _tableColumns.Add(_result1.ColumnCompare); _tableColumns.Add(_data2.ColumnCompare); //_tableColumns.Add("ABSOLUTE"); //_tableColumns.Add("RELATIVE"); _statistic = new StatisticCompare(this,SeasonType.WholeYear); }
private static void copyData(SWATResultIntervalType interval, DataTable combineTable, ColumnYearData data) { //add new column for result2 combineTable.Columns.Add(data.ColumnCompare, typeof(double)); //copy data from result2 to the combine table int newColIndex = combineTable.Columns.Count - 1; for (int i = 0; i < combineTable.Rows.Count; i++) { if (data is SWATUnitColumnYearResult) { ArcSWAT.RowItem item = new ArcSWAT.RowItem(data.Table.Rows[i]); combineTable.Rows[i][newColIndex] = item.getColumnValue_Double(data.Column); } else if (data is SWATUnitColumnYearObservationData) { //see if the oberved data is missing DateTime d = DateTime.Parse(combineTable.Rows[i][SWATUnitResult.COLUMN_NAME_DATE].ToString()); DataRow[] rs = null; if (interval == SWATResultIntervalType.MONTHLY) //in phase I, the monthly data is using day 15 for each month, and I would use day 1 for each month, so here for monthly observed data, use both conditions rs = data.Table.Select(string.Format("{0}='{1:yyyy-MM-01}' or {0}='{1:yyyy-MM-15}'", SWATUnitResult.COLUMN_NAME_DATE, d)); else if (interval == SWATResultIntervalType.DAILY) rs = data.Table.Select(string.Format("{0}='{1:yyyy-MM-dd}'", SWATUnitResult.COLUMN_NAME_DATE, d)); if (rs != null && rs.Length > 0) combineTable.Rows[i][newColIndex] = double.Parse(rs[0][data.Column].ToString()); else combineTable.Rows[i][newColIndex] = ScenarioResultStructure.EMPTY_OBSERVED_VALUE; //missing observed data, shouldn't use 0 as for daily observed data they may be 0 //changed to -0.000001 to make the chart better } } }
private static void copyData(SWATResultIntervalType interval, DataTable combineTable, ColumnYearData data) { //add new column for result2 combineTable.Columns.Add(data.ColumnCompare, typeof(double)); //copy data from result2 to the combine table int newColIndex = combineTable.Columns.Count - 1; for (int i = 0; i < combineTable.Rows.Count; i++) { if (data is SWATUnitColumnYearResult) { ArcSWAT.RowItem item = new ArcSWAT.RowItem(data.Table.Rows[i]); combineTable.Rows[i][newColIndex] = item.getColumnValue_Double(data.Column); } else if (data is SWATUnitColumnYearObservationData) { //see if the oberved data is missing DateTime d = DateTime.Parse(combineTable.Rows[i][SWATUnitResult.COLUMN_NAME_DATE].ToString()); DataRow[] rs = null; if (interval == SWATResultIntervalType.MONTHLY) { //in phase I, the monthly data is using day 15 for each month, and I would use day 1 for each month, so here for monthly observed data, use both conditions rs = data.Table.Select(string.Format("{0}='{1:yyyy-MM-01}' or {0}='{1:yyyy-MM-15}'", SWATUnitResult.COLUMN_NAME_DATE, d)); } else if (interval == SWATResultIntervalType.DAILY) { rs = data.Table.Select(string.Format("{0}='{1:yyyy-MM-dd}'", SWATUnitResult.COLUMN_NAME_DATE, d)); } if (rs != null && rs.Length > 0) { combineTable.Rows[i][newColIndex] = double.Parse(rs[0][data.Column].ToString()); } else { combineTable.Rows[i][newColIndex] = ScenarioResultStructure.EMPTY_OBSERVED_VALUE; //missing observed data, shouldn't use 0 as for daily observed data they may be 0 } //changed to -0.000001 to make the chart better } } }