ArcEngine开发之属性查询

属性查询即基于空间数据的属性数据的查询,通过用户提交SQL语言中的where语句定义的查询条件,对属性数据进行搜索,从而得到查询结果的操作。

相关的类与接口

与属性查询功能相关的类主要有QureyFilter、QueryDef、Cursor、FeatureCursor等。涉及的接口有IQueryFilter、IQueryDef、ICursor、IFeatureCursor以及IFeatureSelection等。以上的类和接口都位于ArcGIS.Geodatabase命名空间中。

1.QueryFilter类

该类用于根据属性值或关系来过滤数据,它实现了IQueryFilter接口,该接口主要有以下的接口和方法。

1)WhereClause属性

设置用来过滤数据的where条件子句。该子句使用SQL表达式来定义过滤数据的条件,可以使用运算符、通配符、函数等字符来构成where子句。具体的语法根据数据源的不同而有所不同。

2)SubField属性

定义用于数过滤的属性字段列表,如果列表有多项,则每项之间用英文逗号隔开,默认为*,意味着返回结果中包含所有字段,否则可以自定义需要返回的字段。

2.QueryDef类

该类是ESRI的查询定义类,为ArcGIS Engine中的Class类,不能被直接创建,可以由IFeatureWorkspace接口的CreateQueryDef方法创建。它实现了IQueryDef接口,该接口的成员用来操作基于属性的查询,主要有一下的属性和方法:

1)Tables属性:该属性定义所查询表的名称和列表,如果列表有多项,则每项之间用英文逗号隔开。

2)WhereClause属性:该属性的方法与IQueryFilter接口中的WhereClause属性的用法相同。

3)SubField属性:该属性的用法与IQueryFilter接口中的SubField属性用法相同。

4)Evaluate方法:该方法定义的查询并返回结果集的游标,该游标为ICursor接口类型。

3.Cursor类

该类是ESRI的游标类,为ArcGIS Engine中的Class类,不能直接被创建,可以由相关接口中的方法创建。

游标的解释:游标是数据库中的概念,他是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,用户可以从游标中逐一获取上述的执行结果。从本质上讲,游标是一种能够从包括多条数据记录的结果集中每次提取一条记录的机制,因此,ArcGIS中使用游标的概念来操作各类查询的结果。游标的接口主要包括ICursor接口和IFeatureCursor接口,IFeatureCursor接口继承与ICursor接口,ICursor接口主要用于操作数据行,IFeatureCursor接口主要用来操作要素Feature。

Cursor类主要实现了ICursor接口,该接口的成员用来获取枚举的行和列的集合,或用来更新、删除和插入数据行。使用NextRow方法,将游标的位置向前移动一位,并返回该位置的行对象。

4.FeatureCursor类

该类是ESRI的要素游标类,为ArcGIS Eninge中的Class类,不能被直接创建,同样可以由相关接口中的方法创建。它实现了IFeatureCursor接口,该接口的成员的用法和ICursor接口的成员用法类似,区别是其操作的对象是要素。重要使用NextFeature方法(IFeature NextFeature),将游标的位置向前移动一位,并返回给位置的要素对象。

5.FeatureLayer类

该类主要操作要素的集合及要素的可视化表达,它实现了IFeatureLayer接口和IFeatureSelection接口。

1)IFeatureLayer接口:该接口的成员主要是要素图层各类常用属性和操作。其与查询相关的属性和方法有:

(1)Selectable属性:用于获取或设置图层是否可被选择。

(2)FeatureClass属性:用于获取或设置图层的要素类

(3)Search方法:根据设置的查询条件创建查询结果的游标。其参数包括IQueryFilter接口的查询过滤器,以及布尔类型的参数来确定游标是否需要被回收。该方法的返回值为IFeatureCursor类型

2)IFeatureSelection接口:该接口的成员用来控制图层的要素选择集,其中与查询相关的属性和方法有:

(1)SelectionFeature方法:用于根据设置的查询条件和选择方法等来选择要素。其参数包括IQueryFilter接口的查询过滤器,esriSelectionResultEnum枚举类型的选择集生成方法,以及布尔型的参数控制是否只选择一个要素。该方法没有返回值。

(2)SelectionSet属性。设置或获取单个矢量图层的选择集,其值为ISelectionSet接口类型。

6.FeatureClass类

该类是Engine中的Class类,不能被直接创建,但可以通过多种方法获取某个图层的要素类,如果使用IFeatureLayer接口的FeatureClass属性。它实现了IFeatureClass接口,该接口的成员用于控制要素类的属性和行为,主要的方法:

1)search方法:根据查询条件进行查询并返回结果游标,该方法的用法与IFeatureLayer接口中的Search方法的用法相同。

2)Select方法:根据查询条件选择相应的要素,并将其放置在选择集中。其参数包括IQueryFilter接口查询过滤器,定义选择方式参数,定义查询的工作区的参数。其返回值为ISelectionSet接口类型。

猜你喜欢

转载自blog.csdn.net/xxf813/article/details/82011770