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

相关文章

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT