开发者社区> 橘子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码

简介:
+关注继续查看

转自原文 ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码

复制代码
#region 校验合法性  
ArrayList pFeatureArray = null;  
pFeatureArray = Application.Editor.FeatureSelection();  
int count=pFeatureArray.Count;  
if (count<1)  
{  
    MessageBox.Show("最少必须选择1个要素才能进行要素分解!", "提示");  
    return;  
}  
    #endregion     
try  
{  
    //启动编辑操作  
    Application.Editor.StartOperation();  
    #region 对选中的要素进行多部件测试及分解  
    int multipartcount = 0;  
    for (int i = 0; i < count; i++)  
    {  
        IFeature pFeature = pFeatureArray as IFeature;  
        if (pFeature.ShapeCopy.IsEmpty) continue;  
        IGeometry pGeometry = pFeature.ShapeCopy;  
        IGeometryCollection pGeocoll = pGeometry as IGeometryCollection;  
        int geomcount = pGeocoll.GeometryCount;  
        if (geomcount > 1)  
        {  
            multipartcount++;  
            for (int k = 1; k < geomcount; k++)  
            {  
                IFeature newFeaturte = (pFeature.Class as IFeatureClass).CreateFeature();  
                IFeatureEdit pFeatureEdit = pFeature as IFeatureEdit;  
                pFeatureEdit.SplitAttributes(newFeaturte);  
                IGeometry newGeom = pGeocoll.get_Geometry(k);  
                if (pFeature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolygon)  
                    newGeom=GeometryHelper.ConstructPolygon(newGeom);  
                else  
                    newGeom = GeometryHelper.ConstructPolyline(newGeom);  
                newGeom.SpatialReference = pFeature.ShapeCopy.SpatialReference;  
                newFeaturte.Shape = newGeom;  
                newFeaturte.Store();  
            }  
      
            IGeometry newGeom2 = pGeocoll.get_Geometry(0);  
            if (pFeature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPolygon)  
                newGeom2 = GeometryHelper.ConstructPolygon(newGeom2);  
            else  
                newGeom2 = GeometryHelper.ConstructPolyline(newGeom2);  
            newGeom2.SpatialReference = pFeature.ShapeCopy.SpatialReference;  
            pFeature.Shape = newGeom2;  
            pFeature.Store();  
            Application.Editor.StopOperation("分解多部件要素");  
        }  
        else  
        {  
            continue;  
        }  
    }  
    if (multipartcount == 0)  
    {  
        MessageBox.Show("未选择多部件要素!", "分解要素");  
        return;  
    }  
     
     
    #endregion  
}  
catch (Exception ex)  
{  
    Application.Editor.AbortOperation();  
    MessageHelper.WriteLog("分解多部件要素", ex);  
}  
finally  
{  
    Application.ActiveView.Refresh();  
    FlashFeatures();  
}  
复制代码

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。




    本文转自wenglabs博客园博客,原文链接http://www.cnblogs.com/arxive/p/6263116.html:,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于C#的ArcEngine二次开发46:编辑内容回撤与炸开multipart feature
基于C#的ArcEngine二次开发46:编辑内容回撤与炸开multipart feature
0 0
动态尺寸模型优化实践之Shape Constraint IR Part II
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part II 中我们将介绍shape constraint IR的设计,实现以及一些初步的实验结果
0 0
动态尺寸模型优化实践之Shape Constraint IR Part I
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part I 中我们将介绍问题的背景,面临的主要挑战和以及我们做shape constraint IR的动机。
0 0
types-paddle: 为Paddle增加Tensor类型注释特性
Paddle中没有Tensor类,导致在IDE中写代码时没有办法进行智能提示,我提供了一个解决方案。
0 0
SAP QM QP03显示一个含有Multiple Specs检验特性的检验计划
SAP QM QP03显示一个含有Multiple Specs检验特性的检验计划
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Multi-label Graph Analysis and Computations Using GraphX
立即下载
Multi-label Graaph Analysis an
立即下载
低代码开发师(初级)实战教程
立即下载