dt.Columns.Add("个数");
IFeatureLayer layPolygon =
Lib.Layer.getShpLayer(regionPath, "polygon");
IFeatureLayer layPoint =
Lib.Layer.getShpLayer(pointPath, "point");
IFeatureClass pPolygonFClass = layPolygon.FeatureClass;
IFeatureClass pPointFClass = layPoint.FeatureClass;
IFeatureCursor pPolyCursor = pPolygonFClass.Search(null, false);
IFeature pPolyFeature = pPolyCursor.NextFeature();
int fetureCount = 0;
while (pPolyFeature != null)
{
pPolyFeature = pPolyCursor.NextFeature();
fetureCount++;
}
progressBar1.Maximum = fetureCount;
progressBar1.Value = 0;
pPolyCursor = pPolygonFClass.Search(null, false);
pPolyFeature = pPolyCursor.NextFeature();
while (pPolyFeature != null)
{
progressBar1.Value++;
IGeometry pPolGeo = pPolyFeature.Shape;
IRelationalOperator pRel = pPolGeo as IRelationalOperator;
int Count = 0;
//IFeatureCursor pPointCur = pPointFClass.Search(null, false);
//IFeature pPointFeature = pPointCur.NextFeature();
//while (pPointFeature != null)
//{
// IGeometry pPointGeo = pPointFeature.Shape;
// if (pRel.Contains(pPointGeo))
// {
// Count++;
// }
// pPointFeature = pPointCur.NextFeature();
//}
ISpatialFilter spatialFilter = new SpatialFilterClass();
spatialFilter.Geometry = pPolGeo;
spatialFilter.GeometryField = pPolygonFClass.ShapeFieldName;
spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
Count = pPointFClass.FeatureCount(spatialFilter);
DataRow dr = dt.NewRow();
dr[0] = pPolyFeature.get_Value(pPolyFeature.Fields.FindField(mRegionFileInfo.TitleColumn));
dr[1] = Count;
dt.Rows.Add(dr);
pPolyFeature = pPolyCursor.NextFeature();
}
arcengine point层和polygon 相交计算每个面里面的点个数 使用了面查询功能
最新推荐文章于 2020-11-25 10:31:03 发布