在一般的GIS数据编辑中,利用线分割面是常见的一项操作。很多同志不清楚如何在ArcEngine实现这一功能,其代码写得无比复杂。其实ArcEngine给我们提供了一个接口:IFeatureConstruction,利用这个接口可以轻松完成线分割面的操作。下面给出示例代码。

情况一:利用选中的线要素分割面要素

如下图所示:当前选择了两条线要素,我希望用这两条选中的线对面进行分割,这种情况在编辑流程中很常见。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;namespace WindowsFormsApplication1
{public partial class MainForm : Form{public MainForm(){InitializeComponent();axMapControl1.LoadMxFile(@"C:\Users\DSF\Desktop\data\无标题.mxd");}// 分割private void btnSplitPolygon_Click(object sender, EventArgs e){// 面要素IFeatureLayer pPolygonFeatureLayer = axMapControl1.get_Layer(1) as IFeatureLayer;IFeatureClass pPolygonFeatureClass = pPolygonFeatureLayer.FeatureClass;// 面要素范围IGeoDataset pGeoDataset = pPolygonFeatureClass as IGeoDataset;IEnvelope pEnvelope = pGeoDataset.Extent;// 获取被选择的线要素ISelection pSelection = axMapControl1.Map.FeatureSelection;IEnumFeature pEnumFeature = pSelection as IEnumFeature;// 线分割面IFeatureConstruction pFeatureConstruction = new FeatureConstruction();pFeatureConstruction.SplitPolygonsWithLines(null, pPolygonFeatureClass, pEnvelope, pEnumFeature, null, 0.001);}}
}

分割结果如下图所示:

情况二:利用线图层批量分割面要素

第一种情况需要先在地图上选择线要素,然后才能进行分割操作,如果遇到数据量较大的情况未免有些繁琐。我们同样可以利用线图层批量分割面要素,如下图所示:我希望直接用线要素图层中的所有线要素分割面要素图层。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Output;
using ESRI.ArcGIS.SystemUI;namespace WindowsFormsApplication1
{public partial class MainForm : Form{public MainForm(){InitializeComponent();axMapControl1.LoadMxFile(@"C:\Users\DSF\Desktop\data\无标题.mxd");}// 分割private void btnSplitPolygon_Click(object sender, EventArgs e){// 线要素IFeatureLayer pPolylineFeatureLayer = axMapControl1.get_Layer(0) as IFeatureLayer;IFeatureClass pPolylineFeatureClass = pPolylineFeatureLayer.FeatureClass;IFeatureCursor pPolylineFeatureCursor = pPolylineFeatureClass.Search(null, true);// 面要素IFeatureLayer pPolygonFeatureLayer = axMapControl1.get_Layer(1) as IFeatureLayer;IFeatureClass pPolygonFeatureClass = pPolygonFeatureLayer.FeatureClass;// 面要素范围IGeoDataset pGeoDataset = pPolygonFeatureClass as IGeoDataset;IEnvelope pEnvelope = pGeoDataset.Extent;// 分割面IInvalidArea pInvalidArea = new InvalidArea();IFeatureConstruction pFeatureConstruction = new FeatureConstruction();pFeatureConstruction.SplitPolygonsWithLinesFromCursor(null, pPolygonFeatureClass, pEnvelope, pPolylineFeatureCursor, pInvalidArea, 0.001);}}
}

分割结果如下图所示:

ArcEngine线分割面的实现方法相关推荐

  1. arcgis多面体要素转面_【干货】ArcGIS 9.3线转面的方法

    原标题:[干货]ArcGIS 9.3线转面的方法 ArcGIS作为GIS软件中的常用软件,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功 ...

  2. ArcGIS线转面的方法-收藏(转)

    ArcGIS 9.3线转面的方法 ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. A ...

  3. ArcGIS线转面的方法

    ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. ArcGIS在进行大范围的矢量化时一 ...

  4. arcgis不闭合线转面_ArcGIS线转面的方法

    ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. ArcGIS在进行大范围的矢量化时一 ...

  5. AutoCAD二次开发多段线分割、添加顶点

    今天我们来学习关于多段线中添加顶点方面知识,这里使用的是autocad2016版,开发环境使用的是visual studio2012,很自然使用的.net4.5,这样做的主要的目的是,在使用polyl ...

  6. Magics分割拆分模型方法

    为了提高打印效果,往往我们需要对复杂模型进行分割变为简单模型来打印,再进行拼装.要对模型分割的话,推荐使用Magics来执行工作,这个软件有数种切割方式,我们以最近很火的托举猫模型为例子,介绍下其中常 ...

  7. Java 分割字符串的方法String.split()底层原理

    文章目录 1.举例说明 2.split源码分析 3.API原解 4.regex参数API原解 5.limit参数介绍 6.结果的验证 7.此方法的使用 1.举例说明 (例子来自于博主:https:// ...

  8. <论文阅读>用于 3D 点线和平面的视觉惯性里程计框架 A Visual Inertial Odometry Framework for 3D Points, Lines and Planes

    被疫情包围了!在家多看看论文吧- 论文地址:A Visual Inertial Odometry Framework for 3D Points, Lines and Planes [摘要]:恢复连续 ...

  9. 基于OpenCV的实时车道线分割&车道保持系统(源码&教程)

    1.研究背景 汽车主动安全系统能够实现风险的主动预防和规避,其能有力缓解当前我国汽车交通事故频发的困境,故对其的相关研究得到了国家的大力支持. 车道保持辅助系统(LKAS,Lane Keeping A ...

最新文章

  1. 解决Hbase启动报错问题:No such file or directory!
  2. 基于 Spring Boot 的 Restful 风格实现增删改查
  3. idea run和debug都是灰色的,没法点怎么解决
  4. 征战蓝桥 —— 2014年第五届 —— C/C++A组第8题——地宫取宝
  5. 音乐、视频播放模式切换实现方案及原理解析(基于vue、vuex、h5 audio)
  6. 新闻中限制显示字数目
  7. JSON 和 JS 对象互转
  8. aria2+RPC+m3u8下载工具(windows版)
  9. CentOS上安装 Docker-CE以及Docker 加速器配置
  10. GlassFish漏洞总结复现
  11. ABBYY FineReader 14安装教程
  12. virtualbox安装mac os x雪豹
  13. android夏时令问题
  14. 酷狗导致django8000端口占用
  15. matlab信号内插,【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)应用三次样条函数spline实现内插...
  16. 神还原女神照片!GAN 为百年旧照上色
  17. sudo apt-get update报错:W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
  18. 【Rust 日报】2022-03-27 Google对25名Rust开源贡献者做出奖励
  19. 美国校园最in俗语大全
  20. Android手机通讯录备份和恢复项目

热门文章

  1. 领英工具-领英精灵的批量加好友功能你真的会用吗?
  2. VSCode插件生成编号、目录、文件目录树
  3. 11月14日火箭vs灰熊视频直播在线观看
  4. Geant4学习笔记(一)-运行Geant4实例
  5. 第11章 网络物理隔离技术原理与应用
  6. 学会这一招,轻松玩转小程序自动化
  7. 克莱因瓶和莫比乌斯环
  8. 正易原文(木版本影印)
  9. Hourglass Network 沙漏网络 (pose estimation姿态估计)
  10. 懂MySQL的你不能不懂EI/SCI数据库的套路