首页 / 浏览问题 / 组件GIS / 问题详情
使用iobject java转换skp文件失败
1EXP 2024年12月18日

使用产品: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文件

1个回答

您好,skp格式不支持Linux中导入的,您可以使用Linux版本的iDesktopX,右键导入可以看到是没有skp格式的。

因为skp格式是专用未开源的商业格式,无法直接解析,因此导入依赖于专用解析库,但skp解析库没有linux版本,因此无法支持Linux环境下导入。

开源模型格式或者存在Linux版本的官方、三方解析库我们是可以支持导入的。

希望可以帮助到您。
10,758EXP 2024年12月18日
...