数据管理

问:当打开文件型数据源时,为什么会提示是否以只读方式打开?
答: 若文件型数据源的文件属性为只读,在打开时,会提示用户是否以只读方式打开,如果选择以只读方式打开,则可以打开该数据源,但不可以对该数据源进行编辑操作;如果不选择以只读方式打开,则不能打开该数据源。

问:为什么成功打开了数据源后数据源中的数据集都不见了?
答: 这种情况可能出现在打开数据库型数据源时,如果用户取消了“自动连接”复选框的勾选状态,则成功打开该数据库型数据源后,该数据源下的数据集不会自动打开,因此,会出现数据源下的数据集不见了的情况。

问:为什么应用程序中“开始”选项卡中“打开”下拉按钮的“Oracle”、“Oracle Plus”以及“新建”下拉按钮的“Oracle Plus”项不可用?
答: 如果没有安装 Oracle 数据库,有关 Oracle 数据库的操作将不可用,如打开 Oracle 工作空间、Oracle Plus 数据源以及新建 Oracle Plus 数据源。

问:为什么应用程序中使用 sys、system 这两个用户名称创建 Oracle 和 Oracle Spatial 数据库型数据源时,会创建失败,并且输出窗口会提示:系统用户不允许创建数据源?
答: 由于sys、system 这两个系统用户的表空间较小,为防止空间被占满,在新建 Oracle 和 Oracle Spatial 数据库型数据源时,不支持使用这两个系统用户创建数据源。

问:将 Oracle 数据源下的数据集到另一个 Oracle 数据源中,一部分复制成功一部分复制失败,并在桌面的 log 中报以下错误,应该如何解决该问题呢?
答: 在数据库服务端和客户端配置 sqlnet.ora 文件,设置参数 SQLNET.SEND_TIMEOUT=600,重新启动监听,即可解决该问题。

问:为什么成功为属性表添加了新的字段后,在属性表中却看不到?
答: 如果添加字段时,属性表是打开的,当为属性表添加了新的字段后,添加的结果不能实时反映到打开的属性表中,只有关闭属性表再次打开后,才可以看到添加的结果。

问:属性表选项卡中的编辑组里的“添加行”按钮可以为属性表添加记录,为什么已经打开了数据集的属性表,“添加行”按钮仍不可用?
答: 这里只支持对非只读的纯属性数据集的属性表追加行,对于其他数据集的属性表,“添加行”按钮不可用。

问:UDB 与 SDB Plus 同是文件型数据源,有什么区别吗,UDB 这个引擎解决了什么问题?
答: UDB 是新的文件型数据源引擎,相比 SDB Plus 数据源引擎具有如下优势:
1. 具有海量的数据吞吐能力;
2. 跨平台的数据共享能力;
3.高效读写能力;
4. 采用多项技术确保安全,如:双层加密模式;CAID 模式存储操作;
5. 跨线程操作,但不支持多线程同时访问。

问:在对 UDB 数据的中文属性信息进行浏览和查询的时候,为什么有时候会出现信息丢失的情况?
答: 由于有些 UDB 数据源是基于 SuperMap Objects .NET SP2 之前的版本创建的,而组件 SP2 版本对中文字段的存储编码做了一些完善, 优化了 UDB 数据源对中文支持。因此,由于组件版本的升级,有些基于组件 SP2 之前版本创建的 UDB 数据源,在对中文属性信息进行浏览和查询时,会出现信息丢失的情况。
解决方法: 在 中新建 UDB 数据源,将有问题的 UDB 数据源中的所有数据集复制到新建的数据源中,即能修复之前数据源对中文查询结果有信息丢失的情况。

问:为什么新建一个数据集后,无法在数据集中绘制对象?
答: 注意观察数据集的投影位置,地理坐标系下的数据集可绘制对象的范围必须在(-180,-90)至(180,90),在这个范围外将无法绘制对象。

问:在数据库数据源中支持的字段长度是多少?与数据库本身支持的最大长度一样吗?
答: 程序对数据集字段最大长度做了限制,最大长度支持为30个字节,即30个英文字母或者15个汉字;当原始数据库支持的字符数是大于30个字符时,在桌面显示时会将超出部分自动截断。

