arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
2024-08-31 18:18:21
风过无痕 原文 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();
}
最新文章
- Angularjs学习---官方phonecat实例学习angularjs step0 step1
- 第6章 DOM节点操作
- springMvc 报错
- centos6.5用户添加到sudoers中
- bzoj4109: [Wf2015]Cutting Cheese
- IOS屏幕布局
- 带搜索框的下拉框chosen.jQury.js
- Shell script for logging cpu and memory usage of a Linux process
- 如何恢复oracle中已删除的表
- ethtool的基本设置
- hdu_1711Number Sequence(kmp)
- 库函数strstr的实现
- MongoDB最佳实践中文手册
- Quartz + Tablesaw 报表统计
- Docker常用镜像
- (转)JDK 1.8 预览版Lambda语法分析
- 设计模式二之观察者模式(Subject-Observer)
- java api 批量数据库操作
- (网页)JS去掉字符串前后空格或去掉所有空格的用法(转)
- Got fatal error 1236 from master when reading data from binary log: &#39;Client requested master to start replication from impossible position
热门文章
- C# 的时间戳 在flash actionscript中使用
- IOS越狱开发错误解决
- [Android] 图像各种处理系列文章合集
- cocos2dx-js学习笔记(一)环境搭建
- Swift具体解释之三----------函数(你想知道的都在这里)
- BEGINNING SHAREPOINT&;#174; 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 托管代码(.NET)
- email之TO、CC、BCC意义
- POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)
- 洛谷P2147 [SDOI2008]Cave 洞穴勘测
- GraphX 图数据建模和存储