com.supermap.data

类 Datasource

  • java.lang.Object
    • com.supermap.data.Datasource


  • public class Datasource
    extends java.lang.Object

    数据源类。

    该类管理投影信息、数据源与数据库的连接信息和对其中的数据集的相关操作,如通过已有数据集复制生成新的数据集等。

    每个数据源对应一种数据引擎。UDB 数据源属于文件型数据源。

    数据源定义了一致的数据访问接口和规范。数据源的物理存储既可以是文件方式,也可以是数据库方式。区别不同存储方式的主要依据是其所采用的数据引擎类型:采用 UDB 引擎时,数据源以文件方式存储(*.udb,*.udd)——文件型数据源文件用.udb 文件存储空间数据,.udd 文件存储属性数据。

    数据源对象通常作为工作空间中数据源集合中的一个元素。可以对数据源进行保存操作、对数据集进行复制操作。

    一个工作空间可以打开多个数据源,不同的数据源通过不同的别名(Alias)进行标识。

    其中值得一提的是我们假设数据源中的数据都使用同样的单位和空间参考系。

    • 方法详细资料

      • getWorkspace

        public Workspace getWorkspace()
        得到数据源所在的工作空间对象。
        返回:
        数据源所在的工作空间。
      • getAlias

        public java.lang.String getAlias()
        返回数据源的别名。别名用于在工作空间中唯一标识数据源,可以通过它访问数据源。数据源的别名在创建数据源或打开数据源时给定,打开同一个数据源可以使用不同的别名。
        返回:
        数据源的别名。
      • getConnectionInfo

        public DatasourceConnectionInfo getConnectionInfo()
        返回此数据源的连接信息。数据源连结信息包括了进行数据源连接的所有信息,如所要连接的服务器名称,数据库名称、用户名、密码等。有关数据源连接信息属性的详细信息,请参考 DatasourceConnectionInfo 类。
        返回:
        此数据源的连接信息。
        另请参阅:
        DatasourceConnectionInfo
      • getDatasets

        public Datasets getDatasets()
        返回此数据源所包含的数据集的集合对象。该数据集集合提供对数据集的管理功能,如创建、删除、重命名等操作。一个数据源中所有的数据集对象都由一个数据集集合对象来管理。
        返回:
        此数据源所包含的数据集的集合对象。
      • getDescription

        public java.lang.String getDescription()
        返回用户添加的关于数据源的描述信息。用户可以在描述信息里加入你想加入的任何信息,例如建立数据源的人员、数据的来源、数据的主要内容、数据的精度、质量等信息,这些信息对于维护数据具有重要的意义。
        返回:
        用户添加的关于数据源的描述信息。
      • setDescription

        public void setDescription(java.lang.String value)
        设置用户添加的关于数据源的描述信息。用户可以在描述信息里加入你想加入的任何信息,例如建立数据源的人员、数据的来源、数据的主要内容、数据的精度、质量等信息,这些信息对于维护数据具有重要的意义。
        参数:
        value - 用户添加的关于数据源的描述信息。
      • isModified

        public boolean isModified()
        返回此数据源是否有改动。true 表示数据源已改动,false 表示数据源还未改动。数据源负责管理数据集,因此当其中的数据集个数等内容发生改变时,此属性会返回 true。当数据源是以事务方式打开时,关闭数据源时可通过此属性判断是否需要提示用户保存修改内容。
        返回:
        此数据源是否有改动。
      • isReadOnly

        public boolean isReadOnly()
        返回数据源是否以只读方式打开。

        对文件型数据源,如果只读方式打开,就是共享的,可以打开多次;如果以非只读方式打开,则只能打开一次。

        对于影像数据源(IMAGEPLUGINS 引擎类型)只会以只读方式打开。

        返回:
        数据源是否以只读方式打开。
      • copyDataset

        public Dataset copyDataset(Dataset srcDataset,
                                   java.lang.String desDatasetName,
                                   EncodeType encodeType)
        用于在相同或不同引擎数据源中复制数据集。复制数据集之前必须保证当前数据源已经打开而且可写。复制数据集之前,可先调用 Datasets.isAvailableDatasetName() 方法来判断目标数据集的名称是否合法,并且目标数据集的名称不能使用数据库的关键字;复制数据集时,可通过 EncodeType 参数来对数据集的编码方式进行修改。有关数据集存储的编码方式请参见 EncodeType 枚举类型。

        由于CAD数据集不支持任何编码,对 CAD 数据集进行复制(copyDataset())操作时设置的 EncodeType 无效,即只能置为 NONE

        从 ImagePlugin 打开的数据源中复制数据集到其他数据集无效,也不能向 ImagePlugin 数据源中复制数据集,因为这种引擎是只读的。

        参数:
        srcDataset - 要复制的源数据集。
        desDatasetName - 目标数据集的名称。
        encodeType - 数据集的编码方式。
        返回:
        复制得到的数据集。
        另请参阅:
        EncodeType
        Example:
        以下代码示范如何复制数据集。
         public void copyDatasetTest() {
                // 假设打开一个工作空间 workspace 对象,工作空间中存在两个数据源对象:datasource 和 datasource_Des
                // 在数据源 datasource 中取出名为“World”的数据集,将其复制到数据源 datasource_Des 下
                DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().
                                              get("World");
        
                // 返回一个可用的目标数据集的名称,复制数据集
                String datasetName = datasource_Des.getDatasets().
                                     getAvailableDatasetName("World_1");
                Dataset newDataset = datasource_Des.copyDataset(datasetVector,
                        datasetName, EncodeType.INT32);
            }
         
      • copyDataset

        public Dataset copyDataset(Dataset srcDataset,
                                   java.lang.String desDatasetName,
                                   EncodeType encodeType,
                                   Charset nCharset)
        根据指定的编码类型以及字符集类型复制数据集。该方法应用于把文本数据集或CAD数据集升级为支持多国语言的 UTF8 字符集时。SuperMap Objects .NET 6R(2012) SP2版本不支持该方法,预留后续版本使用。
        参数:
        srcDataset - 要复制的源数据集。
        desDatasetName - 目标数据集的名称。
        encodeType - 数据集的编码方式。
        nCharset - 数据集的字符集类型。
        返回:
        复制得到的数据集。
      • getPrjCoordSys

        public PrjCoordSys getPrjCoordSys()
        返回数据源的投影信息。
        返回:
        数据源的投影信息。
      • changePassword

        public boolean changePassword(java.lang.String oldPassword,
                                      java.lang.String newPassword,
                                      DatasourceEncrytionType type)
        修改当前数据源的密码。
        参数:
        oldPassword - 原始密码,不能为null
        newPassword - 新密码,不能为null
        type - 新密码使用的加密类型
        返回:
        返回boolean类型,成功返回true;否则返回false
      • isOpened

        public boolean isOpened()
        数据源是否已打开。
        返回:
        是否已打开
      • RenameDatasource

        public void RenameDatasource(java.lang.String name,
                                     java.lang.String newName)
        更改此Datasourc名称。
        参数:
        name - 当前名称
        newName - 更改名称
      • saveDatasource

        public boolean saveDatasource()
        保存数据源。
        返回:
        保存数据源
      • mergeDatasets

        public DatasetVector mergeDatasets(java.lang.String targetDatasetName,
                                           DatasetType datasetType,
                                           boolean isSaveNewField,
                                           DatasetVector... datasetVectors)
        合并数据集
        参数:
        datasetName - 合并后新的数据集
        isRetainNewField - 是否保留数据集原有字段
        datasetVectors - 需要合并的数据集
        返回:
      • getRootGroup

        public DatasetGroup getRootGroup()
        返回数据集分组的根组。
        返回:
        数据集分组的根组。
      • copyDatasetGroup

        public DatasetGroup copyDatasetGroup(DatasetGroup srcGroup,
                                             DatasetGroup desGroup,
                                             java.lang.String desGroupName)
        数据集分组复制
        参数:
        srcGroup - 被复制的原始分组对象
        desGroup - 添加到的目标分组对象
        desGroupName - 目标分组名称
        返回:
        返回新复制的分组对象
      • addSteppedListener

        public void addSteppedListener(SteppedListener l)
        添加一个用于接收进度条事件(SteppedEvent)的监听器。
        参数:
        l - 用于接收进度条事件的监听器。
      • removeSteppedListener

        public void removeSteppedListener(SteppedListener l)
        移除一个用于接收进度条事件(SteppedEvent)的监听器。
        参数:
        l - 用于接收进度条事件的监听器。