总结:GIS数据的查找,插入,删除,更新
来源:互联网 发布:滁州学院网络教学平台 编辑:程序博客网 时间:2024/05/22 05:33
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
public static void LoadOnlyModeInsert(IFeatureClass featureClass, List<IGeometry> geometryList) { // Cast the feature class to the IFeatureClassLoad interface. IFeatureClassLoad featureClassLoad = (IFeatureClassLoad)featureClass; // Acquire an exclusive schema lock for the class. ISchemaLock schemaLock = (ISchemaLock)featureClass; try { schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock); // Enable load-only mode on the feature class. featureClassLoad.LoadOnlyMode = true; using (ComReleaser comReleaser = new ComReleaser()) { // Create the feature buffer. IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer(); comReleaser.ManageLifetime(featureBuffer); // Create an insert cursor. IFeatureCursor insertCursor = featureClass.Insert(true); comReleaser.ManageLifetime(insertCursor); // All of the features to be created are classified as Primary Highways. int typeFieldIndex = featureClass.FindField("TYPE"); featureBuffer.set_Value(typeFieldIndex, "Primary Highway"); foreach (IGeometry geometry in geometryList) { // Set the feature buffer's shape and insert it. featureBuffer.Shape = geometry; insertCursor.InsertFeature(featureBuffer); } // Flush the buffer to the geodatabase. insertCursor.Flush(); } } catch (Exception) { // Handle the failure in a way appropriate to the application. } finally { // Disable load-only mode on the feature class. featureClassLoad.LoadOnlyMode = false; // Demote the exclusive schema lock to a shared lock. schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock); } }
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数据的查找,插入,删除,更新
- GIS数据的查找、插入、删除、更新
- GIS数据的查找,插入,删除,更新(ArcEngine)
- GIS数据的查找,插入,删除,更新(ArcEngine)
- GIS数据的查找,插入,删除,更新(ArcEngine) (转)
- ArcEngine数据的查找,插入,删除,更新
- ArcEngine数据的查找,插入,删除,更新
- 数据的插入、更新、删除
- MySQL插入、更新、删除数据总结
- 插入更新删除数据
- 插入、更新、删除数据
- 插入、更新、删除数据
- arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新
- 深入理解游标Cursors,实现数据的快速查找,插入,删除,更新(转)
- MySQL 数据的插入、更新和删除
- 表数据的插入,更新,删除
- mongoDB(3):数据的更新、插入、删除
- 重复数据的查找,更新,删除
- ActivityManagerService的启动和对Activity的管理
- 三、致敬“张正友标定”
- FullCalendar日历插件中文说明文档
- 没钱就该认命?
- 史上最详细freemarker语法介绍及其入门教程实例
- 总结:GIS数据的查找,插入,删除,更新
- online_judge_1166
- uva1267(无根树 +dfs)
- 算法导论笔记1——插入排序
- 图的遍历(二)—广度优先遍历
- Leetcode: Largest Number
- error C3861: “strcat_s”: 即使使用参数相关的查找,也未找到标识符
- 20150129Review
- Moto回归中国市场 工业设计是核心优势