原文链接:https://blog.csdn.net/kone0611/article/details/78530514

IFeatureClass.CreateFeature

​ 在这种方法最后需要加上IFeature.Store去提交创建的要素,本人认为这种方法相比下面一种方法更好些,因为Store的方法能够直接提交修改并在数据库中看到,不会因为其他复杂的操作影响数据入库。下面是在SDE库中创建IFeature的代码给大家参考一下:

IAoInitialize m_AoInitializa = new AoInitializeClass();
esriLicenseStatus pEsriLicenseStatus=m_AoInitializa.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);IPropertySet propSet = new PropertySetClass();
propSet.SetProperty("SERVER", "192.168.1.143");
propSet.SetProperty("INSTANCE", "5151");
propSet.SetProperty("USER", "myTestUser");
propSet.SetProperty("PASSWORD", "123456");
propSet.SetProperty("VERSION", "SDE.DEFAULT");IWorkspaceFactory pwf = new SdeWorkspaceFactoryClass();
IFeatureWorkspace pFeatureWorkspace= (IFeatureWorkspace)(pwf.Open(propSet, 0)) ;
IFeatureClassfeaClass=pFeatureWorkspace.OpenFeatureClass("要打开的Featureclass名字");IFeature feature = feaClass.CreateFeature();
feature.Shape=IGeometry;//(这里的IGeometry可以是IPolygon,IPolyline,IPoint)int fieldindex = feature.Fields.FindField("字段名");
feature.set_Value(fieldindex, "字段值");
feature.Store();

IFeatureClass.CreateFeatureBuffer

​ 这个方法采用插入游标(Insert Cursors)的方法,在创建简单数据的时候效率会比第一种方法更快些,但是在ESRI的官网上提到使用IFeatureCursor.InsertFeature方法时,复杂的操作和各种事件的触发不能够保证。根据自己实际操作的心得,有时候会出现数据创建延时,明明代码已经通过了,但数据库中的数据要过很久才能显示出来,甚至有时候都显示不出来。这个客户肯定接受不了这种没有保证的数据创建。还有一点,在使用SDE库时,这种方法只适用于没有注册版本的dateset或featureclass

IFeatureCursor feaCursor = feaClass.Insert(true);
IFeatureBuffer feaBuffer = feaClass.CreateFeatureBuffer();
feaBuffer.Shape = IGeometry;//(这里的IGeometry可以是IPolygon,IPolyline,IPoint)int fieldindex = feaBuffer.Fields.FindField("字段名");
if (fieldindex >= 0)
{                              feaBuffer.set_Value(fieldindex, "字段值" );
}feaCursor.InsertFeature(feaBuffer);

使用IFeatureClassWriter接口

public void DrawPoint(ILayer pLayer,double X,double Y)
{IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;IFeatureClassWrite fr = pFeatureClass as IFeatureClassWrite;IFeature pFeature;IPoint pPoint;//pWorkspaceEdit.StartEditing(true);pWorkspaceEdit.StartEditOperation();pFeature = pFeatureClass.CreateFeature();pPoint = new PointClass();pPoint.PutCoords(X, Y);pFeature.Shape = pPoint;fr.WriteFeature(pFeature);pWorkspaceEdit.StopEditOperation();
}

转载于:https://www.cnblogs.com/King2019Blog/p/11319539.html

ArcEngine创建IFeature的三种方法相关推荐

  1. Spark创建DataFrame的三种方法

    跟关系数据库的表(Table)一样,DataFrame是Spark中对带模式(schema)行列数据的抽象.DateFrame广泛应用于使用SQL处理大数据的各种场景.创建DataFrame有很多种方 ...

  2. Java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  3. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  4. Python创建多线程的三种方法

    Python创建多线程的三种方法 thread模块函数式创建线程 继承threading类创建多线程 threading模块函数式创建线程 使用总结 thread模块函数式创建线程 调用thread模 ...

  5. oracle创建数据库的三种方法

    新建Oracle数据库三种方法: 1.通过运行Oracle Database Configuration Assistant创建配置或删除数据库(也可在命令行下输入dbca): 2.用命令行的方式建立 ...

  6. docker创建镜像的三种方法

    在工作中我们交付给你客户的往往都是一些定定制的容器,但是在这之前我们要先学会怎么去创建镜像来交付 一.docer创建镜像的创建方法 创建docker镜像的三种方法,分别是基于已有的容器创建.基于本地模 ...

  7. 创建线程的三种方法_Netty源码分析系列之NioEventLoop的创建与启动

    前言 前三篇文章分别分析了 Netty 服务端 channel 的初始化.注册以及绑定过程的源码,理论上这篇文章应该开始分析新连接接入过程的源码了,但是在看源码的过程中,发现有一个非常重要的组件:Ni ...

  8. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 目录 一.继承Thread类来创建线程 二.实现Runnable接口来创建线程 三.通过Callable和Future来创建线程 四.三种方式创 ...

  9. 细说 MySQL 创建表的三种方法

    文章目录 CREATE TABLE CREATE TABLE ... LIKE CREATE TABLE ... SELECT 总结 大家好!我是只谈技术不剪发的 Tony 老师. SQL 标准使用 ...

  10. linux新增mysql用户_MySQL创建用户的三种方法

    前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...

最新文章

  1. vue component动态组件_vue-component组件
  2. 安装Eclipse插件
  3. 2018.12.15 bzoj3676: [Apio2014]回文串(后缀自动机)
  4. 你与一份好简历之间的距离
  5. miniconda3 安装numpy_OpenCV4在Ubuntu1810/1604安装
  6. 连续七天熬夜3D建模师终于出手,让老板增加薪资待遇,分享使用3D建模软件的6个行业
  7. Linux Shell Record
  8. Objective-c的内存管理MRC与ARC
  9. IEEE最新声明:华为员工不能参与审稿,但是还能继续提供赞助
  10. leetcode:Happy Number
  11. wpf之windows设置WindowStyle为None
  12. 计算机学院辩论队,计算机学院新生辩论赛圆满落幕
  13. mac pycharm汉化(附带汉化包)
  14. jsoup 网页抓取简介详解
  15. CATIA软件有限元分析功能详解及使用教程
  16. 菜鸟电子面单获取教程
  17. 语音识别使用推荐(讯飞、百度、腾讯、云知声等)
  18. 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
  19. 【unity shader】unity游戏特效-仿《崩坏3》希儿魇夜星渊大招特效(运用CommandBuffer和屏幕后处理)
  20. jquery清空购物车小案例

热门文章

  1. java 按两个键_java – 使用调度程序按下多个键
  2. watch取消配对怎么重新配对_一文看懂智慧LED灯杆屏怎么配对
  3. java MAVEN下载的代码仓库位置 mac
  4. FISCO BCOS 最大tps 每秒出块个数 tx_count_limit 区块容量 控制台设置参数 区块大小
  5. 遍历数组的两种for循环方式以及一种Arrays方式
  6. 设计模式之GOF23模板模式
  7. 2020-07-17
  8. $.ajax(0,jQuery Ajax显示0而不是Array(jQuery Ajax showing 0 instead of Array)
  9. springboot 微服务相关收藏
  10. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_6_方法引用_类的构造器(构造方法)引用...