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();
    }
    
  • 相关阅读:
    spring简介
    Thinkphp5 的sesssion在同一个控制器不同的方法无法获取session的原因和对策
    PHP单例模式--典型的三私一公
    10+ 值得收藏的开源后台模板
    PHP中&&与and、||与or的区别
    iview weapp输入组件input事件顺序
    php 获取post方法payload(json)形式参数的方法
    Git pull(拉取),push(上传)命令整理(详细)
    小程序 子组件传值
    php display_errors
  • 原文地址:https://www.cnblogs.com/arxive/p/6114330.html
Copyright © 2011-2022 走看看