Arcengine多部件处理

        /// <summary>
        /// 多部件处理
        /// </summary>
        /// <param name="pGeometry">任一要素</param>
        /// <param name="listGeometry">多部件打散的列表</param>
        /// <returns>是否为多部件</returns>
        public static bool IsMuiltPart(IGeometry pGeometry, out List<IGeometry> listGeometry)
        {
            listGeometry = new List<IGeometry>();
            IGeometryCollection pGeoColl = pGeometry as IGeometryCollection;
            if (pGeoColl == null)
            {
                return false;
            }
            if (pGeoColl.GeometryCount <= 1)
            {
                return false;
            }

            IPolygon pGeoPolygon = pGeometry as IPolygon;
            int iRCnt = pGeoPolygon.ExteriorRingCount;
            if (iRCnt > 1)
            {
                IGeometryBag pExRings = (pGeometry as IPolygon4).ConnectedComponentBag;
                IGeometryCollection geoColl = pExRings as IGeometryCollection;
                for (int i = 0; i < iRCnt; i++)
                {
                    if (pGeometry.GeometryType == esriGeometryType.esriGeometryPolygon)
                    {
                        IGeometry newGeom = geoColl.Geometry[i];
                        newGeom.SpatialReference = pGeometry.SpatialReference;
                        IGeometryCollection newGeoColl = new PolygonClass();
                        newGeoColl.AddGeometryCollection(newGeom as IGeometryCollection);
                        IGeometry pGeoNew2 = newGeoColl as IGeometry;
                        if (pGeoNew2 == null || pGeoNew2.IsEmpty) continue;
                        listGeometry.Add(pGeoNew2);
                    }                    
                }
            }
            return true;
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值