com.supermap.data

类 Workspace

  • java.lang.Object
    • com.supermap.data.Workspace


  • public class Workspace
    extends java.lang.Object
    工作空间。

    工作空间是用户的工作环境,主要完成数据的组织和管理,包括打开、关闭、创建、保存工作空间文件(SXW,SMW,SXWU,SMWU,DEFAULT)。工作空间(Workspace)是 SuperMap 中的一个重要的概念,工作空间存储了一个工程项目(同一个事务过程)中所有的数据源,地图的组织关系,工作空间通过其中的数据源集合对象(Datasources),地图集合对象(Maps)来管理其下的数据源,地图。

    工作空间中的数据源集合(Datasources)只存储数据源的连接信息和位置等,实际的数据源都是存储在UDB 中。工作空间中的地图集合(Maps)中存储的是地图的一些配置信息,如地图包含图层的个数,图层引用的数据集,地图范围,背景风格等。

    在当前版本中,一个应用程序中允许多个工作空间共存,每个工作空间可以管理自己的一套数据源和地图等,但是值得注意的是不同的工作空间是不可以相互操作的。

    注意:当用户使用该工作空间对象进行编程时,如果将 WorkspaceMapControl 建立了关联,那么在进行对象的关闭时,一定需要注意关闭的顺序,如下:

    1. 关闭 Map 对象;
    2. 关闭 MapControl 对象;
    3. 关闭 Workspace 对象。
    Example:
    以下代码示范如何打开工作空间,从工作空间中取数据源,从数据源取数据集,查看数据集的描述信息以及如何保存工作空间。
     public void workspaceTest(){
            // 打开工作空间,取出工作空间中名为“World”的数据集,查询其描述信息
            Workspace workspace = new Workspace();
            WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo();
            workspaceConnectionInfo.setType(WorkspaceType.SMWU);
            String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
            String file = rootPath + "/SampleData/World/World.smwu";
            workspaceConnectionInfo.setServer(file);
            workspace.open(workspaceConnectionInfo);
            Datasource datasource = workspace.getDatasources().get(0);
            DatasetVector dataset = (DatasetVector) datasource.getDatasets().get( "World");
            System.out.println("数据集的描述信息为:" + dataset.getDescription());
    
            // 保存工作空间
            try {
                            workspace.save();
                    } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
    
            // 释放资源
            dataset.close();
            workspaceConnectionInfo.dispose();
            workspace.close();
            workspace.dispose();
        }
     
    • 构造器概要

      构造器 
      构造器和说明
      Workspace()
      构造一个新的 Workspace 对象。
    • 方法概要

      所有方法 实例方法 具体方法 
      限定符和类型 方法和说明
      void close()
      关闭工作空间。
      void dispose()
      释放该对象所占用的资源。
      java.lang.String getCaption()
      返回工作空间显示名称,便于用户做一些标识,可以修改。
      WorkspaceConnectionInfo getConnectionInfo()
      返回工作空间的连接信息。
      Datasources getDatasources()
      返回数据源集合对象。
      java.lang.String getDescription()
      返回用户加入的对当前工作空间的描述或说明性信息。
      Maps getMaps()
      返回工作空间中的地图集合对象。
      Resources getResources()
      返回工作空间的资源库对象。
      Scenes getScenes()
      获取工作空间中的三维场景集合对象。
      boolean isModified()
      返回工作空间的内容是否有改动,如果对工作空间的内容进行了一些修改,则返回 true,否则返回 false。
      boolean open(WorkspaceConnectionInfo connectionInfo)
      用于打开已有的工作空间文件。
      boolean save()
      保存工作空间, 通过设置工作空间的连接信息,可以实现保存新建的工作空间,另存为工作空间,保存当前打开的工作空间的功能 该接口需要捕捉异常。
      void setCaption(java.lang.String caption)
      设置工作空间显示名称,便于用户做一些标识,可以修改。
      void setDescription(java.lang.String description)
      设置用户加入的对当前工作空间的描述或说明性信息。
      • 从类继承的方法 java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • Workspace

        public Workspace()
        构造一个新的 Workspace 对象。
    • 方法详细资料

      • close

        public void close()
        关闭工作空间。工作空间的关闭之前确保使用的该工作空间的地图等内容关闭或断开链接。
      • dispose

        public void dispose()
        释放该对象所占用的资源。当调用该方法之后,此对象不再可用。

        对数据集进行操作后必须调用 dispose() 方法,否则数据修改内容不能被保存。

      • getConnectionInfo

        public WorkspaceConnectionInfo getConnectionInfo()
        返回工作空间的连接信息。
        返回:
        工作空间的连接信息。
        另请参阅:
        WorkspaceConnectionInfo
        Default:
        默认值为 {Name="",Type=Default,Version=UGC60,Server="",Database="",Driver="",User="",Password=""}。
      • getCaption

        public java.lang.String getCaption()
        返回工作空间显示名称,便于用户做一些标识,可以修改。
        返回:
        工作空间显示名称。
        Default:
        默认值为 "UntitledWorkspace"。
      • setCaption

        public void setCaption(java.lang.String caption)
        设置工作空间显示名称,便于用户做一些标识,可以修改。
        参数:
        caption - 工作空间显示名称。
      • getDatasources

        public Datasources getDatasources()
        返回数据源集合对象。

        数据源集合对象存储工作空间下的数据源的逻辑信息,如数据源数据的连接信息,位置等,并不存储实际的数据源数据。实际的数据源数据存储在关系型数据库或 UDB 文件中。工作空间的数据源集合对象主要用来管理该工作空间中的数据源,包括打开、创建、关闭等操作。

        返回:
        数据源集合对象。
        Default:
        默认值为一个初始化的 Datasources 对象。
      • getMaps

        public Maps getMaps()
        返回工作空间中的地图集合对象。地图集合对象存储当前工作空间里保存的所有地图,但通过该对象只能访问到地图的名称。如果想打开或者对工作空间下的某个地图进行操作,需要通过 SuperMap.Data.Mapping 程序包中的 Map 对象从此地图集合对象中返回名称,再进行访问。注意 Map Map 对象必须先连接工作空间,才能打开地图。
        返回:
        工作空间中的地图集合对象。
        Example:
        请参见 Map 的示例。
        Default:
        默认值为一个初始化的 Maps 对象。
      • isModified

        public boolean isModified()
        返回工作空间的内容是否有改动,如果对工作空间的内容进行了一些修改,则返回 true,否则返回 false。工作空间负责管理数据源、地图,其中任何一项内容发生变动,此属性都会返回 true,在关闭整个应用程序时,先用此属性判断工作空间是否已有改动,可用于提示用户是否需要存盘。
        返回:
        如果对工作空间的内容进行了一些修改,则返回 true,否则返回 false。
        Default:
        默认值为 false, 即工作空间中的内容没有改动。
      • getDescription

        public java.lang.String getDescription()
        返回用户加入的对当前工作空间的描述或说明性信息。
        返回:
        用户加入的对当前工作空间的描述或说明性信息。
        Default:
        默认值为一个空字符串。
      • setDescription

        public void setDescription(java.lang.String description)
        设置用户加入的对当前工作空间的描述或说明性信息。
        参数:
        description - 用户加入的对当前工作空间的描述或说明性信息。
      • open

        public boolean open(WorkspaceConnectionInfo connectionInfo)
        用于打开已有的工作空间文件。成功返回 true。

        打开工作空间时,数据源集合、地图集合都会被读入到内存中。如果其中的数据源被设置为自动连接,则在打开工作空间时就会连接到这些数据源数据,但如果要对数据进行访问,还需要打开数据源下某个具体的数据集;如果数据源没有被设置为自动连接,则只能返回数据源的别名,数据源中存储的数据集信息不可知,数据源中数据也不可用。

        当打开工作空间时,如果其中有某几个数据源没有被成功打开,而 open 方法仍然返回 true,可以通过查看日志来获悉哪些数据源未被成功打开。

        参数:
        connectionInfo - 用来打开工作空间的工作空间连接信息对象。
        返回:
        一个值指示工作空间是否打开,如果打开成功返回 true,否则返回 false。
      • save

        public boolean save()
                     throws java.lang.Exception
        保存工作空间, 通过设置工作空间的连接信息,可以实现保存新建的工作空间,另存为工作空间,保存当前打开的工作空间的功能 该接口需要捕捉异常。
        返回:
        返回boolean类型,保存成功返回true,否则返回false
        抛出:
        java.lang.Exception -

        以下情况会抛出异常: 1.当前工作空间对象已经释放; 2.工作空间是新建的,没有指定保存路径; 3.指定保存文件所在目录不存在,将自动创建目录,但创建失败; 4.指定了保存文件的路径,但文件后缀名不是有效的工作空间类型,且没有指定工作空间类型;

        Example:
        以下代码示范如何保存工作空间
         public void testSaveWorkSpace{
                MapControl mapControl = new MapControl(context);
                Map map = mapControl.getMap();
                Workspace workspace = new Workspace();
                map.setWorkspace(workspace);    
                        
                ……              
                          
               WorkspaceConnectionInfo info = workspace.getConnectionInfo();
               info.setType(WorkspaceType.SMWU);
               String rootPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
               info.setServer(rootPath + "/SuperMap/data/MyWorld.smwu");
               try {
                                workspace.save();
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
            }
         
      • getResources

        public Resources getResources()
        返回工作空间的资源库对象。该对象是用于管理工作空间中的资源,目前即指线型符号库、点状符号库和填充符号库。
        返回:
        工作空间的资源库对象。
        Default:
        默认值为空的 Resources 对象
      • getScenes

        public Scenes getScenes()
        获取工作空间中的三维场景集合对象。
        返回:
        工作空间中的三维场景集合对象,默认值为Scenes 对象。