超图自定义数据集名称 - zLulus/My_Note GitHub Wiki
关于数据库建表、导入数据的问题,是:
数据集名称和实际表名不是一个概念,二者通过smregister表建立联系,SmDatasetName是数据集名称,SmTableName是实际表名
会出现两种情况:
1.原数据源(数据集名称为A),在smregister表中存在数据集A的记录,则根据SmTableName进行(覆盖、追加)操作
2.原数据源(数据集名称为A),smregister不存在数据集A的记录,则新增一条记录,自动在数据库生成表名为SmTableName的表(SmTableName名称由超图设定),并录入数据源的数据
所以有多种管理数据源的方法:
1.官方做法
全局设置即可
//启动时设置
Toolkit.SetDtNameAsTableName(true);
参考资料
超图的流程是创建数据集表都在idesktop
(软件)里面进行,要修改表的内容可以在数据库里做,还有尽量不要修改系统字段,sm开头的
2.(使用超图sdk新建数据库)、手动建表A、添加smregister+smfieldinfo的记录
在smregister表中录入一条数据,保证表名与smregister表中的SmTableName
一致(比如SmTableName=A)
在smfieldinfo表中录入多条字段数据,SmDatasetID
对标smregister中的SmDatasetID,字段
对标A表的实际字段
之后使用超图sdk连接数据源,读取名为SmDatasetName
的数据集,进行数据录入,则数据会录入实际表名为A的表中
即实际表名为SmTableName的字段值,在代码中使用SmDatasetName(数据集名称)的字段值
手动建表A,需要建立超图相关字段
,不同的空间数据类型有不同的字段,详情看这里
不能手动修改超图的这些系统字段
,其他字段可以修改
如果自建表成功,录入数据失败,考虑表的坐标系是否正确,使用SuperMap iDesktop
修改表的坐标系(超图内置坐标系/导入.shp文件的坐标系)
3.使用超图软件连接数据源,建立数据集,在smregister表修改实际表名+索引
4.让超图来管实际表名(SmTableName),自己只使用SmDatasetName
则实际表名不受开发者控制