ArcGISEngine二次开发(4):属性查询(2)_broken_hook的博客-程序员信息网

技术标签: ArcGIS  arcgis-engine  

属性查询(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();
        }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/broken_hook/article/details/78578320

智能推荐

【Ajax】多次异步请求的顺序以及回调处理问题_章 鱼的博客-程序员信息网

背景通过搜索框进行检索:触发发送检索请求的事件是keyup,也就是当按完每个键之后发送一次检索请求。问题在输入框输入内容,然后快速地删减,有时会发现列表显示的数据和检索的关键字并不匹配;而缓慢地操作则不存在这个问题比如输入“我是中国人”,列表的统计数显示20W条数据;而“我”,则显示有30W条数据;而当快速改变输入框内容时,这两个关键字检索出来的数据量有时不会和原来保持一致。分析通过浏...

RMAN新特性duplicate概述和使用_cizhilan8323的博客-程序员信息网

RMANDUPLICATION复制概述 DUPLICATE命令可以创建完整的运行良好的数据库副本(clone DB)或Physical standby数据库。 DUPLI...

阿里云服务器mysql远程连接一直连不上_单筱风的博客-程序员信息网

一、MySQL 开启远程连接需要先在服务器上登录到 MySQLmysql -u root -p然后 Enter password:二、修改 root 账户的 Host1、打开 mysql 数据库use mysql;2、查看 user 数据表当前已有的数据select * from user;3、修改一条 root 数据,并刷新MySQL的系统权限相关表update user set Host = '%' where Host = 'localhost' and User='root'

mpi环境配置_小白-52HZ的博客-程序员信息网_mpi环境

单机上mpi环境配置1.配置好ssh命令如下:在当前主机下,执行ssh-keygen,将提示密钥存放的目录,敲回车确定。提示输入密码,为了运行程序时方便,不需要输入密码,直接输入两次回车确认即可。然后将共有密钥放在自己的认证密钥里,cd ~/.ssh 进入.ssh后执行 cp id_rsa.pub authorized_keys这样ssh 时不用输入密码了。修改 /et...

Keras关于训练冻结部分层_团长sama的博客-程序员信息网_keras 冻结某层

文章目录设置冻结层有两种方式。(不推荐)是在搭建网络时,直接将某层的trainable设置为false,例如:layers.Conv2D(filters1, (1, 1), trainable=False)(input_tensor)在网络搭建完成时,遍历model.layer,然后将layer.trainable设置为False:# 冻结网络倒数的3层for layer i...

sklearn之train_test_split()解析_愤怒的汽水的博客-程序员信息网_sklearn spilt

train_test_split()是sklearn.cross_validation模块中用来随机划分训练集和测试集,以Iris数据集为例。有以下四个特征sepal length in cmsepal width in cmpetal length in cmpetal width in cm分为3个类别:Iris SetosaIris VersicolourIris V...

随便推点

javamail发送邮件、下载邮件核心功能_zhouhao1256的博客-程序员信息网

common-email 之前一直在做邮件系统,涉及到邮件发送(直发、代发)、邮件下载(国内、国外)、服务商配置、代理(主要针对国外)、日志收集、消息通知、分布式锁、水平拆分等功能, 由于涉及公司隐私问题,在这里提供发邮件和下载邮件核心介绍,我是以demo方式提供出来的,不过不影响核心功能和介绍发送邮件功能点smtp协议发送邮件支持可切换ssl非ssl方式支持velocity渲染模

调用keras时报错_20lg_w的博客-程序员信息网

cannot import name 'get_config' from 'tensorflow.python.eager.context'

Java-Swing窗口风格设置为Windows_Devilamaycry的博客-程序员信息网_swing jframe 设置风格

Java的Swing弹窗是由UIManager类来进行管理。此处是非常简单直接的几行代码,用于将开发的弹窗样式设置为Windows系统自带风格。注意:1.最好放在设置的JFrame弹窗代码前面,也就是最开头的位置,以防止初始化窗口的时候风格设置不成功。 try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundE

Keras报错:`Dense` can accept only 1 positional arguments ('units',), but you passed the followin....._ReddyGo的博客-程序员信息网

修改如下:model.add(Dense(input_dim=3, output_dim=10))      #添加输入层(3节点)到隐藏层(10节点)的连接model.add(Dense(input_dim=10, output_dim=1))      #添加隐藏层(10节点)到输出层(1节点)的连接...

php加入购物车怎样实现_php购物车是怎么实现的_网易数帆的博客-程序员信息网

php购物车是怎么实现的?PHP简单实现购物车首先,判断是否登录、if(isset($_session['user_id'])){存在;把用户id和商品id,加入购物车表}else{不存在;使用cookie把商品ID和主机IP放入一个数组,把这个数组存入cookie;浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷}假如浏览器把co...

C++ 智能指针share_ptr 和weak_ptr的实现_帅B猪的博客-程序员信息网

class Count{public:Count()????(0),w(0){}int s;//share指针计数int w;//weak指针计数};templateclass Weak_ptr;//先引用templateclass Share_ptr{T * ptr;//管理的指针Count * cnt;//计数public:Share_ptr(T * p = 0):ptr§//构造函数{ptr = p;cnt = new Count();}Share_ptr(Sh

推荐文章

热门文章

相关标签