AE中地图查询方式

来源:互联网 发布:java界面中显示表格 编辑:程序博客网 时间:2024/04/29 09:22

地图查询主要有两种查询:空间查询和属性查询

所用到知识点:

Cursor(游标)对象

  本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者要素对象(Feature)的桥梁而已。

  游标有三种类型,即查询游标、插入游标和更新游标。每一种游标都是通过与之相适应的方法来获得的,如Search、Insert和Update方法。更新和插入游标都需要使用一个过滤器(Filter)对象,因为它们首先必须获得需要进行操作的要素。

  FeatureCursor是Cursor的一个子类,指向一个或多个要素,它实现了IFeatureCursor接口,ArcGISEngine开发所对矢量图层实现查询功能都是实行IFeatureCursor;

  其实凡是Search方法,如ILayer::Search、ITable::Search等都可以返回一个游标对象。这个Cursor指向了那些符合选择条件的要素

IFeatureCursor接口重要成员:

NextFeature(方法,将游标向前跳到下一个位置,并且返回该位置的Feature)
UpdateFeature(Feature) (方法,对当前游标位置的Feature进行更新)

InsertFeature(buffer)(方法,用参数传进来的属性值插入一个新的要素到数据库中,返回该插入新的Feature的ID值,其中参数类型为IFeatureBuffer)

QueryFilter和SpatialFilter对象

 ArcGISEngine提供了QueryFilter和SpatialFilter两个过滤器对象来配合完成查询条件的设置,从而查询到想要的数据。QueryFilter过滤器主要用于对属性数据查询条件的设置,它主要实现IQueryFilter接口从而实现属性查询功能。

IQueryFilter接口成员:

WhereClause(读写属性,为过滤器设置条件语句)
注意!各种不同的数据,设置条件查询语句的语法是不相同的,如一个shp文件在设置字段的时候要加“””双引号,而在SDE数据连接中,则什么都不加;在gdb文件的语句中,符号是“*”,而在SDE或者shp文件查询中则是“%”
SubFields(读写,为过滤器设置提供赛选的字段,用逗号来分隔每一个逗号,如果不设置该属性,则当做所有字段均为查找字段)

SpatialFilter过滤器主要用于空间范围查询条件的设置,它主要实现ISpatialFilter(继承IQueryFilter接口)接口从而实现空间查询功能。

其中SpatialRel属性是一个确定查询几何对象与目标要素几何对象关系的枚举值。

3 要素选择集(FeatureSelection)对象

   获得符合某种条件的数据,一般有两种不同的手段:

一种使用Search方法,它返回一个指向数据的查询Cursor对象:

  IFeatureCursor pFeatCursor =pFeatureLayer.Search(pFilter,false);
  IFeaturepFeature=pFeatCursor.NextFeature();

另一种是使用SelectFeatures方法构造一个选择集(SelectionSet),然后在选择集中得到Cursor,后者麻烦了点,但是得到的要素选择集在Map上会高亮度显示。

      IFeatureSelection pFSelection=pFeatureLayer asIFeatureSelection;
      pFSelection.SelectFeatures(pSpatialFilter,esriSelectionResultEnum.esriSelectionResultNew,false);
      ISelectionSetpSelectionset=pFSelection.SelectionSet;
      ICursor pCursor;
      pSelectionset.Search(null,true,outpCursor);
      IFeatureCursor pFeatCursor=pCursor as IFeatureCursor;
      IFeature pFeature=pFeatCursor.NextFeature();

IFeatureSelection接口重要成员:

SelectFeatures (Filter, Method, justOne )(方法,根据指定的标准过滤器filter和方法,选择要素,第一个参数为QueryFilter类型的变量,第二个参数为esriSelectionResultEnum类型的变量,第三个参数为布尔型变量,通常为false)

当然还有设置颜色的SelectionColor属性等;

4 SelectionSet对象

    支持ISelectionSet接口,用于管理和查询一个选择集。

Search(IQueryFilter,bool,ref ICursor)用于在选择集内进行再选择,

0 0