SuperMap的基本概念主要包括数据和地图的概念,下面将介绍这两个概念。
有关数据方面的概念工作空间
工作空间是用户的工作环境,主要完成对数据的组织和管理,包括打开、关闭、创建和保存工作区文件。构建工作空间的目的是为了使管理更容易,结构更清晰。
工作空间存储了一个项目中所有数据源和地图的组织关系(同一事务过程),工作空间通过其中的数据源集合和地图集合对其下的数据源和地图进行管理。其中:
数据源集合:对数据源进行管理,其中存储了每个数据源的逻辑连接信息,实际数据源存储在数据库或UDB中。实际的数据源存储在数据库或UDB中。数据源只有在建立连接时才可用。数据源集合可以管理多种类型的数据源,实现对多种类型和来源的数据源的无缝管理。
地图集合:存储的是地图的一些配置信息,如地图包含的层数、层所引用的数据集、背景风格等。只有当前工作区所包含的地图的名称可以通过这个类来访问。
在当前版本中,允许多个工作空间共存于一个应用程序中,每个工作空间可以管理自己的数据源、地图等集合,但值得注意的是,不同的工作空间是不能互通的。多个工作空间共存的优点主要有以下几点:
为用户对工作空间的动态访问提供了有利的保障和基础,即对工作空间的动态访问和动态数据分布。
为安全控制提供了有效保障,即不同权限和级别的用户可以访问不同的工作空间,不会出现意外的误操作等。
数据源集合
数据源集合管理数据源,包括创建、打开和关闭数据源的功能。可以同时管理多种类型的数据源(UDB、Oracle、SQL),实现数据源的无缝管理。
在当前版本中,数据源集合支持多线程访问。
一个工作空间中的所有数据源都由数据源集合管理。当创建一个数据源时,需要注意数据源的类型和相应的数据引擎。
数据源
数据源是存储空间数据的场所。所有的空间数据都是存储于数据源而不是工作空间,任何对空间数据的操作都需要打开或获取数据源,数据源可以管理数据源与文件或数据库的连接、数据源的投影、数据源的事务、长事务、事务回滚和事务的版本等信息。
一个数据源对应着一种数据引擎。SuperMap 产品中提供了多种数据源类型,其中包括文件型数据源和数据库型数据源。UDB 数据源属于文件型数据源,Oracle 和 SQL 数据源属于数据库型数据源。
数据源只是定义了一致的数据访问接口和规范,并没有定义数据源的存储细节。数据源的物理存储既可以是文件方式的,也可以是数据库方式的,区别不同的存储方式主要在于采用的数据引擎类型,采用 UDB 引擎时,数据源就以文件方式存储(*.udb,*.udd),而采用空间数据库引擎时,数据源被存储到指定的 DBMS 中。
特性
SuperMap 提供两种数据源与数据库之间的连接方式:手动连接、自动连接。如果用户选择自动连接,在打开工作空间时,数据源会自动连接数据库中的数据,但是此时存储在数据库中的数据集是处于关闭状态的,用户需要打开数据集才可以对数据集内的数据进行修改等操作(用户可以通过 Dataset 类中提供的 open 方法打开数据集);如果用户不选择自动连接,则需要进行手动连接。
有关地图方面的概念地图
地图(Map)是由一个或多个图层叠加而成,而图层是对数据集的引用,是采用设定的风格对数据集的显示,因而,一个或者多个数据集被赋予一定的显示风格而显示在一个 SuperMap 地图窗口中,就成为地图。地图中定义了各图层的名称、显示风格、视野范围、图层状态和图层顺序等信息,保存地图时这些信息都将一起保存下来。
地图集合
地图存储在工作空间文件中,一个工作空间中的所有地图的集合称为一个地图集合(Maps)。一个工作空间中存在一个地图集合,在该工作空间中创建的,引用该工作空间中的数据的地图都由此地图集合来管理。
地图窗口
地图窗口是用来显示地图的一个窗口,一个地图可以在一个地图窗口中打开,多个图层可以在地图窗口中叠加,并保存成地图。在一个地图窗口中,不管其中显示一个图层,还是多个图层,其都称为地图。地图窗口是提供地图的临时显示的区域,并不保存地图,当地图窗口关闭,其中的地图也就不存在了;但如果将地图保存到工作空间中,则可以在任何时候用地图窗口来打开它。
地图中的数据集来源于各数据源。在制作地图并保存后,如将对应的数据源删除,则相应的地图也就不存在了,所以,当打开工作空间中的地图时,将会出错或出现没有数据的情况。此外,在制作地图后,如对相应数据集中的对象进行了编辑修改,则地图刷新后也会相应更新。因此,地图的概念类似于关系数据库中视图的概念,地图中并没有存储数据集。地图并不包含数据本身的内容,只是一种可视化定义,是工作空间的一部分。要保存地图,还需要保存工作空间。