C#AE练习 (4)几何形体及其操作

2023-10-27 22:40

本文主要是介绍C#AE练习 (4)几何形体及其操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要求:

  编写程序,选中要素并对其进行Buffer,而后选中缓冲区内的要素。
在这里插入图片描述

1、在地图上右键单击,根据鼠标位置查询到Parcels中的Parcel。在窗体上显示该Parcel的投影信息以及“Landuse”字段值。
 2、根据给定半径对1中的Parcel做缓冲区,并选中与缓冲区相交的所有parcel。


作答:

1.点选要素,显示相关信息

 private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e){if (e.button == 2){//------------点选是根据鼠标点创建一个缓冲区,然后再用SelectByShape方法-------///创建鼠标点击的位置PointIPoint pPoint = new PointClass();pPoint.PutCoords(e.mapX, e.mapY); //PutCoords(X:Double,Y:Double)//创建缓冲区ITopologicalOperator pTO = pPoint as ITopologicalOperator;IGeometry pGeometry = pTO.Buffer(0); //半径为0点的缓冲区=点//选择Feature,IMap接口的方法SelectShape(Shape,env,justOne)//从Layer中依靠一个图形的范围shape和一个选择的环境来选择要素,在所有图层中只从IFeatureLayer的图层中进行选择axMapControl1.Map.SelectByShape(pGeometry, null, false);axMapControl1.Refresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeoSelection, null, null);----------------------------------------------------/------------☆访问对Map中FeatureLayer被选中的要素----------------//IFeatureLayer pFL = axMapControl1.Map.get_Layer(0) as IFeatureLayer;IFeatureClass pFC = pFL.FeatureClass;//使用了FeatureLayer类的IFeatureSelection接口,及接口的SelectionSet属性IFeatureSelection pFS = pFL as IFeatureSelection;ISelectionSet pSS = pFS.SelectionSet;//访问SelectionSet中的每个要素ICursor pCursor;pSS.Search(null, true, out pCursor);IFeatureCursor pFCur = pCursor as IFeatureCursor;IFeature pFea = pFCur.NextFeature();while (pFea != null){textBox2.Clear();textBox3.Clear();IGeoDataset pGD = pFC as IGeoDataset;textBox2.Text = pGD.SpatialReference.Name.ToString();int FieldIndex = pFea.Fields.FindField("Landuse");if (pFea.get_Value(FieldIndex).ToString() != null)textBox3.Text = pFea.get_Value(FieldIndex).ToString();elsetextBox3.Text = "Land Use Unknown!";pFea = pFCur.NextFeature();}}
}

2.选中与缓冲区分析相交的要素

private void button1_Click(object sender, EventArgs e)
{IFeatureLayer pFL = axMapControl1.Map.get_Layer(0) as IFeatureLayer;IFeatureClass pFC = pFL.FeatureClass;//☆获取选中要素的属性(IMap.FeatureSelection方法获取Feature的属性信息)ISelection pSelection = axMapControl1.Map.FeatureSelection; //获取选择集IEnumFeatureSetup pEnumFS = pSelection as IEnumFeatureSetup; //打开属性标签pEnumFS.AllFields = true; IEnumFeature pEnumF = pSelection as IEnumFeature; //读取属性IFeature pFea = pEnumF.Next();		if (pFea != null){axMapControl1.Map.ClearSelection(); //清空选择的要素//缓冲区IGeometry pGeometry = pFea.ShapeITopologicalOperator pTO = pGeometry as ITopologicalOperator;IGeometry pGeometry1 = pTO.Buffer(int.Parse(textBox1.Text));IFeatureSelection pFS = pFL as IFeatureSelection;ISpatialFilter pSF = new SpatialFilterClass();pSF.Geometry = pGeometry1;pSF.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; //地图中的是面要素pFS.SelectFeatures(pSF, esriSelectionResultEnum.esriSelectionResultNew, false);/* (优化代码,可以用上面的IFeatureSelectionn的SelectFeatures 替代 axMapControl1.Map.SelectFeaure)IFeatureCursor pFCur = pFC.Search(pSF, true);IFeature pFea1 = pFCur.NextFeature();while (pFea1 != null){axMapControl1.Map.SelectFeature(pFL, pFea1); //选择要素;IMap接口的SelectFeature(Layer,Feature) 从Layer图层选择要素pFea1 = pFCur.NextFeature();} */}axMapControl1.ActiveView.Refresh();
}

参考文章:
https://blog.csdn.net/m0_37768631/article/details/86037509

这篇关于C#AE练习 (4)几何形体及其操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288904

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum