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 相交計算每個面裏面的點個數 使用了面查詢功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.