com.supermap.data

类 Workspace

  • java.lang.Object
    • com.supermap.data.InternalHandle
      • com.supermap.data.InternalHandleDisposable
        • com.supermap.data.Workspace
  • 所有已实现的接口:
    IDisposable


    public class Workspace
    extends com.supermap.data.InternalHandleDisposable
    工作空间。

    工作空间是用户的工作环境,用于完成数据的组织和管理。工作空间存储了一个工程项目(同一个事务过程)中所有的数据源,地图的组织关系,工作空间通过其中的数据源集合对象(Datasources),地图集合对象(Maps)来管理其下的数据源,地图。

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

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

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

    1. 关闭 Map 对象;
    2. 关闭 MapControl 对象;
    3. 关闭 Scene 对象;
    4. 关闭 SceneControl 对象;
    5. 关闭 Workspace 对象。
    示范代码:
    以下代码示范如何打开工作空间,从工作空间中取数据源,从数据源取数据集,查看数据集的描述信息以及如何保存或另存工作空间。
     public void workspaceTest(){
            // 打开工作空间,取出工作空间中名为“World”的数据集,查询其描述信息
            Workspace workspace = new Workspace();
            WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo();
            workspaceConnectionInfo.setType(WorkspaceType.SMWU);
            String file = "G:/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());
    
            // 保存工作空间
            workspace.save();
    
            // 另存工作空间
            String file_saveAs = "G:/world/world_saveAs.smwu";
            WorkspaceConnectionInfo workspaceConnectionInfo_saveAs = new
            WorkspaceConnectionInfo(file_saveAs);
            if (workspace.saveAs(workspaceConnectionInfo_saveAs)) {
                System.out.println("另存工作空间成功!");
            }
    
            // 释放资源
            dataset.close();
            workspaceConnectionInfo.dispose();
            workspaceConnectionInfo_saveAs.dispose();
            workspace.close();
            workspace.dispose();
        }
     
    • 构造器详细资料

      • Workspace

        public Workspace()
        构造一个新的 Workspace 对象。
      • Workspace

        public Workspace(boolean loadDefaultResource)
    • 方法详细资料

      • getConnectionInfo

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

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

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

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

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

        返回:
        数据源集合对象。
        示范代码:
        请参见 DatasetGrid.buildPyramid() 的示例。
        默认值:
        默认值为一个初始化的 Datasources 对象。
      • getMaps

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

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

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

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

        public WorkspaceType getType()
        返回表示当前 Workspace 的类型的常量值。SuperMap 支持文件型和数据库型两种类型的的工作空间,详细信息请参见 WorkspaceType 枚举类;当工作空间未被保存的时候,是存储于内存中的,这时该工作空间的类型就是 DEFAULT。
        返回:
        当前 Workspace 的类型。
        抛出:
        EnumConstantNotPresentException - 如果返回的 Type 类型不正确。
        默认值:
        默认值为 DEFAULT
      • getVersion

        public WorkspaceVersion getVersion()
        返回当前工作空间的版本。支持4种版本的工作空间,分别为 SuperMap UGC 2.0工作空间,SuperMap 5.0工作空间,SuperMap UGC 6.0 工作空间和 SuperMap 6.0工作空间。
        返回:
        当前工作空间的版本。
        抛出:
        EnumConstantNotPresentException - 如果返回的 Version 不正确。
        默认值:
        默认值为 UGC20
      • getLastUpdateTime

        public Date getLastUpdateTime()
        返回工作空间被更改的最新时间。
        返回:
        工作空间被更改的最新时间。
      • aboutBox

        public void aboutBox()
        弹出工作空间的“关于”对话框。

        可以通过“关于对话框”的超链接与北京超图软件股份有限公司取得联系,也可以查看 SuperMap Objects 的版本号和版权等信息。

        另请参阅:
        Workspace.create(WorkspaceConnectionInfo)
        示范代码:
        请参见 create() 方法的示例。
      • create

        public boolean create(WorkspaceConnectionInfo connectionInfo)
        根据指定的工作空间连接信息对象来创建新的工作空间。成功则返回 true。
        参数:
        connectionInfo - 用来创建工作空间的工作空间连接信息对象。
        返回:
        boolean 一个布尔值指定创建是否成功,如果成功返回 true,否则返回 false。
        示范代码:
         public void createTest() {
                // 创建工作空间,弹出 “关于”对话框
                Workspace workspace = new Workspace();
                WorkspaceConnectionInfo workspaceConnectionInfo = new
                        WorkspaceConnectionInfo();
                workspaceConnectionInfo.setType(WorkspaceType.SXW);
                String file = "G:/world/world.sxw";
                workspaceConnectionInfo.setServer(file);
                if (workspace.create(workspaceConnectionInfo))
                    System.out.println("创建工作空间成功");
                workspace.aboutBox();
        
                // 释放资源
                workspace.close();
                workspace.dispose();
                workspaceConnectionInfo.dispose();
            }
         
      • open

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

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

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

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

        public long open2(WorkspaceConnectionInfo connectionInfo)
        用于打开已有的工作空间。
        参数:
        connectionInfo - 打开的工作空间的连接信息。
        返回:
        工作空间打开成功返回 0,否则返回一个错误状态码,可以通过查阅帮助文档,获取错误状态码表达的错误信息。
      • saveAs

        public boolean saveAs(WorkspaceConnectionInfo connectionInfo)
        用指定的工作空间连接信息对象来保存工作空间文件。

        SuperMap GIS 9D(2019)版本对布局存储进行了优化和调整,SuperMap GIS 9D(2019)及以上版本保存布局到工作空间后,布局存在兼容性问题,具体参见:Workspace.save()方法中的注意事项。

        参数:
        connectionInfo - 工作空间连接信息对象。
        返回:
        工作空间是否保存成功。如果成功,返回 true,否则返回 false。
      • close

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

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

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

      • save

        public boolean save()
        用于将现存的工作空间存盘,不改变原有的名称。成功则返回 true。当工作空间没有指定工作空间文件或者工作空间文件的名称不合法的时候,将抛出异常。

        注意事项:

        SuperMap GIS 9D(2019)版本对布局存储进行了优化和调整,SuperMap GIS 9D(2019)及以上版本保存布局到工作空间后,布局存在兼容性问题,用户可明显感知的调整结果如下:

        以下将SuperMap GIS 9D(2019)及以上版本称为“新版本”,将SuperMap GIS 9D(2019)以下版本称为“旧版本”。

        1. 新版本采用XML结构将布局存储在工作空间中,解决了旧版本中保存布局会发生文件损坏的问题。

        2. 新版本兼容旧版本保存在工作空间中的布局,但是旧版本无法打开新版本保存在工作空间中的布局。

        旧版本工作空间经过新版本保存后,布局将按照升级后的方式存储,所以其中的布局在旧版本中将无法再次打开。不过,在新版本中,可以将布局导出为布局模板,然后,在旧版本中加载布局模板,就可实现在旧版本中打开新版本保存后的布局。

        3. 新版本布局存储位置发生变化。若将工作空间存储为sxwu格式,旧版本会将布局单独存储在.lyts文件里;但新版本直接将布局存储在sxwu工作空间文件中,且以调整后的XML结构描述布局,包括布局元素、布局设置等。

        4. 在新版本中,插入布局中的图片将存储在工作空间同级目录下的“工作空间文件名_images”文件夹,布局只存储图片属性信息。

        旧版本工作空间经过新版本保存后,其中的布局将按照升级后的方式存储,所以布局中插入的图片会调整到上述专门的文件夹中存储。

        返回:
        工作空间是否保存成功。如果成功,返回 true,否则返回 false。
      • deleteWorkspace

        public static boolean deleteWorkspace(WorkspaceConnectionInfo connectionInfo)
        删除指定信息的工作空间。如果是文件型工作空间,直接删除文件;如果是数据库型的工作空间,删除前需要指定工作空间的名字。
        参数:
        connectionInfo - 指定的工作空间信息。
        返回:
        一个布尔值指定是否删除指定信息的工作空间。
      • getWorkspaceName

        public static String[] getWorkspaceName(WorkspaceConnectionInfo connectionInfo)
        根据指定的工作空间信息返回工作空间名称。

        注意:

        1. 此时 connectionInfo 里的 getName 和 setName 方法不起作用。
        2. 对于文件型的工作空间,返回不带扩展名的工作空间名称。
        3. 对于数据库型的工作空间,返回数据库中存储的工作空间名称。
        参数:
        connectionInfo - 指定的工作空间信息。
        返回:
        工作空间名称。
      • getResources

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

        public Scenes getScenes()
        返回工作空间中的三维场景集合对象。
        返回:
        工作空间中的三维场景集合对象。
        默认值:
        默认值为一个空的 Scenes 对象。
      • getLayouts

        public Layouts getLayouts()
        返回工作空间中的布局集合对象。
        返回:
        工作空间中的布局集合对象。
      • changePassword

        public boolean changePassword(String oldPassword,
                                      String newPassword)
        修改已经打开的工作空间的密码。

        只有在工作空间处于打开的状态下,才能修改密码,并且该方法只针对文件型的工作空间。

        参数:
        oldPassword - 指定的旧的密码。
        newPassword - 指定的新的密码。
        返回:
        一个布尔值,表示是否修改成功,true 表示修改成功;false表示修改失败。
      • addOpenedListener

        public void addOpenedListener(WorkspaceOpenedListener listener)
        添加一个用于接收工作空间打开结束事件(WorkspaceOpenedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间打开结束事件的监听器。
      • addCreatedListener

        public void addCreatedListener(WorkspaceCreatedListener listener)
        添加一个用于接收创建工作空间事件(WorkspaceCreatedEvent)的监听器。
        参数:
        listener - 一个用于接收创建工作空间事件的监听器。
      • addClosedListener

        public void addClosedListener(WorkspaceClosedListener listener)
        添加一个用于接收工作空间关闭结束事件(WorkspaceClosedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间关闭结束事件的监听器。
        抛出:
        IllegalStateException - 当前对象已被释放
      • removeClosedListener

        public void removeClosedListener(WorkspaceClosedListener listener)
        移除一个用于接收工作空间关闭结束事件(WorkspaceClosedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间关闭结束事件的监听器。
        抛出:
        IllegalStateException - 当前对象已被释放
      • removeSavedAsListener

        public void removeSavedAsListener(WorkspaceSavedAsListener listener)
        移除一个用于接收工作空间另存结束事件(WorkspaceSavedAsEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间另存结束事件的监听器。
        抛出:
        IllegalStateException - 当前对象已被释放
      • addSavedListener

        public void addSavedListener(WorkspaceSavedListener listener)
        添加一个用于接收工作空间保存结束事件(WorkspaceSavedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间保存结束事件的监听器。
      • removeSavedListener

        public void removeSavedListener(WorkspaceSavedListener listener)
        移除一个用于接收工作空间保存结束事件(WorkspaceSavedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间保存结束事件的监听器。
      • addCaptionChangedListener

        public void addCaptionChangedListener(WorkspaceCaptionChangedListener listener)
        添加一个用于接收工作空间标题变化事件(WorkspaceCaptionChangedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间标题变化事件的监听器。
      • removeCaptionChangedListener

        public void removeCaptionChangedListener(WorkspaceCaptionChangedListener listener)
        移除一个用于接收工作空间标题变化事件(WorkspaceCaptionChangedEvent)的监听器。
        参数:
        listener - 一个用于接收工作空间标题变化事件的监听器。
      • getDesktopInfo

        public String getDesktopInfo()
        获取桌面扩展存储信息
        返回:
        扩展信息字符串
        抛出:
        IllegalStateException - 当前对象已被释放
      • setDesktopInfo

        public void setDesktopInfo(String desktopInfo)
        设置桌面扩展存储信息
        参数:
        desktopInfo - 扩展信息字符串
        抛出:
        IllegalStateException - 当前对象已被释放

Copyright © 2021–2024 SuperMap. All rights reserved.