使用产品:SuperMap iObjects Java 11i(2024) v11.3.0 操作系统:win11 x64/ubuntu-22.04.5-desktop-amd64
数据类型: 文件型
问题详细描述:使用iObjects Java SDK提供的方法,编写了一段将skp格式文件转化为udbx格式文件的代码。在windows环境上,使用windows版本的sdk,代码正常运行,转换结果文件中的数据也正确;但在linux环境中,使用linux版本的sdk,代码运行不报错,但转换出来的udbx文件是空的,没有数据集。如下图所示:
java代码如下:
public static void skpToUdbx() {
DataImport dataImport = null;
DatasourceConnectionInfo datasourceConnectionInfo = null;
String skpFilePath = "E:\\Test\\test111.skp";
String udbxFilePath = "E:\\Test\\test111.udbx";
try {
// 创建数据源连接
datasourceConnectionInfo = DatasourceUtils.createDatasourceConnectionInfo(udbxFilePath, EngineType.UDBX);
// 设置引擎类型,否则默认生成udb数据类型
datasourceConnectionInfo.setEngineType(EngineType.UDBX);
// 将文件写入到udbx文件
ImportSetting setting = new ImportSettingSKP();
setting.setImportMode(ImportMode.OVERWRITE);
setting.setSourceFilePath(skpFilePath);
setting.setTargetDatasourceConnectionInfo(datasourceConnectionInfo);
setting.setTargetDatasetName("test111");
// 设置投影坐标
PrjCoordSys prjCoordSys = new PrjCoordSys(4490);
setting.setTargetPrjCoordSys(prjCoordSys);
dataImport = new DataImport();
dataImport.getImportSettings().add(setting);
log.info("文件转换udbx,导入源文件到udbx文件中");
ImportResult importResult = dataImport.run();
log.info("文件转换结束");
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (dataImport!=null) {
dataImport.dispose();
}
if (datasourceConnectionInfo!=null) {
datasourceConnectionInfo.dispose();
}
}
}
问题重现步骤: 1. 分别在windows环境和linux环境安装iObjects Java SDK V11.3.0
2. 使用同一个skp文件,分别在windows环境和linux环境运行上述代码,即可得到结果不同的udbx文件