AO建立IFeature的兩種方法

2021-09-08 19:27:54 字數 2457 閱讀 2149

原文 ao建立ifeature的兩種方法

在arcgis resouce center中,esri介紹了兩種建立feature的方法(可以在本地的geodatabase和sde的featureclass)

第一種是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(這個僅僅是在我的程式**現過這種問題,僅供參考),下面為**(開啟sde的部分就不重複了)

ifeaturecursor feacursor = feaclass.insert(true

);ifeaturebuffer feabuffer =feaclass.createfeaturebuffer();

feabuffer.shape = igeometry;//

(這裡的igeometry可以是ipolygon,ipolyline,ipoint)

int fieldindex = feabuffer.fields.findfield("

欄位名"

);if (fieldindex >= 0

)feacursor.insertfeature(feabuffer);

經過一位網友的幫助,以上的文章有不足的地方,就是ifeatureclass.createfeaturebuffer在featureclass中插入一條記錄,在本文中feacursor.insertfeature(feabuffer)之後加上feacrusor.fulsh()將建立的記錄輸入到資料庫中,而且在面對大資料量插入的時候用ifeatureclass.createfeaturebuffer()效率比ifeatureclass.createfeature高,詳細可以參見以下**:link,這裡面有詳細介紹.

AO建立IFeature的兩種方法

原文 ao建立ifeature的兩種方法 在arcgis resouce center中,esri介紹了兩種建立feature的方法 可以在本地的geodatabase和sde的featureclass 第一種是ifeatureclass.createfeature,在這種方法最後需要加上ifeat...

ArcEngine建立IFeature的三種方法

在arcgis resouce center 中,esri介紹了兩種建立feature的方法 可以在本地的geodatabase和sde的featureclass 一 ifeatureclass.createfeature,在這種方法最後需要加上ifeature.store去提交建立的要素,本人認為...

執行緒建立的兩種方式

建立執行緒的兩種方式 1.繼承thread並重寫方法,在run方法中定義執行緒要執行的任務 class mythread extends thread public class threaddemo1 2.實現runable介面並重寫run方法 class myrunnable implements...