和查询相关的对象和接口

查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询。在介绍查询的时候,让我们先了解下面的对象。

Table对象
Table是不含有空间信息的一张二维表,它主要实现了ITable接口。在这张二维表中,每一行称之为Row
(IRow),ITable接口 定义了对这张二维表行的插入,更新,查询,以及删除等操作。
独立表(standalone table):就是一个单独的不含空间信息的表也就是只能在ArcMap中Table of Contents
的Source选项卡中看到的。
对象类
对象类是在Table的基础上扩展起来的,因此在外观上来看,它也是一个二维表,也是用来存储非空间数
据,它与Table的区别在于它的一行是一个Object(对象),尽管在形式上也是一条记录,但它是具有属
性和行为的一个对象,而非简单的记录了。
FeatureClass对象  
要素类是存储在工作空间中的一种数据组织方式,要素类是在对象类的基础上的进一步扩展,包含了现实
世界中的空间实体。要素类由要素组成(Feature),要素对应要素类中的一行,要素相当于空间对象
(Geometry )+相应的属性信息。IFeatureClass定义了对要素的查询,更新,删除等操作。关于ROW,Table,
对象类,Feature,要素类,我们可以从下面的图上得到启示:

FeatureClass对象实现了IFeatureClass接口,IFeatureClass对查询定义了两个方法
IFeatureClass.Search和IFeatureClass.Select。
Search方法需要传入两个参数,一个是过滤器;另外一个是布尔值,用于说明放回的要素游标是否被回收,
一般的,如果仅仅是为了读取数据,那么这个参数应该是true,如果要对选择出来的要素更新,那么这个
参数应该设置为false。那么这两个参数到底有什么意义,我们从下面的代码中看一下。
false 和true参数的差别
我们定义一个Search函数,通过传false和true来对这两个参数进行说明,代码如下:
    void  Search(IFeatureClass _pFeatureClass,bool _Bool)
        {
 
            IFeature pFt1, pFt2;
 
           IFeatureCursor pFtCursor;
           if (_Bool == false)
           {
               pFtCursor = _pFeatureClass.Search(null, _Bool);
 
               pFt1 = pFtCursor.NextFeature();
 
               while (pFt1 != null)
               {

pFt2 = pFtCursor.NextFeature();
 
                   if (pFt1 == pFt2)
                   {
                       MessageBox.Show("Recycling 参数是 false");
                   }
                   pFt1 = pFtCursor.NextFeature();
 
               }
           }
           else
           {
               pFtCursor = _pFeatureClass.Search(null, _Bool);
 
               pFt1 = pFtCursor.NextFeature();

              while (pFt1 != null)
              {
                  pFt2 = pFtCursor.NextFeature();
                  if (pFt1 == pFt2)
                  {
                      MessageBox.Show("Recycling 参数是true");
                  }
                  pFt1 = pFtCursor.NextFeature();
              }
          }
       }

Search和 Select方法的比较
Search返回游标,Select返回选择集

原文地址:https://www.cnblogs.com/qiushuixizhao/p/3245220.html