• 深入理解游标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 BufferIFeatureBuffer 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();

    }

     

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanleigis/archive/2008/07/07/2620224.aspx

  • 相关阅读:
    Postgres窗口函数学习
    关于KMP算法
    Kettle应用实例
    mybatis中po类继承另一个po类时查不出另一个po类里的属性
    查看Mybatis动态SQL
    取每个班前5名成绩的sql
    scatter/gather与map/reduce技术的布道推广从换个说法开始
    神奇的O記
    【坑】软件的大版本的各类小版本支持问题
    oracle时间处理tochar的黑幕坑
  • 原文地址:https://www.cnblogs.com/linghe/p/1635487.html
Copyright © 2020-2023  润新知