SuperMap iObjects Java 10i 知识库
数据转换  

5     数据转换的实现

5.1应用场景

场景1:用户手中有在 AutoCAD 平台上的 DWG 格式文件,文件名为:Polyline.dwg,该文件的存储位置…\SampleData\DataExchange\DwgImport。用户希望通过SuperMap 组件产品的数据转换功能,将此 DWG 文件导入为SuperMap平台的矢量数据集(DatasetVector)。此外,用户也希望在 Mapinfo平台上的 WOR 工作空间以及 IMG 数据,能在 SuperMap 平台中继续使用。

场景2:用户在 SuperMap 组件产品平台上制作了矢量数据集与栅格数据集,名字为China400,存储在名为 DataExchange.smwu 的工作空间中。用户希望能将该数据集导出为DWG格式,以便于日后在 AutoCAD 平台上继续使用,同时用户还指定了目标 DWG 文件的文件名为 ExportDwg.dwg,要求存储在…\SampleData\DataExchange\DwgExport 目录下。此外,用户还希望将矢量数据导出为 KML 格式以及将 DataExchange.smwu 工作空间中名为 Day 的栅格数据导出为 TIF 格式。

5.2界面设计

程序界面的设计效果如图 5‑1所示:

51 界面设计效果图

5.3初始化相关变量并打开地图

在添加数据导入导出功能前,需先进行相关变量的初始化,连接工作空间并打开地图,运行效果如图 5‑2所示。

代码实现如下:

private void initialize() {

    try {

           //构造工作空间连接信息

WorkspaceConnectionInfo dataExchangeWorkspaceConnectionInfo = new WorkspaceConnectionInfo();

           //设置连接信息

           dataExchangeWorkspaceConnectionInfo

                             .setServer("../SampleData/DataExchange/DataExchange.smwu");

           dataExchangeWorkspaceConnectionInfo.setType(WorkspaceType.SMWU);

           //打开工作空间

           m_workspace.open(dataExchangeWorkspaceConnectionInfo);

    } catch (Exception e) {

           e.printStackTrace();

    }

    //设置工作空间

    m_mapControl.getMap().setWorkspace(m_workspace);

    m_desDatasource = m_workspace.getDatasources().get("DesDatasource");

    m_desDatasource.getDatasets().deleteAll();

    if(m_workspace.getMaps().getCount() == 1){

           m_workspace.getMaps().remove(0);

           m_workspace.save();

    }

    //获取矢量数据集China400

    m_sourceDatasetVector = m_workspace.getDatasources().get(

                         "SrcDatasource").getDatasets().get("China400");

    //获取栅格数据Day

    m_sourceDatasetImage = m_workspace.getDatasources()

                         .get("SrcDatasource").getDatasets().get("Day");

    //显示地图

    m_mapControl.getMap().getLayers().add(m_sourceDatasetVector, true);

    m_mapControl.getMap().viewEntire();

    m_mapControl.getMap().refresh();

    }

 

52 程序运行初始效果图

5.4数据导入的实现

对于将矢量和栅格数据分别导入为 WORKML DWG 格式,它们的实现方式基本相同,下面给出将数据导入为 DWG 格式的代码实现,运行效果如图 5‑3所示。

导入 DWG 数据的实现代码:

//导入 DWG 数据

public void importDWG() {

    try {

           //构造DWG导入设置对象(ImportSettingDWG

           ImportSettingDWG importSettingDWG = new ImportSettingDWG();

           //设置导入模式

           importSettingDWG.setImportMode(ImportMode.OVERWRITE);

           //设置数据源及路径

           importSettingDWG.setTargetDatasource(m_desDatasource);                

           importSettingDWG.setSourceFilePath

("../SampleData/DataExchange/DwgImport/Polyline.dwg");

                 

           //构造数据导入类对象(DataImport

           DataImport dataImport = new DataImport();

           //在导入设置信息集合类对象(ImportingSettings)中,添加DWG导入设置对象

           dataImport.getImportSettings().add(importSettingDWG);

           //实现数据的转换

           dataImport.run();

                 

           //清空所有图层

           m_mapControl.getMap().getLayers().clear();

           //在地图控件中添加转换后的DWG数据集合

           m_mapControl.getMap().getLayers().add(

                                m_desDatasource.getDatasets().get("Polyline"), true);

           //全幅显示地图并刷新

           m_mapControl.getMap().viewEntire();

           m_mapControl.getMap().refresh();

    } catch (Exception e) {

           System.out.println(e.getMessage());

    }

}

 

53 导入 DWG 数据效果图

5.5数据导出的实现

对于 TIFDWGIMG 数据的导出,它们的实现方式基本相同,下面给出导出 DWG 数据的代码实现。

导出为 DWG 格式的代码实现如下:

//导出为 DWG 格式

public void exportDWG() {

    try {

           //构造TIF数据导出设置对象(ExportSettingDWG

           ExportSettingDWG exportSettingDWG = new ExportSettingDWG();

           //设置导出目录中存在同名文件时,是否强制覆盖。

           exportSettingDWG.setOverwrite(true);

           try{

                  //构造导出数据所在文件夹

                  File file = new File("../SampleData/DataExchange/DwgExport");

                  if(!file.exists()){

                         file.mkdirs();

                         }

           }catch (Exception e) {

                  e.printStackTrace();

           }

         //设置目标数据的路径

           exportSettingDWG.setTargetFilePath

("../SampleData/DataExchange/DwgExport/ExportDwg.dwg");

           //设置数据源

           exportSettingDWG.setSourceData(m_sourceDatasetVector);

           //构造数据导出信息设置类对象(DataExport

           DataExport dataExport = new DataExport();

           //在导出设置信息集合类对象(ExportingSettings)中,添加DWG数据导出设置对象

           dataExport.getExportSettings().add(exportSettingDWG);

           //实现导出

           dataExport.run();                

           try {

              //定位到文件所在目录

                  File file = new File("../SampleData/DataExchange/DwgExport/ExportDwg.dwg");

                  Runtime.getRuntime().exec("explorer /n,/select, " + file.getAbsolutePath());

           } catch (IOException e) {

                  e.printStackTrace();

           }

    } catch (Exception e) {

           System.out.println(e.getMessage());

    }

}

 


  版权所有© 北京超图软件股份有限公司。保留所有权利。