Insert Features using IFeatureclass.createfeature method

 将input featureclass里的选择集feature插入到output featureclass里

 使用IFeatureClass.createfeature和feature.store方法來逐個添加新要素,適用于簡單的少量的插入操作。

 數據量較大時,其效率過低。

 
ExpandedBlockStart.gifContractedBlock.gif
Public   Sub t_InsertRecords() Sub t_InsertRecords()Sub t_InsertRecords()Sub t_InsertRecords(pFeatclsNm As IFeatureClassName, _
                           pInputFCName 
As IFeatureClassName, _
                           pQFilt 
As IQueryFilter)
  
' +++ Note: this function assumes that the schema between the input feature class and
  ' the destination feature class are the same. If they are not, then this
  ' function will always report errors.
  
  
' get the feature classes from the name
  Dim pFName As IName
  
Dim pInputName As IName
  
  
Set pFName = pFeatclsNm
  
Set pInputName = pInputFCName
  
  
Dim pFeatcls As IFeatureClass
  
Dim pInputFCls As IFeatureClass
  
Set pFeatcls = pFName.Open
  
Set pInputFCls = pInputName.Open
 
  
' get the workspace and start editing
  Dim pDataset As IDataset
  
Set pDataset = pFeatcls
  
  
Dim pWorkspace As IWorkspace
  
Set pWorkspace = pDataset.Workspace
  
  
Dim pWorkspaceEdit As IWorkspaceEdit
  
Set pWorkspaceEdit = pWorkspace
  
  pWorkspaceEdit.StartEditing 
False
  pWorkspaceEdit.StartEditOperation
       
  
' open a cursor on the input feature class with the given query filter
  Dim pFeatCursor As IFeatureCursor
  
Set pFeatCursor = pInputFCls.Search(pQFilt, False)
  
  
' loop through the input features in the cursor, and insert
  ' them into the destination feature class. This is slow since we must use
  ' IFeature::Store to mimic an edit session.
  Dim pFeat As IFeature
  
Dim pRow As IRow
  
Dim pFlds As IFields
  
Dim lSFld As Long
  
Dim i As Long
  
  
Set pRow = pFeatCursor.NextFeature
  
Do Until pRow Is Nothing
    
Set pFeat = pFeatcls.CreateFeature
    
Set pFlds = pFeat.Fields
    
For i = 0 To pFlds.FieldCount - 1
        lSFld 
= pRow.Fields.FindField(pFlds.Field(i).Name)
        pFeat.Value(i) 
= pRow.Value(lSFld)
    
Next i
    pFeat.Store
    
' get next row
    Set pRow = pFeatCursor.NextFeature
  
Loop
  
  pWorkspaceEdit.StopEditOperation
  pWorkspaceEdit.StopEditing 
True
End Sub



 

转载于:https://www.cnblogs.com/iswszheng/archive/2009/03/18/1415503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值