首页 / 浏览问题 / 组件GIS / 问题详情
AppendFields方法效率慢,有无替代接口
35EXP 2022年05月16日
使用产品:supermap iobjects.net 10.2.1

问题描述:现在我有一个点数据集,有字段“点号”,但是没有点的高程信息;我通过别的方法得到了点的高程,存在了一个属性表中,表中有“点号”和“高程”两个字段,我想要把点高程添加到点数据集的属性表中。目前我是以“点号”为连接字段,调用DatasetVector.AppendFields方法实现“高程字段”的追加。但是数据量有几万条,这样处理太慢了。想问一下有没有更快的方法,可以解决这个问题

1个回答

您好,append操作属于表的join操作,数据记录多,连接操作肯定慢。建议您可以通过批处理(Recordset.BatchEditor)的方式,调用recordset.addNew(Geometry geometry,java.util.Map<java.lang.String,java.lang.Object> values) 接口,实现批量提交更新,减少对表的操作,提升字段值更新效率。

希望可以帮到您。
2,253EXP 2022年05月16日
现在的情况是两个表数据量都很大,点号是乱序的。表1中有10个不同的点,包括点号和高程;表2中也有10万个不同的点,但是只有点号没有高程。我要怎么效率较高地把表1中的高程信息,添加到表2中呢?
这种情况,两边的记录在顺序上并不是一一对应的,感觉无法采用遍历表1,对表2采用 AddNew()的方法添加信息
您好,由于两边的记录在顺序上并不是一一对应的,如果数据体积不是很大的情况下,建议您可以尝试将表1的数据读取到内存,根据字段“点号”的值创建Dictionary,然后遍历表2时从Dictionary中取值,批处理更新高程值,这样效率会快一些。
...