属性查询(2)

使用IGeometry接口TrackPolygon方法建立对象实现属性查询
使用ISpatialFilter接口SpatialRel属性定义Intersects取交集为查询对象
之后将查询到的(FindField方法)属性显示在新的windowsform中的listbox中显示属性字段
单击Listbox中的属性字段,地图高亮显示对应多边形


添加引用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;

添加ToolTripButton,添加Click事件代码如下

ICommand spatialqueryintersect = new spatialquery();
spatialqueryintersect.OnCreate(axMapControl1.Object);
spatialqueryintersect.OnClick();
ITool ptool = spatialqueryintersect as ITool;
axMapControl1.CurrentTool = ptool;



新建windowsform窗体,并在里边添加Listbox,Modifiers属性Public,否则在其他窗体的事件代码中不能检测到该控件,事件代码如下

//定义全局变量
public IMapControlDefault spaqury;//必须添加public关键字,因为要从新建的类中传来Imapcontrol对象
//private void listBox1_Click(object sender, EventArgs e){IFeatureLayer pFeatureLayer = spaqury.get_Layer(0) as     IFeatureLayer;IQueryFilter pqueryfilter = new QueryFilterClass();pqueryfilter.SubFields = "*";pqueryfilter.WhereClause = "NAME" + "=" + "'" + this.listBox1.SelectedItem.ToString() + "'";IFeatureCursor pfeaturecursor = pFeatureLayer.Search(pqueryfilter, false);IFeature pfeature = pfeaturecursor.NextFeature();spaqury.FlashShape(pfeature.Shape, 3, 500, null);return; }

新建类库,手动实现Icommand,ITool 接口,定义全局变量:

