您的位置:首页 > 其它

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

2011-04-14 08:53 471 查看
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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: