public class Workspace
extends com.supermap.data.InternalHandleDisposable
工作空间是用户的工作环境,用于完成数据的组织和管理。工作空间存储了一个工程项目(同一个事务过程)中所有的数据源,地图的组织关系,工作空间通过其中的数据源集合对象(Datasources
),地图集合对象(Maps
)来管理其下的数据源,地图。
工作空间中的数据源集合(Datasources
)只存储数据源的连接信息和位置等,实际的数据源都是存储在数据库或者文件中。工作空间中的地图集合(Maps
)中存储的是地图的一些配置信息,如地图包含图层的个数,图层引用的数据集,地图范围,背景风格等。
在当前版本中,一个应用程序中允许多个工作空间共存,每个工作空间可以管理自己的一套数据源和地图等,但是值得注意的是不同的工作空间是不可以相互操作的。
注意:当用户使用该工作空间对象进行编程时,如果将 Workspace
与 MapControl
建立了关联,那么在进行对象的关闭时,一定需要注意关闭的顺序,如下:
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(); }
public Workspace()
public Workspace(boolean loadDefaultResource)
public WorkspaceConnectionInfo getConnectionInfo()
WorkspaceConnectionInfo
public String getCaption()
public void setCaption(String caption)
caption
- 工作空间显示名称。public Datasources getDatasources()
数据源集合对象存储工作空间下的数据源的逻辑信息,如数据源数据的连接信息,位置等,并不存储实际的数据源数据。实际的数据源数据存储在关系型数据库或 UDB 文件中。工作空间的数据源集合对象主要用来管理该工作空间中的数据源,包括打开、创建、关闭等操作。
DatasetGrid.buildPyramid()
的示例。Datasources
对象。public Maps getMaps()
public boolean isModified()
public String getDescription()
public void setDescription(String description)
description
- 用户加入的对当前工作空间的描述或说明性信息。public WorkspaceType getType()
WorkspaceType
枚举类;当工作空间未被保存的时候,是存储于内存中的,这时该工作空间的类型就是 DEFAULT。EnumConstantNotPresentException
- 如果返回的 Type 类型不正确。DEFAULT
。public WorkspaceVersion getVersion()
EnumConstantNotPresentException
- 如果返回的 Version 不正确。UGC20
。public Date getLastUpdateTime()
public void aboutBox()
可以通过“关于对话框”的超链接与北京超图软件股份有限公司取得联系,也可以查看 SuperMap Objects 的版本号和版权等信息。
Workspace.create(WorkspaceConnectionInfo)
create()
方法的示例。public boolean create(WorkspaceConnectionInfo connectionInfo)
connectionInfo
- 用来创建工作空间的工作空间连接信息对象。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(); }
public boolean open(WorkspaceConnectionInfo connectionInfo)
打开工作空间时,数据源集合、地图集合都会被读入到内存中。如果其中的数据源被设置为自动连接,则在打开工作空间时就会连接到这些数据源数据,但如果要对数据进行访问,还需要打开数据源下某个具体的数据集;如果数据源没有被设置为自动连接,则只能返回数据源的别名,数据源中存储的数据集信息不可知,数据源中数据也不可用。如果需要连接数据源的数据,可以通过数据源对象调用 Datasource.connect()
方法来实现连接。
当打开工作空间时,如果其中有某几个数据源没有被成功打开,而 open 方法仍然返回 true,可以通过查看日志来获悉哪些数据源未被成功打开。
connectionInfo
- 用来打开工作空间的工作空间连接信息对象。public long open2(WorkspaceConnectionInfo connectionInfo)
connectionInfo
- 打开的工作空间的连接信息。public boolean saveAs(WorkspaceConnectionInfo connectionInfo)
SuperMap GIS 9D(2019)版本对布局存储进行了优化和调整,SuperMap GIS 9D(2019)及以上版本保存布局到工作空间后,布局存在兼容性问题,具体参见:Workspace.save()
方法中的注意事项。
connectionInfo
- 工作空间连接信息对象。public void close()
public void dispose()
对数据集进行操作后必须调用 dispose() 方法,否则数据修改内容不能被保存。
public boolean save()
注意事项:
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”文件夹,布局只存储图片属性信息。
旧版本工作空间经过新版本保存后,其中的布局将按照升级后的方式存储,所以布局中插入的图片会调整到上述专门的文件夹中存储。
public static boolean deleteWorkspace(WorkspaceConnectionInfo connectionInfo)
connectionInfo
- 指定的工作空间信息。public static String[] getWorkspaceName(WorkspaceConnectionInfo connectionInfo)
注意:
connectionInfo
- 指定的工作空间信息。public Resources getResources()
Resources
对象public Layouts getLayouts()
public boolean changePassword(String oldPassword, String newPassword)
只有在工作空间处于打开的状态下,才能修改密码,并且该方法只针对文件型的工作空间。
oldPassword
- 指定的旧的密码。newPassword
- 指定的新的密码。public void addOpenedListener(WorkspaceOpenedListener listener)
WorkspaceOpenedEvent
)的监听器。listener
- 一个用于接收工作空间打开结束事件的监听器。public void removeOpenedListener(WorkspaceOpenedListener listener)
public void addCreatedListener(WorkspaceCreatedListener listener)
WorkspaceCreatedEvent
)的监听器。listener
- 一个用于接收创建工作空间事件的监听器。public void removeCreatedListener(WorkspaceCreatedListener listener)
WorkspaceCreatedEvent
)的监听器。listener
- 一个用于接收创建工作空间事件的监听器。IllegalStateException
- 当前对象已被释放public void addClosingListener(WorkspaceClosingListener listener)
WorkspaceClosingEvent
)的监听器。listener
- 一个用于接收工作空间关闭事件的监听器。IllegalStateException
- 当前对象已被释放public void removeClosingListener(WorkspaceClosingListener listener)
WorkspaceClosingEvent
)的监听器。listener
- 一个用于接收工作空间关闭事件的监听器。IllegalStateException
- 当前对象已被释放public void addClosedListener(WorkspaceClosedListener listener)
WorkspaceClosedEvent
)的监听器。listener
- 一个用于接收工作空间关闭结束事件的监听器。IllegalStateException
- 当前对象已被释放public void removeClosedListener(WorkspaceClosedListener listener)
WorkspaceClosedEvent
)的监听器。listener
- 一个用于接收工作空间关闭结束事件的监听器。IllegalStateException
- 当前对象已被释放public void addSavedAsListener(WorkspaceSavedAsListener listener)
WorkspaceSavedAsEvent
)的监听器。listener
- 一个用于接收工作空间另存结束事件的监听器。IllegalStateException
- 当前对象已被释放public void removeSavedAsListener(WorkspaceSavedAsListener listener)
WorkspaceSavedAsEvent
)的监听器。listener
- 一个用于接收工作空间另存结束事件的监听器。IllegalStateException
- 当前对象已被释放public void addSavedListener(WorkspaceSavedListener listener)
WorkspaceSavedEvent
)的监听器。listener
- 一个用于接收工作空间保存结束事件的监听器。public void removeSavedListener(WorkspaceSavedListener listener)
WorkspaceSavedEvent
)的监听器。listener
- 一个用于接收工作空间保存结束事件的监听器。public void addCaptionChangedListener(WorkspaceCaptionChangedListener listener)
WorkspaceCaptionChangedEvent
)的监听器。listener
- 一个用于接收工作空间标题变化事件的监听器。public void removeCaptionChangedListener(WorkspaceCaptionChangedListener listener)
WorkspaceCaptionChangedEvent
)的监听器。listener
- 一个用于接收工作空间标题变化事件的监听器。public String getDesktopInfo()
IllegalStateException
- 当前对象已被释放public void setDesktopInfo(String desktopInfo)
desktopInfo
- 扩展信息字符串IllegalStateException
- 当前对象已被释放Copyright © 2021–2024 SuperMap. All rights reserved.