IMapControlDefault m_app;
//Onclick函数设为空,因为单击Button没有立刻开始画多边形,而是在单击axmapcontrol对象以后开始画
public void OnClick(){}
//传入ImapControl对象
public void OnCreate(object Hook){m_app = Hook as IMapControlDefault;}
//其他接口置为空
public void OnMouseDown(int button, int shift, int x, int y){IGeometry pGeometry = m_app.TrackPolygon();IFeatureLayer pfeatureLayer = m_app.get_Layer(0) as IFeatureLayer;ISpatialFilter pSpatialfilter =new SpatialFilterClass();pSpatialfilter.SubFields="*";pSpatialfilter.GeometryField="shape";//所画图形类型pSpatialfilter.Geometry=pGeometry;pSpatialfilter.SpatialRel=esriSpatialRelEnum.esriSpatialRelIntersects;//空间交集IFeatureCursor pfeaturecursor = pfeatureLayer.Search(pSpatialfilter, false);IFeature pfeature = pfeaturecursor.NextFeature();int ifname = pfeaturecursor.FindField("NAME");//属性查询字段SpatialQueryListBox listboxwindows = new SpatialQueryListBox();//SpatialQueryListBox为新建的windowsform窗体listboxwindows.spaqury = m_app;//该窗体中的全局变量while (pfeature != null){listboxwindows.listBox1.Items.Add(pfeature.get_Value(ifname).ToString());m_app.FlashShape(pfeature.Shape, 3, 500, null);pfeature = pfeaturecursor.NextFeature();}listboxwindows.Show();}

ArcGISEngine二次开发(4):属性查询(2)相关推荐

  1. Arcgis Engine 二次开发之属性查询

    一.类库接口描述 1.IQueryFilter接口 过滤数据通过属性值或者属性之间的关系,一般为其赋WhereClause和SubFields属性. 2.IFeatureClass接口 (1)Sear ...

  2. 关于objectArx /CAD二次开发中“属性块”操作

    关于objectArx /CAD二次开发中"属性块"操作 属性块就是在图块上附加一些文字属性(Attribute),这些文字可以非常方便地修改.属性块被广泛应用在工程设计和机械设计 ...

  3. Revit 二次开发参照属性

    1.模型类别 HVAC 区 : OST_HVAC_Zones 专用设备 : OST_SpecialityEquipment 体量 : OST_Mass 停车场 : OST_Parking 光栅图像 : ...

  4. UG/NX10二次开发学习视频目录整理(NXOPEN基础篇)

    为了方便搜索需要的视频资料,整理了唐康林老师发布在B站的视频目录,支持全局目录搜索,点击直达视频. NX10二次开发(NXOPEN基础篇) P1第07章-01-NX10二次开发之与用户界面的结合运用[ ...

  5. 使软件可二次开发_RobotStudio二次开发:Smart组件I/O信号声明

    机器人I/O信号说明 Smart组件是RobotStudio软件实现虚拟仿真必不可少的功能,它是机器人I/O信号对仿真对象运动属性控制的连接桥梁.由此可以看出,Smart组件其实就是由I/O信号控制功 ...

  6. QGis二次开发基础 -- 根据属性查询要素

    属性查询是GIS应用不可缺少的重要功能,尤其是在各种业务系统中,根据用户输入相应的查询条件,从属性要素中快速定位到用户感兴趣的要素,为业务应用提供了便利.本文就来聊一聊QGis二次开发中如何实现属性查 ...

  7. ArcGIS二次开发基础教程(04):有关字段的操作和简单属性及空间查询

    ArcGIS二次开发基础教程(04):有关字段的操作和简单属性及空间查询 属性 字段的添加.删除和查找 IFeatureLayer GetLayerByName(string name) {ILaye ...

  8. AE开发基础实验二(空间查询之按属性查询)

       通过空间数据查询快速实现空间数据选择.查询与统计是GIS数据操作的基本功能,同时也是对特定数据子集进行应用和空间分析的基础.按属性查询是根据属性条件,对某个要素图层查询满足条件的地理要素.本次实 ...

  9. 基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作

    基于C#的AE二次开发之图层右键菜单打开属性表及图层相关操作 我的开发环境为ArcGIS Engine 10.2与Visual studio2010.主地图名称为axMapControl1,Toc目录 ...

最新文章

  1. 2014年国内最热门的.NET开源平台
  2. Spring工厂注入例子
  3. 【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )
  4. Java 8 - 时间API
  5. [html] html中如何使用svg?
  6. python得到列表list的交集与差集
  7. “有趣”的投影:当PCA失效时怎么办?
  8. 《为大量出现的KPI流快速部署异常检测模型》 笔记
  9. ireport怎么套打_柳州男孩小指被螺母套牢,还有熊娃被卡进这地方!消防员笑抽,网友:日常打“卡”...
  10. 搜狗拼音输入法4.2_巧用搜狗快速输入特殊字符与表情字符画
  11. Django下载超时
  12. 南方cass10.1中文版
  13. php聊天室发送表情,聊天室之表情发送
  14. Android Q版本读取SDcard
  15. 少儿C++编程从入门到进阶 信奥学奥赛从启蒙到NOI、ACM-ICPC(一)
  16. 8.22 问题 B: 海岛争霸
  17. 一些关于保研夏令营的心得体会!
  18. MATLAB批量处理生成profili生成的翼型数据
  19. 办公知识:有关如何PDF转Word文档的方法分享
  20. 使用Python编写爬虫程序(代码详细注释),获取彼岸图网的图片

热门文章

  1. 推进制造企业数字化转型应坚持的原则
  2. 打通任督二脉,成为OI侠客的秘笈,在!这!里!
  3. 华为推出AntRbot RPA,助力“数智员工”开启新型工作模式
  4. 越位讲解——足球世界杯观看指南
  5. 实验三+087+饶慧敏
  6. Android Studio 3
  7. JAVA-快速接入第三方应用登录(QQ、微信、微博)
  8. 如何在PowerPoint中使用水印
  9. linux编译GDAL
  10. java校园招聘华为_【华为Java面试】2020华为校园招聘提前批-看准网