ArcEngine线分割面的实现方法
在一般的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线分割面的实现方法相关推荐
- arcgis多面体要素转面_【干货】ArcGIS 9.3线转面的方法
原标题:[干货]ArcGIS 9.3线转面的方法 ArcGIS作为GIS软件中的常用软件,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功 ...
- ArcGIS线转面的方法-收藏(转)
ArcGIS 9.3线转面的方法 ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. A ...
- ArcGIS线转面的方法
ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. ArcGIS在进行大范围的矢量化时一 ...
- arcgis不闭合线转面_ArcGIS线转面的方法
ArcGIS作为GIS软件中的龙头老大,其功能是非常强大的,但是如果作为一个初学者,其部分常用的重要功能不容易掌握,今天就讲一讲在矢量化时非常重要的功能:线转面. ArcGIS在进行大范围的矢量化时一 ...
- AutoCAD二次开发多段线分割、添加顶点
今天我们来学习关于多段线中添加顶点方面知识,这里使用的是autocad2016版,开发环境使用的是visual studio2012,很自然使用的.net4.5,这样做的主要的目的是,在使用polyl ...
- Magics分割拆分模型方法
为了提高打印效果,往往我们需要对复杂模型进行分割变为简单模型来打印,再进行拼装.要对模型分割的话,推荐使用Magics来执行工作,这个软件有数种切割方式,我们以最近很火的托举猫模型为例子,介绍下其中常 ...
- Java 分割字符串的方法String.split()底层原理
文章目录 1.举例说明 2.split源码分析 3.API原解 4.regex参数API原解 5.limit参数介绍 6.结果的验证 7.此方法的使用 1.举例说明 (例子来自于博主:https:// ...
- <论文阅读>用于 3D 点线和平面的视觉惯性里程计框架 A Visual Inertial Odometry Framework for 3D Points, Lines and Planes
被疫情包围了!在家多看看论文吧- 论文地址:A Visual Inertial Odometry Framework for 3D Points, Lines and Planes [摘要]:恢复连续 ...
- 基于OpenCV的实时车道线分割&车道保持系统(源码&教程)
1.研究背景 汽车主动安全系统能够实现风险的主动预防和规避,其能有力缓解当前我国汽车交通事故频发的困境,故对其的相关研究得到了国家的大力支持. 车道保持辅助系统(LKAS,Lane Keeping A ...
最新文章
- 解决Hbase启动报错问题:No such file or directory!
- 基于 Spring Boot 的 Restful 风格实现增删改查
- idea run和debug都是灰色的,没法点怎么解决
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第8题——地宫取宝
- 音乐、视频播放模式切换实现方案及原理解析(基于vue、vuex、h5 audio)
- 新闻中限制显示字数目
- JSON 和 JS 对象互转
- aria2+RPC+m3u8下载工具(windows版)
- CentOS上安装 Docker-CE以及Docker 加速器配置
- GlassFish漏洞总结复现
- ABBYY FineReader 14安装教程
- virtualbox安装mac os x雪豹
- android夏时令问题
- 酷狗导致django8000端口占用
- matlab信号内插,【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)应用三次样条函数spline实现内插...
- 神还原女神照片!GAN 为百年旧照上色
- sudo apt-get update报错:W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引文件。W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件
- 【Rust 日报】2022-03-27 Google对25名Rust开源贡献者做出奖励
- 美国校园最in俗语大全
- Android手机通讯录备份和恢复项目