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

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

    1、 查找数据Search Cursors //by yl landgis@126.com yanleigis@21cn.com 2008.7.7

    [C#]

    //Create an envelope for the lower right portion of data

    IEnvelope envelope = new EnvelopeClass();

    envelope.PutCoords(508786, 681196, 513033, 684341);

    // create a spatial query filter

    ISpatialFilter spatialFilter = new SpatialFilterClass();

    // specify the geometry to query with

    spatialFilter.Geometry = envelope;

    // specify what the geometry field is called on the Feature Class that we will querying against

    String shpFld = featureClass.ShapeFieldName;

    spatialFilter.GeometryField = shpFld;

    // specify the type of spatial operation to use

    spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;

    // perform the query and use a cursor to hold the results

    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

    //Create the Feature Buffer
    IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
     
    //Create insert feature cursor using buffering = true.
    IFeatureCursor featureCursor = featureClass.Insert(true);
     
    object featureOID; 
     
    //All of the features to be created were installed by "B Pierce"
    featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "B Pierce");
    for (int ic = 0; ic < 99; ic++) 
    {
     
      //Set the featurebuffers's shape
     featureBuffer.Shape = geometry
     
      //Insert the feature into the feature cursor
     featureOID = featureCursor.InsertFeature(featureBuffer);
    }
     
    //All of the features to be created were installed by "K Johnston"
    featureBuffer.set_Value(featureBuffer.Fields.FindField("InstBy"), "K Johnston");
    for (int ic = 0; ic < 99; ic++)
    {
      //Set the feature's shape
     featureBuffer.Shape = geometry
     
      //Insert the feature into the feature cursor
     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'";

    // use IFeatureClass::Update to populate IFeatureCursor

    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();

    }

    from:http://blog.csdn.net/yanleigis/article/details/2620224

  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/2751036.html
Copyright © 2011-2022 走看看