超图UDBX文件数据集创建时表名超过17长度被截取丢失问题

使用在线数据源创建离线数据源UDBX表名称长度丢失

因超图组件开发时不支持postgis版本控制,采用离线文件udbx方式进行版本管理,进行使用在线数据源生成udbx文件时,发现创建的表名长度丢失,在线数据源表名称长度18位,但是创建的uxbd文件中仅17位.

编写代码如下

//离线数据源位置 udbx
string dataSourceFile = $@"{System.Environment.CurrentDirectory}\{Guid.NewGuid()}.udbx";
//声明离线数据源
var dci = new DatasourceConnectionInfo
            {
                Server = dataSourceFile
            };
dci.EngineType = EngineTypeWrap.GetEngineTypeByExt(Path.GetExtension(dci.Server));
dci.Alias = CommonUtilities.GetAvailableDatasourceAlias(workspace, Path.GetFileNameWithoutExtension(dci.Server), 0);
var datasource = DataViewToolKit.CreateDatasource(workspace, dci);
if (datasource != null)
{
    datasource.PrjCoordSys = new PrjCoordSys();
}
//遍历创建离线数据集
foreach (Dataset datasetonline in datasourceonline.Datasets)
{
Dataset dataset = datasource.Datasets.CreateFromTemplate(datasetonline.TableName, datasetonline.Dataset);
datasource.Datasets.Rename(datasetonline.TableName, datasetonline.Name);
var offlineDataset = (DatasetVector)dataset;
offlineDataset.Append(sourceRecordset);
datasource.Flush(gisLayer.Layer.Dataset.Name);
// 依次关闭所有对象
sourceRecordset.Dispose();
}

在这里插入图片描述

导致原因

UDBX采用的sqllite存储,17位表名长度限制于sqllite无关,经与超图技术支持沟通,解释为UDBX文件设计初参考gis国标要求,设计为表名不超过17个英文字符.

解决方案

在表名被截取的情况下,可以将真实的表名存储到数据集Dataset.Description中,用于后面在线数据集与离线数据集的比对

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值