风过无痕 原文  arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

1、查找数据Search Cursors

//by yl landgis@126.com yanleigis@21cn.com 2008.7.7

IEnvelope envelope = new EnvelopeClass();
envelope.PutCoords(, , , );
ISpatialFilter spatialFilter = new SpatialFilterClass();
spatialFilter.Geometry = envelope;
String shpFld = featureClass.ShapeFieldName;
spatialFilter.GeometryField = shpFld;
spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter = (IQueryFilter)spatialFilter; IFeatureCursor searchCursor = featureClass.Search(queryFilter, true);//只查询,true快一些
IFeature feature = searchCursor.NextFeature();
int n = ;
while (feature != null){
n++;
feature = baseCursor.NextFeature();
}

2、插入数据Insert Cursors—目前数据插入最快的方法

//by yl landgis@126.com yanleigis@21cn.com 2008.7.7

IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
IFeatureCursor featureCursor = featureClass.Insert(true);
object featureOID;
featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "B Pierce"); for (int ic = ; ic < ; ic++) {
featureBuffer.Shape = geometry
featureOID = featureCursor.InsertFeature(featureBuffer);
} featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "K Johnston"); for (int ic = ; ic < ; ic++)
{
featureBuffer.Shape = geometry
featureOID = featureCursor.InsertFeature(featureBuffer);
} featureCursor.Flush();

3、 数据删除 delete

//by yl landgis@126.com yanleigis@21cn.com 2008.7.7

IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels");

IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "ZONING_S = 'R'";
IFeatureCursor updateCursor = featureClass.Update(queryFilter, false); IFeature feature = updateCursor.NextFeature(); int m = ;
while (feature != null)
{
m++;
updateCursor.DeleteFeature(feature);
feature = updateCursor.NextFeature();
}

4、数据更新 update

//by yl landgis@126.com yanleigis@21cn.com 2008.7.7
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("Parcels"); // restrict the number of features to be updated.
IQueryFilter queryFilter = new QueryFilterClass();
queryFilter.WhereClause = "ZONING_S = 'U'"; // use IFeatureClass::Update to populate IFeatureCursor
IFeatureCursor updateCursor = featureClass.Update(queryFilter, false);
int fieldindex = featureClass.FindField("ZONING_S");
IFeature feature = updateCursor.NextFeature(); int m = 0;
while (feature != null)
{
m++;
feature.set_Value(fieldindex, "X");
updateCursor.UpdateFeature(feature);
feature = updateCursor.NextFeature();
}

最新文章

  1. Angularjs学习---官方phonecat实例学习angularjs step0 step1
  2. 第6章 DOM节点操作
  3. springMvc 报错
  4. centos6.5用户添加到sudoers中
  5. bzoj4109: [Wf2015]Cutting Cheese
  6. IOS屏幕布局
  7. 带搜索框的下拉框chosen.jQury.js
  8. Shell script for logging cpu and memory usage of a Linux process
  9. 如何恢复oracle中已删除的表
  10. ethtool的基本设置
  11. hdu_1711Number Sequence(kmp)
  12. 库函数strstr的实现
  13. MongoDB最佳实践中文手册
  14. Quartz + Tablesaw 报表统计
  15. Docker常用镜像
  16. (转)JDK 1.8 预览版Lambda语法分析
  17. 设计模式二之观察者模式(Subject-Observer)
  18. java api 批量数据库操作
  19. (网页)JS去掉字符串前后空格或去掉所有空格的用法(转)
  20. Got fatal error 1236 from master when reading data from binary log: &#39;Client requested master to start replication from impossible position

热门文章

  1. C# 的时间戳 在flash actionscript中使用
  2. IOS越狱开发错误解决
  3. [Android] 图像各种处理系列文章合集
  4. cocos2dx-js学习笔记(一)环境搭建
  5. Swift具体解释之三----------函数(你想知道的都在这里)
  6. BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 托管代码(.NET)
  7. email之TO、CC、BCC意义
  8. POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)
  9. 洛谷P2147 [SDOI2008]Cave 洞穴勘测
  10. GraphX 图数据建模和存储