博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
阅读量:6607 次
发布时间:2019-06-24

本文共 2695 字,大约阅读时间需要 8 分钟。

转自原文 

#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
:,如需转载请自行联系原作者
你可能感兴趣的文章
TCP协议如何保证传输的可靠性
查看>>
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
编程之美 测试赛 石头剪刀布
查看>>
签名问题
查看>>
软件开发各阶段交付物列表
查看>>
2018-05-24 Linux学习
查看>>
ntp服务器的搭建
查看>>
我的友情链接
查看>>
sysstat 安装
查看>>
六、nginx搭建织梦DedeCms网站
查看>>
Tair学习小记
查看>>
网卡绑定(服务器&&交换机),缓存服务器Squid架构配置
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
vue学习:10、第一个项目,实践中遇到的问题
查看>>
sed的基本用法
查看>>
一个不错的shell 脚本入门教程
查看>>
JVM、GC相关资料
查看>>
dell r620装cenots7遇到的问题
查看>>
Ansible之playbook的使用
查看>>
ansible模块批量管理
查看>>