ArcGIS Engine 10 开发手册(4-18)细讲FeatureClass对象
上文中我们已经提到了FeatueClass对象,这是ArcGIS Engine常用的对象之一,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 ();
}
}
}
当 recycling 为 true 的时候,我们会看到程序执行到 MessageBox.Show("Recycling 参数是 true"),如 下图:
等号成立,说明了当为 true,程序返回的是同一个 Feature 的引用,查询后的要素共享同一内存,说名 Next 之后前一个游标所占的内存被回收了,当为 false 的时候,等号不成立。说明系统给每一个要素分配了一 个游标。
Search和 Select方法的比较
Search 返回游标,Select 返回选择集;
- 游标:必须遍历游标才能得到所有的结果,不必太关注内存;
- 选择集: 查询后既可得到,但是通常只保留 OID 字段,数据量打的时候要考虑内存压力。
Cursor和FeatureCursor对象
Cursor 中文‘游标“,它本质上是一个指向数据的指针,自身并不包含数据。游标有三类,查询游标, 插入游标和更新游标,每一游标都是又其相应的方法得到,如查询游标是由 ITable.Search 方法得到。游 标是 GIS 中使用频率很高的,凡是和数据的查询,更新,删除等都跟他有关。ICursor 定义了对游标的操 作。当我们通过 ITable.Search 对数据进行查询,要获取具体 Row 的信息的时候,要通过 ICursor.NextRow 方法向前遍历,游标是不能后退的。游标是和 Table 相对应的。IFeatureCursor 继承了 ICursor, IFeatureCursor 是和要素类相对应。
QueryFilter与SpatialFilter对象
在 ArcGIS Engine 中进行查询或者选择,都需要传给一个查找条件,或者过滤条件,这个条件就相当 于一般的 SQL 语句中的 Where 语句,如 Select * from 用户 where 性别=’女’;我们知道 GIS 不仅仅有 属性查询,还有一般关系型数据库不具有的空间查询。而 QueryFilter 对象和 SpatialFilter 对象分别对 应了 ArcGIS Engine 中的属性查询和空间查询。
IQueryFilter 被两个类实现 QueryFilterClass 和 SpatialFilterClass,前者是针对属性查询的,后 者是针对空间查询的。在介绍下这些对象后,我们现在来做一个高亮显示的查询操作。
ArcGIS Engine 10 开发手册全集
ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。