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();
}
、
查找数据
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();
}
相关文章推荐
- GIS数据的查找,插入,删除,更新(ArcEngine)
- GIS数据的查找,插入,删除,更新(ArcEngine)
- GIS数据的查找,插入,删除,更新(ArcEngine) (转)
- GIS数据的查找,插入,删除,更新(ArcEngine)
- ArcEngine数据的查找,插入,删除,更新
- ArcEngine数据的查找,插入,删除,更新
- GIS数据的查找、插入、删除、更新
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新 (转)
- 总结:GIS数据的查找,插入,删除,更新
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
- ArcEngine开发_添加字段,数据删除,插入,更新细节
- 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新(转)
- 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
- mysql 插入,更新与删除数据
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十九:使用SqlDataSource插入、更新以及删除数据
- mySQL教程 第5章 插入 更新与删除数据
- MySQL入门很简单-学习笔记 - 第11章 插入、更新与删除数据
- 第七章 插入、更新与删除数据
- DataTable 数据更新、删除、插入 数据库 操作