ArcEngine数据的查找,插入,删除,更新

简介: 原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/03/11/1981842.html为了以后方便快速拷贝代码,将这些常用代码记录下来。

原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/03/11/1981842.html


为了以后方便快速拷贝代码,将这些常用代码记录下来。

1、查找数据

1)、利用FeaturCursor进行空间查询

//利用构造的Envelope(矩形框),查找和Envelope相交的FeatureClass的要素集

//结果数据利用循环FeatureCursor.nextFeature获得

IEnvelope envelope = new EnvelopeClass();

envelope.PutCoords(508786, 681196, 513033, 684341);

//空间查询

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);

IFeature feature = searchCursor.NextFeature();

int n = 0;

while (feature != null){

    n++;

    feature = baseCursor.NextFeature();

}

2)、利用FeatureCursor在选择集中进行查询

IFeatureSelection pFeatureSelectio = pFeatureLayer as IFeatureSelection; 

ICursor ppCursor;
pFeatureSelectio.SelectionSet.Search(null, false, out ppCursor);

IFeatureCursor pFeatureCursor = ppCursor as IFeatureCursor; 

IFeature pFeature = pFeatureCursor.NextFeature();

3)、利用FeatureCursor进行属性查询

IQueryFilter pQueryFilter = new QueryFilterClass();                           

pQueryFilter.WhereClause = "PROJECTCODE = '" + this.ProjectNumTextBox.Text.Trim() + "'";

IFeatureCursor pFeatureCursor = LineFeaClass.Search(pQueryFilter, false);                           

IFeature pFeatureIfExit = pFeatureCursor.NextFeature();

 

2、 插入数据

1)、利用Insert Cursors和featureBuffer

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

2)、直接进行数据插入(Feature.Store方法)

 IFeature newLineFeature = LineFeaClass.CreateFeature();                           

newLineFeature.Shape = pFeature.Shape;
int ii = newLineFeature.Fields.FindField(AreaZonalName); 

 if (ii > 0)                           

{                               

newLineFeature.set_Value(ii, this.AnalysAreaComboBox.Text.Trim());
}

newLineFeature.Store();

3、数据删除 delete 

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 = 0;

while (feature != null)

{

    m++;

    updateCursor.DeleteFeature(feature);

    feature = updateCursor.NextFeature();

}

4、 数据更新 update 

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

// 属性查询

IQueryFilter queryFilter = new QueryFilterClass();

queryFilter.WhereClause = "ZONING_S = 'U'";

//利用FeatureCursor进行数据更新

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();

}

相关文章
|
6月前
|
索引
【Leetcode-27.移除元素 -35.搜索插入位置】
【Leetcode-27.移除元素 -35.搜索插入位置】
20 0
|
2月前
【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新
【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新
87 0
|
10月前
|
算法 安全 Swift
LeetCode - #35 搜索插入位置
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
10月前
|
索引
leetcode:35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
30 0
|
11月前
|
存储 编译器 C++
【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
70 0
|
Java C++ 索引
LeetCode 35. 搜索插入位置
LeetCode 35. 搜索插入位置
69 0
|
算法 索引
【刷题记录】35. 搜索插入位置
【刷题记录】35. 搜索插入位置
73 0
【刷题记录】35. 搜索插入位置
|
算法 索引
LeetCode-35. 搜索插入位置(day10)
LeetCode-35. 搜索插入位置(day10)
87 0