Example #1
0
        /// <summary>
        /// 检查包括数据的单元格
        /// </summary>
        /// <param name="type">类型 0-居民地,1-道路,2-水系</param>
        private void CheckGrid(int type)
        {
            IPolygon grid;

            if (_DataGrids != null)
            {
                _DataGrids.Clear();
            }
            else
            {
                _DataGrids = new List <Geometry.Grid>();
            }

            foreach (Geometry.Grid g in _InitGrids)
            {
                IFeatureCursor featureCursor = null;
                ISpatialFilter spatialFilter = new SpatialFilter();
                if (isContainedInDataGrids(g))
                {
                    continue;                               //如果已包含在数据单元格中了,则跳过
                }
                grid = g.BuildPolygon();
                spatialFilter.Geometry   = grid as IGeometry;
                spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                if (type == 0)
                {
                    featureCursor = ResidentLayer.Search(spatialFilter, false);
                }
                else if (type == 1)
                {
                    featureCursor = RoadLayer.Search(spatialFilter, false);
                }
                else if (type == 2)
                {
                    featureCursor = HydroLayer.Search(spatialFilter, false);
                }
                //System.Diagnostics.Debug.Print("row=" + g.Row.ToString() + ",col=" + g.Col.ToString());
                if (featureCursor.NextFeature() != null)
                {
                    _DataGrids.Add(g);
                }
                featureCursor.Flush();
                featureCursor = null;
            }
        }