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();
    }
    
  • 相关阅读:
    每日日报
    Serverless 架构模式及演进
    媒体声音|阿里云数据库:一站式全链路数据管理与服务,引领云原生2.0时代
    贾扬清谈云原生让数据湖加速迈入3.0时代
    阿里巴巴首席技术官程立:我们相信并正在践行的“好科技”
    Delphi外挂制作
    delphi获取汉字拼音首字母
    扫雷外挂的设计与实现
    access和SQL语句的区别
    调用C语言编写的DLL文件
  • 原文地址:https://www.cnblogs.com/arxive/p/6114330.html
Copyright © 2011-2022 走看看