/// <summary> /// update corresponding layer /// </summary> /// <param name="type"></param> public void drawLayer(string resultType, string col, DateTime date, ArcSWAT.ResultSummaryType summaryType) { if (_type != ArcSWAT.SWATUnitType.SUB && _type != ArcSWAT.SWATUnitType.RCH) { return; } if (_workingLayer == null) { return; } if (_unitList == null && _scenario != null) { if (_type == ArcSWAT.SWATUnitType.SUB) { _unitList = _scenario.Subbasins; } if (_type == ArcSWAT.SWATUnitType.RCH) { _unitList = _scenario.Reaches; } } if (_unitList == null) { return; } _resultColumn = col; _summaryType = summaryType; _resultDate = date; Debug.WriteLine("Draw Layer, " + _workingLayer.LegendText); Debug.WriteLine("Getting results..."); DateTime d = DateTime.Now; DataTable dt = _workingLayer.DataSet.DataTable; int resultIndex = dt.Columns.IndexOf(RESULT_COLUMN); int idIndex = dt.Columns.IndexOf(ID_COLUMN_NAME); if (summaryType == ArcSWAT.ResultSummaryType.AVERAGE_ANNUAL || summaryType == ArcSWAT.ResultSummaryType.ANNUAL) { int year = -1; if (summaryType == ArcSWAT.ResultSummaryType.ANNUAL) { year = date.Year; } Dictionary <int, double> ave_annual = _scenario.getAverageAnnualResults(_type, col, year); foreach (DataRow r in dt.Rows) { r[resultIndex] = ArcSWAT.ScenarioResultStructure.EMPTY_VALUE; int id = int.Parse(r[idIndex].ToString()); r[resultIndex] = ave_annual[id]; } } else { foreach (DataRow r in dt.Rows) { r[resultIndex] = ArcSWAT.ScenarioResultStructure.EMPTY_VALUE; int id = int.Parse(r[idIndex].ToString()); if (!_unitList.ContainsKey(id)) { continue; } ArcSWAT.SWATUnit unit = _unitList[id]; if (!unit.Results.ContainsKey(resultType)) { continue; } ArcSWAT.SWATUnitResult result = unit.Results[resultType]; if (!result.Columns.Contains(col)) { continue; } if (summaryType == ArcSWAT.ResultSummaryType.TIMESTEP) { r[resultIndex] = result.getData(col, date); } else if (summaryType == ArcSWAT.ResultSummaryType.ANNUAL) //annual { r[resultIndex] = result.getData(col, date.Year); } } } Debug.WriteLine(DateTime.Now.Subtract(d).TotalMilliseconds); Debug.WriteLine("setLayerSchema"); d = DateTime.Now; //update symbol setLayerSchema(_workingLayer); Debug.WriteLine(DateTime.Now.Subtract(d).TotalMilliseconds); ////update chart //onLayerSelectionChanged(type); if (onMapUpdated != null) { onMapUpdated(this, new EventArgs()); } }