数据查询按查询方式来分, 主要分为两类: 根据属性条件查询对象和根据几何条件 查询对象无论是根据属性还是根据几何来查询对象,都必须设置相应的查询条件。在  ArcGIS Engine 中, FeatureLayer 对象IFeatureClass 对象有一个 Search()方法专门用于空间 数据查询同时 ArcGIS Engine 中提供了一个 IQueryFilter 接口来设置查询的条件(属性条 和几何条件)。首先来看一下 IFeatureLayer 接口的 Search()方法,其定义如下:
public IFeatureCursor Search (IQueryFilter queryFilter, bool recycling);
该方法有两个参数:第一个参数 queryFilter 为一个 IQueryFilter 对象,用于指定查询的条件 了;二个参数recycling 为一个 Bool 数据类型,表示查询结果游标是否循环。该方法的返 回值为一个 IFeatureCursor 象,该游标对象表示查询的结果对象。下面就分别根据属性条 件查询对象和根几何条件查询对象来介绍空间数据查询的过程:
一、根据属性条件查询对象
先新建一个项目,设置项目名称为 空间数据查询 ,并在窗体上添加如下图所示控件
(axMapControl1axTOCControl1axLicenseControl1axToolbarControl1):
时 为 了 便 于 设 置 条 件 来 查 询 对 象 , 添 加 如 下 图 所 示 控 件 ( layerComboBox queryFiltertextBox 和根据属性条件查询对象):
其中,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
as
pFeatureLayer=axMapControl1.get_Layer(layerComboBox.SelectedIndex)
ESRI.ArcGIS.Carto.IFeatureLayer;
if (pFeatureLayer == null)
{
MessageBox.Show("选择图层不是 Feature 图层! ");
return;
}
如上代码中,定义一个 IFeatureLayer 对象,该图层对象即为 layerComboBox 控件中选择的 图层如果该图层不是 FeatureLayer,则返回。
2)定义查询条件
首先定义一个查询过滤对象,如下代码所示(由于IQueryFilter 接口位于 Geodatabase 库中, 以还需要添加引用 Geodatabase 库):


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

queryFiltertextBox 控件中获取查询条件,如下:
queryFilter.WhereClause = queryFiltertextBox.Text;
3)查询对象
定义一个游标对象 IFeatureCursor 表示查询到的结果,使用IFeatureLayer Search()方法来 询,如下代码:
ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor  =  pFeatureLayer.Search(queryFilter, false);
4)高亮显示数据