vonpower
外卖仔
外卖仔
  • 注册日期2005-07-19
  • 发帖数31
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1490回复:2

[求助]FeatureClass更新的速度问题?

楼主#
更多 发布于:2006-05-18 11:27
<P>现在需要对featureclass中的记录中某个字段进行更改,比如说乘上1000。但是处理16000条feature,在我的p43。0  1G上需要用40秒,不能满足用户需要,请问大家有没有什么什么好的建议,可以提高速度?</P>
<P>现在我的代码:</P>
<P>IFeatureCursor cursor = pOutFClass.IFeatureClass_update(null, false);<BR>IFeature feature = cursor.nextFeature();<BR>while (feature != null) {</P>
<P><BR>//GCIdx是要修改的字段的index<BR>d = Double.parseDouble(feature.getValue(GCIdx).toString())/100000;<BR>feature.setValue(scoreIdx, value);<BR>cursor.updateFeature(feature);<BR>feature = cursor.nextFeature();</P>
<P>    }</P>
喜欢0 评分0
我的blog: http://my.opera.com/VonPower/ 欢迎对: GIS、智能交通、AE——AO开发、JAVA技术、。NET技术、设计模式、软件工程等感兴趣的同学 加入QQ群:10537919 一起努力吧~
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2006-05-18 20:06
<P>使用ifeaturebuffer接口来更新,可以加快更新数据速度</P>
<P>帮助例子如下</P>
<H1>IFeatureBuffer Example</H1><CODE><PRE>Public Sub FeatureBufferCode()
    Dim pWorFact As IWorkspaceFactory
    Dim pWor As IWorkspace
    Dim pFeatWor As IFeatureWorkspace
    Dim pWorEdit As IWorkspaceEdit
    Dim pFC As IFeatureClass
    Dim pFeatureBuffer As IFeatureBuffer
    Dim pFeatureCursor As IFeatureCursor
    Dim pFeature As IFeature
    Dim pPolyline As IPolyline
    Dim pt As IPoint
    Dim q As Long, i As Long
    
    Set pWorFact = New AccessWorkspaceFactory
    Set pWor = pWorFact.OpenFromFile("D:\Testing\Data\GDB1.mdb", 0)
    Set pFeatWor = pWor
    Set pWorEdit = pWor
    Set pFC = pFeatWor.OpenFeatureClass("casing")
    
    pWorEdit.StartEditing True
    pWorEdit.StartEditOperation
        Set pFeatureBuffer = pFC.CreateFeatureBuffer
        Set pFeatureCursor = pFC.Insert(True)
        Set pFeature = pFeatureBuffer
        Set pPolyline = New Polyline
        
        'Create 100 features using FeatureBuffer and insert into a feature cursor
        For i = 0 To 99
            'Create the polyline geometry to assign to the new feature
            Set pt = New Point
            pt.X = 2213300 + i
            pt.Y = 396500 + i
            pPolyline.FromPoint = pt
            Set pt = New Point
            pt.X = 2213300 + i
            pt.Y = 396500 + i
            pPolyline.ToPoint = pt
            
            'Set the feature's shape
            Set pFeature.Shape = pPolyline
            
            'Insert the feature into the feature cursor
            q = pFeatureCursor.InsertFeature(pFeatureBuffer)
        Next i
        
        'Flush the feature cursor to the database
        pFeatureCursor.Flush
    pWorEdit.StopEditOperation
    pWorEdit.StopEditing True
        
End Sub</PRE></CODE>
举报 回复(0) 喜欢(0)     评分
vonpower
外卖仔
外卖仔
  • 注册日期2005-07-19
  • 发帖数31
  • QQ
  • 铜币224枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-05-18 20:57
楼上的是插入的例子嘛,ifeaturebuffer怎么用来做更新?请GIS明示~^_^~
我的blog: http://my.opera.com/VonPower/ 欢迎对: GIS、智能交通、AE——AO开发、JAVA技术、。NET技术、设计模式、软件工程等感兴趣的同学 加入QQ群:10537919 一起努力吧~
举报 回复(0) 喜欢(0)     评分
游客

返回顶部