首页 / 浏览问题 / 组件GIS / 问题详情
ImportSettingModelOSG导入obj文件
9EXP 2022年05月24日

使用iObjects Java导入obj文件,在Windows上执行可以导入,在Linux执行导入无结果(未报错但数据源中没有导入的数据集),代码如下

ImportSettingModelOSG importSettingModelOSG = new ImportSettingModelOSG(filePath, datasource);
// 结果设置
importSettingModelOSG.setTargetDatasetName(datasetName);
importSettingModelOSG.setTargetEncodeType(EncodeType.BYTE);
// 转换参数
importSettingModelOSG.setPosition(new Point3D(0, 0, 0));
// 源文件信息
importSettingModelOSG.setSourceFileCharset(Charset.DEFAULT);

DataImport importer = new DataImport();
importer.getImportSettings().add(importSettingModelOSG);
importer.run();

2 个回答

您好,请问您使用的是哪个版本的iObjects Java组件呢?我基于您的代码编写了一个测试程序,代码如下,打成Jar包后在Linux系统上运行(iObjects Java 10.2.1),是能够正常导入obj文件的。

import com.supermap.data.*;
import com.supermap.data.conversion.DataImport;
import com.supermap.data.conversion.ImportResult;
import com.supermap.data.conversion.ImportSettingModelOSG;

import java.io.File;

public class Main {
    public static void main(String[] args) {
        try {
            Workspace workspace = new Workspace();
            Datasources datasources = workspace.getDatasources();
            DatasourceConnectionInfo connectionInfo = new DatasourceConnectionInfo();
            connectionInfo.setEngineType(EngineType.MEMORY);
            Datasource datasource = datasources.create(connectionInfo);
            if (datasource == null) {
                System.out.println("新建内存数据源失败!!!");
                return;
            }

            String filePath = args[0];
            if (!new File(filePath).exists()) {
                System.out.println(filePath + "文件不存在!!!");
                return;
            }

            ImportSettingModelOSG importSettingModelOSG = new ImportSettingModelOSG(filePath, datasource);
            importSettingModelOSG.setTargetEncodeType(EncodeType.BYTE);
            importSettingModelOSG.setPosition(new Point3D(0, 0, 0));
            importSettingModelOSG.setSourceFileCharset(Charset.DEFAULT);

            DataImport importer = new DataImport();
            importer.getImportSettings().add(importSettingModelOSG);
            ImportResult importResult = importer.run();
            if (importResult.getSucceedSettings().length == 0) {
                System.out.println("导入数据失败!!!");
                return;
            }

            Datasets datasets = datasource.getDatasets();
            for (int i = 0; i < datasets.getCount(); i++) {
                Dataset dataset = datasets.get(i);
                System.out.println("数据集名称:" + dataset.getName());
            }
        } catch (Exception e) {
            System.out.print(e.getLocalizedMessage());
        }
    }
}

建议您检查一下您的iObjects Java组件版本,可以使用上述代码尝试在Linux系统上运行看看效果。

希望可以帮到您。

2,138EXP 2022年05月24日
我这边也是10.2.1,我使用的数据库型数据源(pg)。我是直接打开的数据源,我试一下加个工作空间
直接打开数据源和从工作空间打开没有影响,目前的情况就只有windows可以成功,linux没有;版本都是10.2.1,ImportResult没有成功或失败的提示,只返回设置的ImportSetting,没有可以排查的方式
是的,Linux环境没有配置好,建议您参考帮助文档中的Linux环境部署,将环境配置好,不然使用的时候会出异常。
我们下载的免安装版本,这个.so缺少的话怎么去补呢
缺少的话可以尝试下载完整版或者当前版本的上一个版本,找到当前缺少的.so文件,拷贝到对应的路径下即可补全

使用Linux 系统环境检测工具有点问题,可能是这个导致的吗?

9EXP 2022年05月24日
...