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()
WorkspaceConnectionInfo
public 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()