zoukankan      html  css  js  c++  java
  • arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

    风过无痕 原文  arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

     

    深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

    1、查找数据Search Cursors

    //by yl landgis@126.com yanleigis@21cn.com 2008.7.7

    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—目前数据插入最快的方法   

    //by yl landgis@126.com yanleigis@21cn.com 2008.7.7

    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   

    //by yl landgis@126.com yanleigis@21cn.com 2008.7.7

    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   

    //by yl landgis@126.com yanleigis@21cn.com 2008.7.7
    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();
    }
    
  • 相关阅读:
    1月10日 TextView
    1月9日 布局2
    30 Adapter适配器
    29 个人通讯录列表(一)
    28 ListView控件
    27 登录模板
    26 Activity的启动模式
    25 Activity的生命周期
    24 得到Activity返回的数据
    23 Activity的传值2(bundle)
  • 原文地址:https://www.cnblogs.com/arxive/p/6114330.html
Copyright © 2011-2022 走看看