联合整个面图层(Union)

 

1、联合整个面图层,

        /// <summary>
        /// 联合整个面图层
        /// </summary>
        /// <param name="featureClass"></param>
        /// <returns></returns>
        private void GetUnionGeometry(IFeatureClass pFeatureClass, ref IGeometry pGeometry)
        {
            //将图层选中的要素融合成一个大的多边形,最终返回一个多边形,供后续空间查询使用
            IGeometry pResultGeometry; //用作空间查询的多边形
            IFeatureCursor pCursor = pFeatureClass.Search(null, false);
            IFeature pFeature = pCursor.NextFeature();
            pResultGeometry = pFeature.ShapeCopy;
            ITopologicalOperator pTopo = pFeature.ShapeCopy as ITopologicalOperator;
            while (pFeature != null)
            {
                pResultGeometry = pTopo.Union(pFeature.Shape);
                pTopo = pResultGeometry as ITopologicalOperator;
                pFeature = pCursor.NextFeature();
            }

            pGeometry = pResultGeometry;
        }

2、联合整个面图层

        /// <summary>
        /// 联合整个面图层
        /// </summary>
        /// <param name="featureClass"></param>
        /// <returns></returns>
        private IGeometry UnionFeature(IFeatureClass featureClass)
        {
            IFeatureCursor featureCursor = featureClass.Search(null,false);
            IGeometry pUnionGeo = new PolygonClass();
            IFeature feature = featureCursor.NextFeature();
            while(feature!=null)
            {
                ITopologicalOperator pUnionTopo = pUnionGeo as ITopologicalOperator;
                pUnionGeo = pUnionTopo.Union(feature.Shape);
                feature = featureCursor.NextFeature();
            }
            return pUnionGeo;
        }

 

 

3、方法三

        public IPolygon UinonFc(IFeatureClass featureClass, string str)
        {
            if (featureClass == null) return null;
            IGeoDataset geoDataset = featureClass as IGeoDataset;
            IGeometry geometryBag = new GeometryBagClass();
            ISpatialFilter queryFilter = new SpatialFilterClass();
            queryFilter.WhereClause = str;
            geometryBag.SpatialReference = geoDataset.SpatialReference;
            IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);
            IGeometryCollection geometryCollection = geometryBag as IGeometryCollection;
            IFeature currentFeature = featureCursor.NextFeature();
            while (currentFeature != null)
            {
                object missing = Type.Missing;
                geometryCollection.AddGeometry(currentFeature.Shape, ref missing, ref missing);
                currentFeature = featureCursor.NextFeature();
            }
            ITopologicalOperator unionedPolygon = new PolygonClass();
            unionedPolygon.ConstructUnion(geometryBag as IEnumGeometry);
            return unionedPolygon as IPolygon;

        }

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值