arcengine point層和polygon 相交計算每個面裏面的點個數 使用了面查詢功能

 
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();
            }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章