问:为什么直接打开工作空间、数据源或者缓存数据会失败?
答: 该问题是由于在某些操作系统下,相应窗体上部分控件被隐藏,无法输入相关参数所致。解决方法是:首先找到注册 HKEYCURRENTUSER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32,删除 OpenSavePidMRU 子项,重新打开即可。

问:在 SuperMap Deskpro .NET 6R或者SuperMap iDesktop 7C(7.0.0)版本创建的Oracle数据源,在7.1.2以上版本打开后,再次回到原来的版本,就打不开了,产品兼容性有问题,这该怎么解决?
答: 有两种解决的方案,需要在数据库中直接对表进行操作,但需要注意投影要重新设置,改之前注意备份投影信息。 方案一:

update smdatasourceinfo set smprojectinfo = emptyblob() where dbmslob.getlength(smprojectinfo)>199;

update smregister set smprojectinfo = emptyblob() where dbmslob.getlength(smprojectinfo)>199;

update smimgregister set smprojectinfo = emptyblob() where dbmslob.getlength(smprojectinfo)>199;

commit;

但由于曾有用户报反应方案一报错 “ORA-00997:非法使用LONG类型错误”,故提供方案二。

方案二:

alter table smdatasourceinfo drop (smprojectinfo);

alter table smdatasourceinfo add (smprojectinfo blob);

alter table smregister drop (smprojectinfo);

alter table smregister add (smprojectinfo blob);

alter table smimgregister drop (smprojectinfo);

alter table smimgregister add (smprojectinfo blob);

最后,请注意设置投影。

问:在进行网络数据集复制时,先只复制子数据集到一个新的UDB数据源中,再复制父数据集到此数据源中,父数据集复制成功,且打开正常。但是当关闭该UDB数据源后再次打开时,却发现复制的父数据集中没有了子数据集并且打开父数据集抛异常。
答: 因为UDB只能用_Node关联,先复制子数据集到UDB时子数据集名会被占用,所以此时再复制父数据集时会失败。可以在新UDB数据源中对子数据集进行重新命名后,再复制父数据集。

问:当电脑是 Win10和 Win8 操作系统时,SuperMap iDesktop中不能直接通过拖拽文件的方式打开工作空间、数据源等,如何解决该问题?
答: 不支持拖拽是由于桌面程序无法获取到拖拽的操作系统消息。Win8和 Win10使用了UAC 的权限控制系统,拖拽操作使用的是非管理员权限,而桌面程序是以管理员权限运行的。高权限不能接受低权限的系统消息。

我们给出的解决方案是:更改操作系统的 UAC 权限控制以支持拖拽操作,具体操作:执行产品包中 Tools\EnableLUA\EnableLUA.reg,然后重启电脑即可。

问:在使用32位的 iDesktop 连接 Oracle 数据库数据源时,提示连接失败?
答: 是由于使用了32位 的 Oracle 客户端且为10g 以下版本,同时应用程序所在的路径里包含了右括号”)“,所以会无法连接到 Oracle 数据库。可以通过以下三种方案解决连接失败的问题:

1.升级 Oracle 客户端,升级到11g 或更新版本。

2.使用64位的 Oracle 客户端,并同时使用64位的 iDesktop 版本的应用程序。

3.将 iDesktop 应用程序所在文件移动到不包含右括号“)”路径下 。

问:当遇到镶嵌数据集创建建概视图后,将镶嵌数据集缩放到很小比例尺下时,看不到概视图的问题。
答: 镶嵌数据集概视图的显示受 SmMinPS/SmMaxPS 控制,当显示栅格的分辨率大于SmMaxPS值时,镶嵌数据集将不显示。

解决方案为:若用户数据范围较大、拼接影像较多,需要在很小比例尺下,依然能查看数据,可通过修改轮廓属性表中“ SmMinPSSmMaxPS ”两个字段值,使小比例下SmMaxPS值依然大于栅格显示的分辨率。