ArcEngine 拓扑分析-擦除

10 篇文章 0 订阅
/// <summary>
    /// 叠加分析--擦除
    /// </summary>
    public class EraseClass 
    { 
        ///<summary>
        ///裁切框
        ///</summary>
        private IEnvelope _Envelope;
        public IEnvelope pEnvelope
        {
            get { return _Envelope; }
            set { _Envelope = value; }
        }

        /// <summary>
        /// 被裁切图层
        /// </summary>
        private IFeatureClass _FeatureClass;
        public IFeatureClass pFeatureClass
        {
            get { return _FeatureClass; }
            set { _FeatureClass = value; }
        }
        public EraseClass(IEnvelope pEnvelope, IFeatureClass pFeatureClass)
        {
            _FeatureClass = pFeatureClass;
            _Envelope = pEnvelope;
        }

        public void EraseOperate(IGeometry pGeometry)
        {
            ISpatialFilter tSF = new SpatialFilterClass();
            tSF.Geometry = _Envelope;
            tSF.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
            //求出与裁切框相交要素 
            IFeatureCursor tFeatureCursor = _FeatureClass.Search(tSF, false);
            IFeature tFeature = tFeatureCursor.NextFeature();
            while (tFeature != null)
            {
                IGeometry tGeo2 = tFeature.ShapeCopy;
                ITopologicalOperator tTope2 = tGeo2 as ITopologicalOperator;
                tTope2.Simplify();
                IGeometry tGeo = tFeature.ShapeCopy;
                ITopologicalOperator tTope = tGeo as ITopologicalOperator;
                tTope.Simplify();
                //用Envelope对要素进行裁切 
                tTope.Clip(this._Envelope);
                IGeometry tGeoClip = (IGeometry)tTope;
                //用裁切出来的要素,再与其源要素进行求差处理,即得到外围要素 
                IGeometry tGeoDe = tTope2.Difference(tGeoClip);
                //把外围要素赋予源要素 
                tFeature.Shape = tGeoDe;
                tFeature.Store();
                tFeature = tFeatureCursor.NextFeature();
            }
            System.Runtime.InteropServices.Marshal.ReleaseComObject(tFeatureCursor);
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值