如何实现矢量数据集的二三维转换?

0 投票
想实现 iDesktop 中的数据集类型转换功能,主要是实现二维点、线数据集与三维点、线数据集的互转,使用的是iObject 10i,请问需要用到那个函数呢?谢谢!
6月 22 分类:  44次浏览 | 用户: hs1234 初出茅庐 (26 分)

1个回答

0 投票
 
已采纳
您好,IDesktop中的点线面矢量数据集的转换通过的是数据集与几何对象操作来实现的。

如二维点转二维线,是通过点数据集属性表的字段,分组排序使用点对象数据构建线对象,装入线数据集中;

如二维线转转二维面,是通过线对象GeoLine的ConvertToRegion转为面对想,状图面数据集中等等。

均是对象与数据集的操作,您具体需要开发什么类型数据集到什么类型数据集转化。

希望可以帮助到您!
6月 22 用户: 执笔画月 名扬四海 (1,255 分)
采纳于 6月 22 用户:hs1234

您好,我想要做的是二维数据集与三维数据集之间的转换,以及二维线数据集与三维线数据集之间的转换。

常规来说的话,实现方案是从矢量数据集DatasetVecto得到Recordset记录集,用该记录集一个新的空的Recordset记录集(保持字段相同),遍历有数据的的Recordset记录集,取去几何对象GeoPoint/GeoLine,读取几何对象的x、y,从属性表中读取z,使用xyz构建三维点对象GeoPoint3D(线其实是点串),将该三维点对象存入新的Recordset中,并将对应属性数据赋予即可。遍历完成后用新Recordset构建矢量数据集DatasetVector即可。

非常规方法的话,一是在构建三维点线对象时都可以用XML来构建(XML必须符合GML 3.0规范),然后存入记录集,复制对应属性(有的话)。

还有一个是仅针对三维点数据集,使用数据集导入方法(如ImportSettingCSV)时,指定SetFieldsAsPoint属性为XYZ字段,导入后即可直接变成三维点数据集。
...