ArcEngine实现多边形内部的挖洞操作
在一般的数据编辑流程中,有些时候可能会涉及到多边形内部的挖洞操作。在ArcEngine中,一般可以通过两种方式实现挖洞操作。一种是叠置分析,这主要是针对图层与图层之间的操作,我会在后续的博客中进行介绍,另一种则是用户自己绘制多边形实现挖洞操作,这主要是利用ITopologicalOperator
接口进行实现。先来看一下效果图:
代码如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
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(@"E:\Users\dsf\Desktop\无标题.mxd");}// OnMouseDown事件private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){IFeatureClass pFeatureClass = (axMapControl1.get_Layer(0) as IFeatureLayer).FeatureClass;IGeometry pGeometry = axMapControl1.TrackPolygon();// 空间过滤器ISpatialFilter pSpatialFilter = new SpatialFilter();pSpatialFilter.AddField("Shape");pSpatialFilter.Geometry = pGeometry;pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;// 要素游标IFeatureCursor pFeatureCursor = pFeatureClass.Search(pSpatialFilter, true);IFeature pFeature = pFeatureCursor.NextFeature();if (pFeature == null){return;}// 遍历游标while (pFeature != null){ITopologicalOperator pTopologicalOperator = pFeature.ShapeCopy as ITopologicalOperator;pFeature.Shape = pTopologicalOperator.Difference(pGeometry);pFeature.Store();pFeature = pFeatureCursor.NextFeature();}// 刷新地图System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);axMapControl1.ActiveView.Refresh();}}
}
ArcEngine实现多边形内部的挖洞操作相关推荐
- 物理挖洞之分块 !Cocos Creator !
减少多边形计算!画饼分之- 效果预览 回顾 在 物理挖洞之链条!实现!(含视频讲解) 中介绍了用 PolyBool 和链条组件(cc.PhysicsChainCollider)实现物理挖洞的方法. 虽 ...
- php挖洞提权,挖洞经验 | 看我如何发现GitHub提权漏洞获得$10000赏金
之前,我从没参加过GitHub官方的一些漏洞众测项目,在HackerOne发起的HackTheWorld比赛中,主办方宣传除了赏金以外,还有机会获得Github提供的终身无限制私有库(unlimite ...
- ArcGIS面矢量挖洞
以下面的影像为例: 问题导向: 制作建筑物样本标签时,建筑物聚集群中有黑色阴影,为了避免在模型训练(深度学习)中出现干扰,所以在勾画覆盖建筑物聚集区的面矢量后,需要将中间的黑色阴影挖除.下面是在Arc ...
- 【超图】SuperMap iDesktop 倾斜摄影数据隧道构建——挖洞
作者:taco 前言 在很多交通的项目场景中,通常会有隧道的模型数据.但是隧道的数据会和其他的数据出现一些"冲突". 比如我的地形数据或者倾斜数据会将洞口给封住.那这就与实际应用场 ...
- 详述 Discord Desktop app RCE 挖洞经过,最后得$5000 + $300 (含 PoC 视频)
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 几个月前,我在 Discord 桌面应用中发现了一个远程代码执行漏洞,并把漏洞报告提交给 Discord 公司的漏洞奖励计划.这个 R ...
- 沙场白帽老兵聊未来的挖洞方向及其它
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 可以说,Ziot(真名 Brett Buerhaus)和网络安全同呼吸共命运.目前他在 Blizzard Entertainment ...
- 白天做安全,晚上去挖洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 今天带来的是Kaung Htete Aung (@ris) 和 Samuel Eng (@samengmg) 的故事.他们来自新加坡, ...
- 【经验总结】小白挖洞十天经验分享
0x01 前言 十天是指六月三十号到七月九号这十天的时间,这段时间正值暑假刚开始,虽然知道现在需要备战考研,但是看了几天书后却怎么也看不进去,这时刚好有个作业就是挖洞,于是再一次把考研的书扔到了一边. ...
- 记一次src挖洞实战——逻辑漏洞
前言 在学习了大量web逻辑漏洞的知识后,想进行实战.练练手.作为小菜鸡的我,这是我第二次进行实战挖洞,可能会存在许多问题.望各位大师傅多多指点. 闲话少说,直接开整 实战 1.信息收集 首先,在sr ...
最新文章
- 综述:PyTorch显存机制分析
- jQuery——获取当前索引值
- c语言用数组实现循环移位,如何将一个数组的元素循环左移?
- TCP/IP 协议标准简单描述
- Linux下文件描述符
- 安卓自动化测试(一)
- MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
- 五步法颈椎病自我按摩图解
- 数学图形之SineSurface与粽子曲面
- 拉取远程分支_git clone切换分支步骤,代理设置,作者信息设置
- CentOS7 的开机自启动systemctl
- C++中模块(DLL)对外暴露接口的几种方式
- 构建Postfix邮件系统(一) -- postfix+dovecot
- 深浅拷贝和数列,变量的区别
- RX8025 RTC闹钟唤醒Alarm_D的初始化
- [Java,IDEA]连接oracle的关于oracle.jdbc.driver.OracleDriver一直驱动加载失败的原因
- 全民一起玩Python 之 基础篇视频教程
- java 支付宝支付 demo_java开发支付宝支付详细流程_demo的运行
- html 页面自动弹出,javaScript实现自动弹出页面
- dfuse 和 EOS Studio 携手让开发者工具更上一层楼
热门文章
- Python制作当年第一款真正意义上的手机游戏——贪吃蛇游戏
- SMT表面贴片工序详解
- 大数据的监控和数据准确性保证
- Swift --- 扩展(Extention)
- matlab 语音识别为文字,语音识别(Speech Recognition)是让机器通过识别和理解过程把语音信号转变为相应的文本...
- 我的第一个Android应用BMI-深入浅出Android
- 病毒性感冒和细菌性感冒怎样区分
- Intellij IDEA集成sencha插件开发Extjs应用
- 谷歌手机地图中文java_谷歌地图开发(1)使用MapView显示地图
- 策略模式(用策略模式实现我们淘宝,京东,美团等等简易满减活动)