zoukankan      html  css  js  c++  java
  • 矢量数据的属性值的添加、编辑、删除

    /* 以下代码实现的是矢量数据的更新,删除*/

    /* 注意可以用store,但是效率比较低,每次都写一下文件,不如一次性flush一下*/

    /*首先定义游标,然后.NextFeature() 依次执行,但是注意select产生的游标不能应用于update 和 Insert*/

    /*代码比较乱,包含添加、删除、更新三个方面的操作,没有注释掉的是更新操作,查询之前的文章介绍过*/

    #region 修改字段的值

    IDataset dataset = pFlayerClass as IDataset;            

    IWorkspace workspace = dataset.Workspace;            

    IWorkspaceEdit wse = workspace as IWorkspaceEdit;            

    wse.StartEditing(false);            

    wse.StartEditOperation();            

    int proField = pFlayerClass.FindField("SPEEDCLASS");

    // null 就是全部都查询不用再新建IQUERY... 了                        

    int cnt = pFlayerClass.FeatureCount(null);

    // 要添加数据必须使用 Insert产生的Cursor 不要使用Select生成的Cursor,如下所示            

    //IFeatureCursor featureCursor = pFlayerClass.Insert(true);

    // 要编辑数据就是用Update生成的Cursor              

    IFeatureCursor featureCursor = pFlayerClass.Update(null,true);  

    // 如果要添加数据,就使用Buffer 最后flush一下          

    //IFeatureBuffer featureBuffer = pFlayerClass.CreateFeatureBuffer();

    // 以下这两句 写到循环外边            

    int fieldId = pFlayerClass.FindField("ID");            

    IFeature f = featureCursor.NextFeature();            

    int speedId = pFlayerClass.FindField("SPEEDCLASS");            

    for (int i = 0; i < cnt; i++)            

    {

             string roadID = pFlayerClass.GetFeature(i).get_Value(fieldId).ToString();                

             int cl = GetSpeedClass(roadID);                

             //int cl = 2;                

             f.set_Value(speedId,cl);

       // 以下的代码是写入缓存

             //featureBuffer.Shape = pFeature.Shape;  

       //featureBuffer.set_Value(fieldId, roadID);
            //featureBuffer.set_Value(speedId, cl);               

            //IFeature pFeature = pFlayerClass.GetFeature(i);

        // 插入一个新的Feature

        // featureCursor.InsertFeature(featureBuffer);               

            featureCursor.UpdateFeature(f);

       // 删除一个矢量数据   

        f.Delete();             

            f = featureCursor.NextFeature();            

    }            

    featureCursor.Flush();

    wse.StopEditOperation();          

    wse.StopEditing(true);                        

    #endregion

  • 相关阅读:
    ORA-04098 trigger 'DBBJ.DB_EV_ALTER_ST_METADATA' is invalid and failed re-validation
    ORA -04098 触发器无效且未通过重新验证
    Oracle 设置主键自增长__Oracle
    重启Oracle服务
    手动启动 oracle 服务
    oracle错误-ORA-12519, TNS:no appropriate service handler found
    ORA-00904: 标识符无效——解决方案
    [原创] 新人分享--ORA-01012:not logged on的解决办法 [复制链接]
    java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?
    全面解析JS字符串和正则表达式中的match、replace、exec等函数
  • 原文地址:https://www.cnblogs.com/oftenlin/p/2672066.html
Copyright © 2011-2022 走看看