C# ArcEngine 实现点击要素高亮并弹出其属性

简介:

转自 C# ArcEngine 实现点击要素高亮并弹出其属性

 

本文是模仿ArcMap里面的Identify(识别)功能,通过点击要素,使其高亮显示并弹出其属性表!本文只做了点击查询!

复制代码
ITopologicalOperator pTopo;
IGeometry pGeometry;
IFeature pFeature;
IFeatureLayer pFeatureLayer; 
IFeatureCursor pCursor;
ISpatialFilter pFilter;
DataTable dataTable;
for (int i = 0; i < axMapControl1.Map.LayerCount; i++) { pPoint = new PointClass(); pPoint.PutCoords(e.mapX, e.mapY); pTopo = pPoint as ITopologicalOperator;
double m_Radius = 1; pGeometry = pTopo.Buffer(m_Radius); if (pGeometry == null) continue;
axMapControl1.Map.SelectByShape(pGeometry,
null, true);//第三个参数为是否只选中一个 axMapControl1.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null); //选中要素高亮显示 pFilter = new SpatialFilterClass(); pFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; pFilter.Geometry = pGeometry; pFeatureLayer = axMapControl1.Map.get_Layer(i) as IFeatureLayer; pCursor = pFeatureLayer.Search(pFilter, false); pFeature = pCursor.NextFeature();

string fieldName; if (pFeature != null) { if (Application.OpenForms["otherQueryForm"] == null) { otherqueryform = new otherQueryForm(); otherqueryform.Show(); } else { Application.OpenForms["otherQueryForm"].Show(); }//这里主要控制子窗体不会重复弹出
dataTable = new DataTable(); for (int k = 0; k < 2; k++) { if (k == 0) { dataTable.Columns.Add("属性"); } if (k == 1) { dataTable.Columns.Add(""); } } DataRow datarow; for (int j = 0; j < pFeature.Fields.FieldCount; j++) { datarow = dataTable.NewRow(); for (int m = 0; m < 2; m++) { if (m == 0) { fieldName = pFeature.Fields.get_Field(j).Name; datarow[m] = fieldName; } if (m == 1) { if (pFeature.Fields.get_Field(j).Name == "Shape") { if (pFeature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint) { datarow[m] = ""; } If ( pFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolyline) { datarow[m] = "线"; } if (pFeature.Shape.GeometryType == ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon) { datarow[m] = ""; } } else { datarow[m] = pFeature.get_Value(j).ToString(); } } } dataTable.Rows.Add(datarow); } otherqueryform.dataGridView1.DataSource = dataTable; otherqueryform.layerName_dev.Text = pFeatureLayer.Name; otherqueryform.dataGridView1.Refresh(); pFeature = null; break; } }
复制代码

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/6321827.html ,如需转载请自行联系原作者


相关文章
|
9月前
|
C#
c# Gridview 点击checkbox 触发的事件
c# Gridview 点击checkbox 触发的事件
|
9月前
|
存储 安全 编译器
C# 11.0中的泛型属性:类型安全的新篇章
【1月更文挑战第23天】C# 11.0引入了泛型属性的概念,这一新特性为开发者提供了更高级别的类型安全性和灵活性。本文将详细探讨C# 11.0中泛型属性的工作原理、使用场景以及它们对现有编程模式的改进。通过深入了解泛型属性,开发者将能够编写更加健壮、可维护的代码,并充分利用C#语言的最新发展。
|
2月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
112 12
|
9月前
|
存储 编译器 C#
|
5月前
|
安全 C# 索引
C#一分钟浅谈:属性与索引器的定义
本文深入浅出地介绍了C#编程中的属性和索引器。属性让字段更安全,通过访问器方法在读写时执行额外操作,如验证数据有效性;索引器则赋予类数组般的访问方式,支持基于索引的数据访问模式。文章通过示例代码展示了如何定义及使用这两种特性,并提供了常见问题及其解决方案,帮助读者写出更健壮、易维护的代码。希望读者能从中学习到如何有效利用属性和索引器增强C#类的功能性。
129 12
|
6月前
|
存储 安全 编译器
C#中的属性
C#中的属性
61 7
|
8月前
|
开发框架 .NET 编译器
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
程序与技术分享:C#基础知识梳理系列三:C#类成员:常量、字段、属性
52 2
|
7月前
|
C#
C#中使用IntPtr.Size属性来判断当前系统是32位还是64位
这段代码首先检查 `IntPtr.Size`的值,如果是4,则输出"当前系统是32位";如果是8,则输出"当前系统是64位";如果都不是,就输出"未知系统位数"。
111 0
|
9月前
|
存储 JSON C#
C# 通过阿里云接口实现人脸属性识别
C# 通过阿里云接口实现人脸属性识别
|
9月前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法