空间数据查询.docxVIP

  • 4
  • 0
  • 约8.92千字
  • 约 7页
  • 2023-08-03 发布于江西
  • 举报
空间数据查询按查询方式来分, 主要分为两类: 根据属性条件查询对象和根据几何条件 查询对象。无论是根据属性还是根据几何来查询对象,都必须设置相应的查询条件。在 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 aspFeatureLayer=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 ESRI.ArcGIS.Geodatabase.QueryFilterClass(); queryFilter = new 从 queryFiltertextBox 控件中获取查询条件,如下: queryFilter.WhereClause = queryFiltertextBox.Text; 3)查询对象 定义一个游标对象 IFeatureCursor 表示查询到的结果,使用IFeatureLayer 的 Search()方法来 查询,如下代码: ESRI.ArcGIS.Geodatabase.IFeatureCursor featureCursor = pFeatureLayer.Se

文档评论(0)

1亿VIP精品文档

相关文档