我正在处理一个矢量图层,我必须将所有 n+i [id] 属性合并到实体(n)[id] 中,其中实体(n+i)[id] 等于实体(n)[id],然后删除所有 n+i 个实体。一切正常,但我在提交更改之前调用了几次startEditing
函数,我的问题是:调用commitChanges
closesstartEditing
还是让它打开,就像它是我们需要在工作完成后释放的文件描述符或指针一样?
代码是:
olayer.startEditing()
olayer.changeAttributeValue(n,id_obj,id_obj_sum,NULL,True)
olayer.commitChanges()
olayer.startEditing()
i= i-1
while i >=1:
olayer.deleteFeature(n+i)
i=i-1
olayer.commitChanges()
如您所见,我们调用了多次olayer.startEditing
,甚至更多,因为所有代码都在 while 正文中......那么这会产生大量的 startEditing “指针”还是只是不断地将 olayer 可编辑状态设置为“对版本开放”?
实际上代码可以工作,但是速度很慢,这是原因吗?