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