首页 / 浏览问题 / 组件GIS / 问题详情
导入tif格式文件生成地图
9EXP 2022年04月28日
java调用导入数据集只能同时处理一个;

如果第一个没有处理完成再次调用只会保存第二个;第一个就丢失了;

        String mapName = "y"+UUID.randomUUID().toString().replace("-", "").substring(1,32);

        // 本地文件路径 导入本地文件路径
        String urlpath = "D:/";
        Workspace workspace = new Workspace();
        WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo();
        workspaceConnectionInfo.setType(WorkspaceType.SMWU);
        //更换服务器地址路径 iservice 配置文件路径
        String file = SmfConfig.getIervserpath();
        workspaceConnectionInfo.setServer(file);
        workspace.open(workspaceConnectionInfo);
        //打开数据源
        Datasource datasource = workspace.getDatasources().get("tif");
        if(datasource.isOpened()) {
            ImportSettingTIF est=new ImportSettingTIF(urlpath, datasource);//需导入tif路径
            est.setMultiBandImportMode(MultiBandImportMode.MULTIBAND);
            est.setImportingAsGrid(false);
            est.setSourceFileCharset(Charset.ANSI);
            est.setTargetEncodeType(EncodeType.PNG);
            est.setImportMode(ImportMode.NONE);
            est.setPyramidBuilt(true);//是否自动生成影像金字塔
            PrjCoordSys pcs=new PrjCoordSys();
            pcs.setType(PrjCoordSysType.PCS_NON_EARTH);
            est.setTargetPrjCoordSys(pcs);
            //设置导入数据集名称
            System.out.println("生成中");
            est.setTargetDatasetName(mapName);//数据集名称,与下面一致
            //新建导入任务
            DataImport di=new DataImport();
            di.getImportSettings().add(est);
            //导入任务启动
            ImportResult r=di.run();
            int i=r.getFailedSettings().length;//失败任务个数                
            //获取导入的数据集
            Dataset dataset = datasource.getDatasets().get(mapName);//数据集名称
            //新建地图
            Map map=new Map();
            map.setWorkspace(workspace);
            map.getLayers().add(dataset, true);
            //地图全幅显示
            map.viewEntire();
            workspace.getMaps().add(mapName, map.toXML());//自己命名,地图名称
            
            //保存工作空间
            workspace.save();
            datasource.close();
            workspace.close();
            workspace.dispose();  
        }

1个回答

您好,DataImport.run 确实一次导入过程结束前只能执行一次,不过该类是支持批量导入的,建议您调整您的导入逻辑,DataImport.getImportSettings().add() 方法支持添加多个要导入的文件配置,您可以将需要导入的文件配置信息都添加到 DataImport 对象后再执行 run 方法,一次性完成数据的导入操作。

希望可以帮到您。
2,158EXP 2022年04月28日
...