/// <summary> /// 加载单个任务区 根据任务区实体类加载 /// </summary> /// <param name="map"></param> /// <param name="model"></param> public static void LoadTaskArea(Core.Map.MapHelper map, Core.Model.TaskAreas model) { ISymbol symbol = map.CreateSimpleFillSymbol(Color.Red, 4, esriSimpleFillStyle.esriSFSHollow); IPolygon pPolygon = Core.Generic.Convertor.ToPolygon(model.PolygonString); TaskAreas = new List <IPolygon>(); TaskAreas.Add(pPolygon); //添加任务区多边形 map.AddElement(pPolygon, symbol, "TaskArea"); map.AddTextElement(pPolygon, getTextElement(model.Name), "TaskAreaMark"); }
/// <summary> /// 构建监测任务区 /// </summary> /// <param name="pMapCtr"></param> public static void BuildTaskArea(ESRI.ArcGIS.Controls.AxMapControl pMapCtr, int id) { if (DataGrid == null) { MessageBox.Show("您可能尚对灾区进行网格剖分,请先进行网格化剖分后再构建任务区!"); return; } //throw new Exception("您可能尚对灾区进行网格剖分,请先进行网格化剖分后再构建任务区!"); if (DataGrid.Count == 0) { MessageBox.Show("没有监测要素的单元格!"); return; } //throw new Exception("没有监测要素的单元格!"); TaskAreas = new List <IPolygon>(); IPolygon area; Geometry.Grid _grid; try { foreach (Geometry.Grid grid in DataGrid) { _grid = grid; if (grid.isMerged) { continue; //如果已经合并过,则跳过 } if (!ExistsGridInDataGrid(ref _grid)) { continue; //如果不有数据单元格中,则跳过 } area = grid.BuildPolygon(); grid.isMerged = true; //SetGridMerged(grid); MergeNN(grid, ref area); TaskAreas.Add(area); } if (TaskAreas.Count == 0) { throw (new Exception("没有成功生成任务区域!")); } //存储任务区信息 int i = 1; foreach (IPolygon polygon in TaskAreas) { Core.Model.TaskAreas model = new Core.Model.TaskAreas(); Core.DAL.TaskAreas dal = new Core.DAL.TaskAreas(); model.Name = "任务区" + i; model.PID = id; model.PolygonString = CoScheduling.Core.Generic.Convertor.ToString(polygon); dal.Add(model); i++; } //显示任务区 LoadTaskAreas(pMapCtr, id); //生成交点 // getIntersect(TaskAreas, map); } catch (Exception ex) { MessageBox.Show("错误" + ex.Message); } finally { TaskAreas = null; } }