|
阅读:2038回复:6
在线求教通过MO写shapefile属性表速度慢的问题!!
<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> |
|
|
1楼#
发布于:2004-09-08 12:26
<P>使用了autoflush = false也不管用!!</P><P>在线求救!</P>
|
|
|
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" />
|
|
|
3楼#
发布于:2004-09-08 17:43
呵呵,最近没上来看,哈了可以贴上看看了
|
|
|
|
4楼#
发布于:2004-09-09 11:29
没得办法啦!
|
|
|
|
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>
|
|
|
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编辑过]
|
|