public class Workspace
extends java.lang.Object
工作空间是用户的工作环境,主要完成数据的组织和管理,包括打开、关闭、创建、保存工作空间文件(SXW,SMW,SXWU,SMWU,DEFAULT)。工作空间(Workspace)是 SuperMap 中的一个重要的概念,工作空间存储了一个工程项目(同一个事务过程)中所有的数据源,地图的组织关系,工作空间通过其中的数据源集合对象(Datasources),地图集合对象(Maps)来管理其下的数据源,地图。
工作空间中的数据源集合(Datasources)只存储数据源的连接信息和位置等,实际的数据源都是存储在UDB 中。工作空间中的地图集合(Maps)中存储的是地图的一些配置信息,如地图包含图层的个数,图层引用的数据集,地图范围,背景风格等。
在当前版本中,一个应用程序中允许多个工作空间共存,每个工作空间可以管理自己的一套数据源和地图等,但是值得注意的是不同的工作空间是不可以相互操作的。
注意:当用户使用该工作空间对象进行编程时,如果将 Workspace 与 MapControl 建立了关联,那么在进行对象的关闭时,一定需要注意关闭的顺序,如下:
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)
设置用户加入的对当前工作空间的描述或说明性信息。
|
public void close()
public void dispose()
对数据集进行操作后必须调用 dispose() 方法,否则数据修改内容不能被保存。
public WorkspaceConnectionInfo getConnectionInfo()
WorkspaceConnectionInfopublic java.lang.String getCaption()
public void setCaption(java.lang.String caption)
caption - 工作空间显示名称。public Datasources getDatasources()
数据源集合对象存储工作空间下的数据源的逻辑信息,如数据源数据的连接信息,位置等,并不存储实际的数据源数据。实际的数据源数据存储在关系型数据库或 UDB 文件中。工作空间的数据源集合对象主要用来管理该工作空间中的数据源,包括打开、创建、关闭等操作。
Datasources 对象。public Maps getMaps()
public boolean isModified()
public java.lang.String getDescription()
public void setDescription(java.lang.String description)
description - 用户加入的对当前工作空间的描述或说明性信息。public boolean open(WorkspaceConnectionInfo connectionInfo)
打开工作空间时,数据源集合、地图集合都会被读入到内存中。如果其中的数据源被设置为自动连接,则在打开工作空间时就会连接到这些数据源数据,但如果要对数据进行访问,还需要打开数据源下某个具体的数据集;如果数据源没有被设置为自动连接,则只能返回数据源的别名,数据源中存储的数据集信息不可知,数据源中数据也不可用。
当打开工作空间时,如果其中有某几个数据源没有被成功打开,而 open 方法仍然返回 true,可以通过查看日志来获悉哪些数据源未被成功打开。
connectionInfo - 用来打开工作空间的工作空间连接信息对象。public boolean save()
throws java.lang.Exception
java.lang.Exception - 以下情况会抛出异常: 1.当前工作空间对象已经释放; 2.工作空间是新建的,没有指定保存路径; 3.指定保存文件所在目录不存在,将自动创建目录,但创建失败; 4.指定了保存文件的路径,但文件后缀名不是有效的工作空间类型,且没有指定工作空间类型;
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();
}
}
public Resources getResources()
Resources 对象public Scenes getScenes()