首页 / 浏览问题 / 组件GIS / 问题详情
iobjectsjava11i 从现有数据集进行复制,字段缺失
25EXP 2022年08月10日

使用产品:iobjectsjava 11i 操作系统:win10 x64
数据类型: postgis数据源 和 内存型数据源
问题详细描述:使用iobjectsjava11i打开一个现有的postgis数据源,并创建一个内存型数据源,在postgis数据源使用createFromTemplate方法复制指定的数据集表结构到内存数据源时,gid字段没有复制过去。

原数据集转换成recordset的字段,复制后的数据集转换成recordset的字段

原数据集的gid字段为什么没有复制过去

1个回答

您好,请问您的源数据集中的gid字段是如何创建的呢?我在本机尝试复制数据集结构是会包含gid字段的。

希望可以帮到您。
2,253EXP 2022年08月10日
原postgis数据源是用postgis组件导入的shp文件,导入后数据表中就有gid字段
您好,我在本地通过 shp2pgsql 工具直接将 shp 文件数据导入 PostGIS 数据库中,的确会存在 gid 字段,gid 字段是 shp2pgsql 工具导入表后的生成的系统字段,与 SuperMap 表的 SmID 完全对等,所以在创建表结构模板的时候不会考虑 gid 字段。
SmID是会替换掉原来的自增主键字段吗?

现在的需求是要把原数据表按条件过滤拆分成多个图层显示,不同的图层在编辑时互不干扰,编辑操作完成后需要把数据更新到原数据表,有什么办法能让原来的数据集和新创建的数据集中每条记录对应起来吗?
根据您的需求,建议您在原表中新增一个主键字段,替代gid的功能,后面还原的时候根据新增的主键字段内容将每条记录的对应起来
你好,我把新数据集newDataset手动添加一个gid字段,再把原数据集转换为recordset,使用newDataset.append(recordset)导入数据。

debug时newDataset中已存在gid字段,recordset中有gid的值,append返回为true,但是newDataset中的gid字段值还是为空
找到问题了,新增加的gid字段类型设为了FieldType.INT16,数据表中为int4,把gid类型改为INT32就能正常导入了
...