1、 查找数据Search Cursors
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);//只查询,true快一些 IFeature feature = searchCursor.NextFeature(); int n = 0; while (feature != null){ n++; feature = baseCursor.NextFeature(); }
2、 插入数据Insert Cursors—目前数据插入最快的方法
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();
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"); // 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(); }
更多GIS开发相关问题请加入 GIS开发学习QQ交流群 192251607 共同交流学习!