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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值