yhtonline
路人甲
路人甲
  • 注册日期2004-08-18
  • 发帖数12
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2038回复:6

在线求教通过MO写shapefile属性表速度慢的问题!!

楼主#
更多 发布于:2004-09-08 09:55
<P>在项目中遇到,需要向一个shapefle文件中写很多(大几千)条属性纪录的问题代码如下:</P>
<P>for i =0 to 5000</P>
<P>  recset.edit</P>
<P>  recset.addnew</P>
<P>    recset.field("x").value = x '添加属性值</P>
<P>  recset.update</P>
<P>next i</P>
<P>速度奇慢,发现每次调用update都要写磁盘!!!有没有减少写磁盘次数的方法?再线等!!!!</P>
喜欢0 评分0
yhtonline
路人甲
路人甲
  • 注册日期2004-08-18
  • 发帖数12
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-08 12:26
<P>使用了autoflush = false也不管用!!</P><P>在线求救!</P>
举报 回复(0) 喜欢(0)     评分
yhtonline
路人甲
路人甲
  • 注册日期2004-08-18
  • 发帖数12
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-08 15:31
ok了!<img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2004-09-08 17:43
呵呵,最近没上来看,哈了可以贴上看看了
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-09 11:29
没得办法啦!
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
ZHYP
路人甲
路人甲
  • 注册日期2003-12-11
  • 发帖数27
  • QQ
  • 铜币205枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-09-13 09:45
<P><b><FONT color=#000066>yhtonlin</FONT></b></P><P><b><FONT color=#000066></FONT></b> </P><P><b><FONT color=#000066>问题是怎样解决的啊?</P><P>我也是使用了autoflush = false也不管用!!</P></FONT></b>
举报 回复(0) 喜欢(0)     评分
yhtonline
路人甲
路人甲
  • 注册日期2004-08-18
  • 发帖数12
  • QQ
  • 铜币173枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-09-15 09:33
<P>我也很奇怪,感觉代码没有动,就ok了。好像得从新生成那个shapefile。下边这段代码没有速度问题。</P>
<P> DstRecs.AutoFlush = false        </P>
<P>While Not SrcRecs.EOF
            Flag = False
            CurID = SrcRecs.Fields("ID").Value
            DstRecs.MoveFirst
      
            FieldIndex = 0
            While FieldIndex < IDString.Count And Flag = False
                If CurID = IDString.Item(FieldIndex) Then
                Flag = True
                End If
                FieldIndex = FieldIndex + 1
            Wend
            
            If Flag = False Then '没有重复的
                DstRecs.AddNew
                For FieldIndex = 0 To PtDataFieldsNm.Count - 1
                    DstRecs.Fields(PtDataFieldsNm(FieldIndex)).Value = SrcRecs.Fields(PtDataFieldsNm(FieldIndex)).Value
                Next FieldIndex
                DstRecs.Update
            End If
            SrcRecs.MoveNext
        Wend
          
        
        DstRecs.StopEditing
        DstRecs.AutoFlush = True</P>
[此贴子已经被作者于2004-9-15 9:35:04编辑过]
举报 回复(0) 喜欢(0)     评分
游客

返回顶部