/// <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; } }