`
yuanlanxiaup
  • 浏览: 858569 次
文章分类
社区版块
存档分类
最新评论

空间数据查询——根据属性条件查询对象

 
阅读更多

空间数据查询

三峡大学土木水电学院 肖泽云

空间数据查询按查询方式来分,主要分为两类:根据属性条件查询对象和根据几何条件查询对象。无论是根据属性还是根据几何来查询对象,都必须设置相应的查询条件。在ArcGIS Engine中,FeatureLayer对象IFeatureClass对象有一个Search()方法专门用于空间数据查询,同时ArcGIS Engine中提供了一个IQueryFilter接口来设置查询的条件(属性条件和几何条件)。首先来看一下IFeatureLayer接口的Search()方法,其定义如下:

public IFeatureCursor Search (IQueryFilter queryFilter,bool recycling);

该方法有两个参数:第一个参数queryFilter为一个IQueryFilter对象,用于指定查询的条件了;第二个参数recycling为一个Bool数据类型,表示查询结果游标是否循环。该方法的返回值为一个IFeatureCursor对象,该游标对象表示查询的结果对象。下面就分别根据属性条件查询对象和根据几何条件查询对象来介绍空间数据查询的过程:

一、根据属性条件查询对象

首先新建一个项目,设置项目名称为空间数据查询,并在窗体上添加如下图所示控件(axMapControl1axTOCControl1axLicenseControl1axToolbarControl1):

图片

同时为了便于设置条件来查询对象,添加如下图所示控件(layerComboBoxqueryFiltertextBox和根据属性条件查询对象):

图片

其中,layerComboBox控件用于表示要查询的图层,queryFiltertextBox控件表示查询的条件。

1、定义刷新图层函数

在每次添加新数据或打开新地图时,都要更新layerComboBox控件中的显示项来表示当前地图中的图层。定义刷新图层函数RefreshLayer(),其代码如下:

private void RefreshLayer()

{

layerComboBox.Items.Clear();

for (int i = 0; i < axMapControl1.LayerCount; i++)

{

layerComboBox.Items.Add(axMapControl1.get_Layer(i).Name);

}

layerComboBox.Text = layerComboBox.Items[0].ToString();

}

2、根据属性条件查询对象

根据属性条件查询对象主要通过根据属性条件查询对象按钮的Click()事件来实现,下面介绍的代码都在根据属性条件查询对象按钮的Click()事件中编写。

1)获取查询的图层

首先要获取到查询的图层对象,如下定义:

ESRI.ArcGIS.Carto.IFeatureLayer pFeatureLayer=axMapControl1.get_Layer(layerComboBox.SelectedIndex) as ESRI.ArcGIS.Carto.IFeatureLayer;

if (pFeatureLayer == null)

{

MessageBox.Show("选择图层不是Feature图层!");

return;

}

如上代码中,定义一个IFeatureLayer对象,该图层对象即为layerComboBox控件中选择的图层,如果该图层不是FeatureLayer,则返回。

2)定义查询条件

首先定义一个查询过滤对象,如下代码所示(由于IQueryFilter接口位于Geodatabase库中,所以还需要添加引用Geodatabase库):

ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass();

queryFiltertextBox控件中获取查询条件,如下:

queryFilter.WhereClause = queryFiltertextBox.Text;

3)查询对象

定义一个游标对象IFeatureCursor表示查询到的结果,使用IFeatureLayerSearch()方法来查询,如下代码:

ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = pFeatureLayer.Search(queryFilter, false);

4)高亮显示数据

高亮显示数据可以使用axMapControl1FlashShape()方法来实现,如下代码:

ESRI.ArcGIS.Geodatabase.IFeature pFeature ;

while((pFeature= featureCursor.NextFeature())!=null)

{

axMapControl1.FlashShape(pFeature.Shape);

}

添加一些相关错误处理方式,最后根据属性条件查询对象按钮的Click()事件代码如下:

private void 根据属性条件查询对象_Click(object sender, EventArgs e)

{

ESRI.ArcGIS.Carto.IFeatureLayer pFeatureLayer=axMapControl1.get_Layer(layerComboBox.SelectedIndex) as ESRI.ArcGIS.Carto.IFeatureLayer;

if (pFeatureLayer == null)

{

MessageBox.Show("选择图层不是Feature图层!");

return;

}

ESRI.ArcGIS.Geodatabase.IQueryFilter queryFilter = new ESRI.ArcGIS.Geodatabase.QueryFilterClass();

queryFilter.WhereClause = queryFiltertextBox.Text;

try

{

ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = pFeatureLayer.Search(queryFilter, false);

ESRI.ArcGIS.Geodatabase.IFeature pFeature;

while ((pFeature = featureCursor.NextFeature()) != null)

{

axMapControl1.FlashShape(pFeature.Shape);

}

}

catch (Exception pException)

{

MessageBox.Show(pException.Message);

}

}

值得注意的是:queryFiltertextBox控件中输入的查询条件需符号要求,如查询属性字段Elevation800的数据对象,如果属性字段Elevation的数据类型为数值型(浮点型、整型、双精度),则直接输入“Elevation = 800”即可。如果属性字段Elevation的数据类型为Text,则输入“Elevation = ‘800’”,需要在值左右侧加上单引号。

运行程序,其结果如下图所示:


图片

源码及开发文档下载地址(保存于网络硬盘,请勿直接复制链接下载!):
http://www.brsbox.com/filebox/up ... bbb3/dirids/1501532

分享到:
评论

相关推荐

    C#全能速查宝典

    《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...

    大数据导论(1)——“大数据”相关概念、5V特征、数据类型.pdf

    记录数据集(是记录的集合,即数据库中的数据集)、基于图形的数据集(数据对 象本⾝⽤图形表⽰,且包含数据对象之间的联系)和有序数据集(数据集属性涉及时间及空间上的联系,存储时间序列数据、空间数据 等)。...

    从入门到精通HTML5——PDF——网盘链接

     10.1.9 滚动空间属性——hspace、vspace 209  10.2 添加背景音乐 211  10.2.1 设置背景音乐——bgsound 211  10.2.2 设置循环播放次数——loop 212  10.3 添加多媒体文件 213  10.3.1 添加多媒体文件标记...

    5.4空间数据库管理系统.pdf

    空间数据库管理系统 空间数据库管理系统 本节 内容 文件与关系数据库混合管理 5.4.1 全关系型空间数据库管理 5.4.2 对象关系数据库管理 5.4.3 面向对象空间数据库管理 5.4.4 空间数据管理 5.4 文件与关系数据库混合...

    数据库系统概论5版第三章关系数据库标准语言SQL【上】——数据定义(create、drop。。。.pdf

    :所要定义的基本表的名字 列名 &gt; :组成该表的各个属性(列) 列级完整性约束条件 &gt; :涉及相应属性列的完整性约束条件(这些完整性约束条件被存⼊系统的数据字典中) 表级完整性约束条件 &gt; :涉及⼀个或多个属性列...

    C#入门——面向对象等,代码+注释

    第8天 01面向对象复习 02命名空间 03字符串的高级用法 04字符串练习 05继承 Driver Person Program Student Teacher 06继承的练习 第9天 00里氏转换 01里氏转换 M1 M2 M3 M4 person Program 02protected ArrayList...

    论文研究-一种支持非度量空间中近似查询的索引技术.pdf

    针对多媒体数据对象进行研究,发现其具有非度量空间的属性,在建立多媒体数据索引时,采用非度量空间中的计算方法使得所建索引更加有效。结合聚类和pivots技术,提出一种支持非度量空间中的对象索引结构——M -tree...

    数据挖掘论文合集-242篇(part1)

    SDSS中空间数据挖掘部件的设计与实现.kdh swlms.pdf Web上的数据挖掘技术和工具设计.kdh Web使用模式研究中的数据挖掘.caj Web数据挖掘技术及工具研究.kdh Web数据挖掘技术探讨.kdh Web数据挖掘的BN实现方案.kdh XML...

    数据挖掘在各行业的应用论文

    空间数据挖掘技术.caj 数据仓库与数据挖掘技术及其在科技情报业的应用前景.caj 相关案件的数据挖掘.caj 数据挖掘技术.caj 一种实时过程控制中的数据挖掘算法研究.caj EIS 环境下的数据挖掘技术的研究.caj 数据挖掘...

    数据挖掘论文合集-242篇(part3)

    SDSS中空间数据挖掘部件的设计与实现.kdh swlms.pdf Web上的数据挖掘技术和工具设计.kdh Web使用模式研究中的数据挖掘.caj Web数据挖掘技术及工具研究.kdh Web数据挖掘技术探讨.kdh Web数据挖掘的BN实现方案.kdh XML...

    数据挖掘论文合集-242篇(part2)

    SDSS中空间数据挖掘部件的设计与实现.kdh swlms.pdf Web上的数据挖掘技术和工具设计.kdh Web使用模式研究中的数据挖掘.caj Web数据挖掘技术及工具研究.kdh Web数据挖掘技术探讨.kdh Web数据挖掘的BN实现方案.kdh XML...

    空间数据库管理系统概论.docx

    空间数据引擎和对象关系空间数据库的对比 项目 空间数据引擎(寄生模式) 对象关系空间数据库(融合模式) 技术特点 中间件技术 数据库技术 代表产品 ARCSDE、SuperMap SDX+、MapGIS SDE、TerraLib(开源) Oracle ...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——文件复制 11 1.1.7 robocopy——Windows的可靠文件复制 13 1.1.8 del——删除文件 22 1.1.9 expand——解压缩文件...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——文件复制 11 1.1.7 robocopy——Windows的可靠文件复制 13 1.1.8 del——删除文件 22 1.1.9 expand——解压缩文件...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——文件复制 11 1.1.7 robocopy——Windows的可靠文件复制 13 1.1.8 del——删除文件 22 1.1.9 expand——解压缩文件...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——文件复制 11 1.1.7 robocopy——Windows的可靠文件复制 13 1.1.8 del——删除文件 22 1.1.9 expand——解压缩文件...

    MATLAB 7_0实用指南 (上册)

    Jalpha查找表 14.3.3示例——将数据映射到颜色或透明度 14.4选择一个alpha查找表 第15章交互操作 15.1视点和相机 15.1.1用方位角和仰角设置视点 15.1.2交互工具——相机 15.2用相机工具条进行...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    1.1.3 attrib——文件属性 4 1.1.4 cipher——文件加密 5 1.1.5 comp——文件比较 10 1.1.6 copy——文件复制 11 1.1.7 robocopy——Windows的可靠文件复制 13 1.1.8 del——删除文件 22 1.1.9 expand——解压缩文件...

    c#学习笔记——学习心得

    字段:和属性相同,是用来存储对象的值,可以直接访问数据且不能对数据添加任何限制,但是属性不能且可以对数据添加访问限制。一个在类或结构的定义中声明的变量。可以被这个类或者结构的所有成员函数(方法、构造...

Global site tag (gtag.js) - Google Analytics