• 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

  • 相关阅读:
    Asp.net Vnext 模块化实现
    Asp.net Vnext 实现IView
    Asp.net Vnext TagHelpers
    MVC 源码调试
    Asp.net Vnext 中间件实现基本验证
    Azure SQL Federation(联合)
    Microsoft Azure 配置负载均衡
    Asp.net Vnext 调试源码
    阅读文献总结笔记9
    阅读文献总结笔记4
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/2751036.html
Copyright © 2020-2023  润新知