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

  • 相关阅读:
    应用程序发生异常,未知的软件异常0x0eedfade,位置为0x0000001355C
    关于条件表达式的理解
    *p++、*++p、(*p)++、++(*p)的比较
    排序算法01_选择排序
    递归_汉诺塔问题
    排序算法00_冒泡排序
    深入理解C语言
    虚拟机_第一篇---创建Linux虚拟机
    虚拟机_第〇篇---虚拟机的下载安装与功能简介
    对i++与++i的理解
  • 原文地址:https://www.cnblogs.com/yuxuetaoxp/p/2751036.html
Copyright © 2011-2022 走看看