Пример #1
0
        /// <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");
        }
Пример #2
0
        /// <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;
            }
        }