com.supermap.data

类 Dataset

  • 直接已知子类:
    DatasetGrid, DatasetGridCollection, DatasetImage, DatasetImageCollection, DatasetMosaic, DatasetTopology, DatasetVector, DatasetVolume


    public abstract class Dataset
    extends com.supermap.data.InternalHandle

    所有数据集类型(如矢量数据集,栅格数据集等)的基类。提供各数据集共有的方法和事件。

    数据集一般为存储在一起的相关数据的集合;根据数据类型的不同,分为矢量数据集和栅格数据集,以及为了处理特定问题而设计的如拓扑数据集,网络数据集等。数据集是 GIS 数据组织的最小单位。其中矢量数据集是由同种类型空间要素组成的集合,所以也可以称为要素集。根据要素的空间特征的不同,矢量数据集又分为点数据集,线数据集,面数据集等,各矢量数据集是空间特征和性质相同而组织在一起的数据的集合。而栅格数据集由像元阵列组成,在表现要素上比矢量数据集欠缺,但是可以很好的表现空间现象的位置关系。栅格数据集包括影像数据集和栅格数据集。

    在 SuperMap 中有十八种类型的数据集,但目前版本支持的数据集主要有点数据集,线数据集,面数据集,文本数据集,复合数据集,网络数据集,影像数据集和栅格数据集。

    对数据集进行操作后必须调用 Workspace.dispose()方法,否则数据修改的内容不能被保存。

    • 方法详细资料

      • setPrjCoordSys

        public void setPrjCoordSys(PrjCoordSys value)
        设置数据集的投影信息。
        • 当该方法设置为 null 时,该数据集的投影采用其所在数据源的投影;如果想要查看此时数据集的投影信息,请调用Datasource.getPrjCoordSys() 方法
        参数:
        value - 数据集的投影信息。
      • getPrjCoordSys

        public PrjCoordSys getPrjCoordSys()
        返回数据集的投影信息。
        • 当该数据集的投影采用其所在数据源的投影时,该方法返回 null;如果想要查看此时数据集的投影信息,请调用Datasource.getPrjCoordSys() 方法
        返回:
        数据集的投影信息。
        示范代码:
        以下代码示范如何查看数据集的投影。
         public void getPrjCoordSysTest() {
                // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据库型数据源 datasource 对象
                // 从数据源中取出数据集,查看数据集的投影
                Dataset dataset = datasource.getDatasets().get("World");
                PrjCoordSys prjCoordSys = dataset.getPrjCoordSys();
            }
         
      • isVersioned

        public boolean isVersioned()
        检测数据集是否已注册版本。
        返回:
        如果数据集已注册版本,返回 true,否则返回 false。
      • hasPrjCoordSys

        public boolean hasPrjCoordSys()
        判断数据集是否有投影,即是否有自己的投影。如果有投影,返回 true,否则返回 false。
        返回:
        如果有投影,返回 true,否则返回 false。
      • getBounds

        public Rectangle2D getBounds()
        返回数据集中包含所有对象的最小外接矩形。对于矢量数据集来说,为数据集中所有对象的最小外接矩形;对于栅格数据集来说,为当前栅格或影像的地理范围。
        返回:
        数据集中包含所有对象的最小外接矩形。
      • setBounds

        public void setBounds(Rectangle2D value)
        设置数据集中包含所有对象的最小外接矩形。对于矢量数据集来说,为数据集中所有对象的最小外接矩形;对于栅格数据集来说,为当前栅格或影像的地理范围。
        参数:
        value - 数据集中包含所有对象的最小外接矩形。
      • isReadOnly

        public boolean isReadOnly()
        返回当前数据集是否为只读。
        1. 当数据源以只读方式打开时,返回 true,其中的数据集不允许被修改;
          • 对于矢量数据集(DatasetVector),不允许删除、修改和添加记录;
            对于影像数据集(DatasetImage),不允许设置其像素值;
            对于栅格数据集(DatasetGrid),不允许设置其栅格值。
        2. 如果数据源不是以只读方式打开,但数据集被设置为只读时也不能修改数据集,这时仍然返回 true。
        返回:
        一个布尔值指示当前数据集是否为只读。
        另请参阅:
        Dataset.open()
        示范代码:
        请参见 Dataset.open() 方法的示例。
      • isOpen

        public boolean isOpen()
        判断此数据集是否已经打开。在数据源连接了数据,即数据源被打开之后,数据集默认是不打开数据集的,如果要对数据集的数据进行修改或其他操作,数据集必须是打开的,否则无法进行操作。可以通过该方法来判定数据集是否已被打开。
        返回:
        如果此数据集已经被打开,返回 true;否则返回 false。
        另请参阅:
        Dataset.open()
        示范代码:
        请参见 Dataset.open() 方法的示例。
      • getDatasource

        public Datasource getDatasource()
        返回此数据集对象所属数据源对象。
        返回:
        此数据集对象所属数据源对象。
      • getDescription

        public String getDescription()
        返回用户加入的对数据集的描述信息。
        返回:
        用户加入的对数据集的描述信息。
      • setDescription

        public void setDescription(String value)
        设置用户加入的对数据集的描述信息。
        参数:
        value - 用户加入的对数据集的描述信息。
        示范代码:
        以下代码示范如何为数据集写入描述信息。
         public void setDescriptionTest() {
                // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据库型数据源 datasource 对象
                // 从数据源中取出数据集,为数据集写入描述信息
                Dataset dataset = datasource.getDatasets().get("World");
                dataset.setDescription("世界地图");
                String description = dataset.getDescription();
                System.out.println("数据集描述信息为:" + description);
            }
         
      • getExtInfo

        public String getExtInfo()
        返回用户加入的对数据集的附加信息。

        注意:字符串长度不能超过2048。

        返回:
        用户加入的对数据集的附加信息。
      • setExtInfo

        public void setExtInfo(String value)
        设置用户加入的对数据集的附加信息。
        参数:
        value - 用户加入的对数据集的附加信息。
        示范代码:
        以下代码示范如何为数据集写入附加信息。
         public void setExtInfoTest() {
                // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据库型数据源 datasource 对象
                // 从数据源中取出数据集,为数据集写入描述信息
                Dataset dataset = datasource.getDatasets().get("World");
                dataset.setExtInfo("行政分布");
                String extInfo = dataset.getExtInfo();
                System.out.println("数据集附加信息为:" + extInfo);
            }
         
      • getName

        public String getName()
        返回此数据集的名称,是数据集的唯一标识。该标识不区分大小写。

        注意数据集使用名称作为唯一标识,而数据源使用别名作为唯一标识,数据集的名称是可以通过数据集集合对象(Datasets)的rename 方法 被修改的,而数据源的别名则不可被修改。

        返回:
        此数据集的名称。
      • getSchema

        public String getSchema()
        获取数据集所在的模式名。
        返回:
        数据集所在的模式名。
      • getTableName

        public String getTableName()
        对数据库型数据源,返回此数据集在数据库中所对应的数据表名称;对文件型数据源,返回此数据集的存储属性的表名称(文件型数据源文件用.udb 文件存储空间数据,.udd 文件存储属性数据)。
        返回:
        数据库型数据源在数据库中所对应的数据表名称或文件型数据源的存储属性的表名称。
      • getID

        public int getID()
        获取数据集的ID。
        返回:
        数据集ID。
      • getType

        public DatasetType getType()
        返回此数据集的类型。目前版本支持的数据集类型包括纯属性表数据集、点数据集、线数据集、面数据集、文本数据集、复合数据集等矢量数据集(DatasetVector),栅格数据集(DatasetGrid),影像数据集(DatasetImage),以及网络数据集(DatasetNetwork)。
        返回:
        此数据集的类型。
      • getGeoStoreType

        public GeoStoreType getGeoStoreType()
        获取数据集Geometry的存储类型。
        返回:
        Geometry的存储类型。
        另请参阅:
        GeoStoreType
      • getEncodeType

        public EncodeType getEncodeType()
        返回此数据集数据存储时的编码方式。对数据集采用压缩编码方式,可以减少数据存储所占用的空间,降低数据传输时的网络负载和服务器的负载。矢量数据集支持的编码方式有Byte,Int16,Int24,Int32,SGL,LZW,DCT,也可以指定为不使用编码方式。光栅数据支持的编码方式有DCT,SGL,LZW 或不使用编码方式。具体请参见EncodeType类型。
        返回:
        此数据集数据存储时的编码方式。
        另请参阅:
        EncodeType
      • close

        public void close()
        用于关闭当前数据集。对于矢量数据集,调用该方法后,所有由该数据集查询出来的记录集将会被释放。如果此数据集正在显示,必须先关闭显示窗口,再调用该方法进行关闭,否则会出现错误。
        示范代码:
        请参见 Dataset.open() 方法的示例。
      • open

        public boolean open()
        用于打开数据集,准备对数据集进行操作。在数据源连接了数据,即数据源被打开之后,数据集默认是不打开的,如果要对数据集的数据进行修改或其他操作,数据集必须是打开的,否则无法进行操作。可以先使用 isOpen 方法来判断一下数据集是否已经被打开。

        因此,在对数据集进行各种操作之前,需要先打开该数据集,即调用 Dataset.open() 方法。

        返回:
        如果成功打开数据集,返回 true,否则返回 false。
        示范代码:
        以下代码示范如何为打开数据集。
         public void openTest() {
                // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据库型数据源 datasource 对象
                // 从数据源中取出数据集,打开数据集,将数据集设置为只读
                Dataset dataset = datasource.getDatasets().get("World");
                dataset.open();
                if (dataset.isOpen()) {
                    System.out.println("打开数据集成功");
                    // 判断数据集是否为只读
                    if (dataset.isReadOnly()) {
                        System.out.println("数据集为只读数据集");
                    } else {
                        // 如果不是只读将其设置为只读
                        dataset.setReadOnly(true);
                    }
                    dataset.close();
                }
            }
         
      • setReadOnly

        public void setReadOnly(boolean readOnly)
        设置当前数据集是否为只读。

        当数据源以只读方式打开时,其中的数据集不允许被修改;如果数据源不是以只读方式打开,但数据集被设置为只读时也不能修改数据集。

        参数:
        readOnly - 指定当前数据集是否可读。
        另请参阅:
        Dataset.open()
        示范代码:
        请参见 Dataset.open() 方法的示例。
      • getGroup

        public DatasetGroup getGroup()
        获取当前数据集所在的分组对象。 此方法获取的是数据集直属的分组对象,例如数据集dt在分组dtgroup1下,分组dtgroup1的父分组为dtgroup0,此方法获取到的分组对象仅为dtgroup1。
        返回:
        数据集分组对象。
        抛出:
        IllegalStateException - 数据集对象、数据集所属的数据源已被释放。
        从以下版本开始:
        11.2.0版本
      • addClosingListener

        public void addClosingListener(DatasetClosingListener l)
        添加一个用于接收数据集关闭事件(DatasetClosingEvent)的监听器。
        参数:
        l - 一个用于接收数据集关闭事件的监听器。
      • removeClosingListener

        public void removeClosingListener(DatasetClosingListener l)
        移除一个用于接收数据集关闭事件(DatasetClosingEvent)的监听器。
        参数:
        l - 一个用于接收数据集关闭事件的监听器。
      • addLockChangedListener

        public void addLockChangedListener(DatasetLockChangedListener l)
        添加一个用于接收数据集内存读写锁改变事件(DatasetLockChangedEvent)的监听器。
        参数:
        l - 一个用于接收数据集内存读写锁改变事件的监听器。
      • removeLockChangedListener

        public void removeLockChangedListener(DatasetLockChangedListener l)
        移除一个用于接收数据集内存读写锁改变事件(DatasetLockChangedEvent)的监听器。
        参数:
        l - 一个用于接收数据集内存读写锁改变事件的监听器。
      • addClosedListener

        public void addClosedListener(DatasetClosedListener l)
        添加一个用于接收数据集关闭结束事件(DatasetClosedEvent)的监听器。
        参数:
        l - 一个用于接收数据集关闭结束事件的监听器。
      • removeClosedListener

        public void removeClosedListener(DatasetClosedListener l)
        移除一个用于接收数据集关闭结束事件(DatasetClosedEvent)的监听器。
        参数:
        l - 一个用于接收数据集关闭结束事件的监听器。
      • addSteppedListener

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

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

        public LockStateType getLockState()
        获取数据集的内存锁状态。
        返回:
        锁的状态。
      • setLockState

        public boolean setLockState(LockStateType lockType)
        设置数据集的内存锁状态。
        参数:
        lockType - 锁的类型。
        返回:
        设置成功返回 true,否则返回 false。
        另请参阅:
        LockStateType
      • getTransState

        public DatasetTransStateType getTransState()
        获取数据集的事务状态。
        返回:
        数据集的事务状态。
      • refresh

        public void refresh()
        刷新数据集信息。
      • isDisposed

        public boolean isDisposed()
        检测数据集对象是否已被释放。
        返回:
        数据集对象已被释放返回 true,否则返回 false。
      • getPrivilegeTypes

        public DatasetPrivilegeTypes getPrivilegeTypes(String userOrRoleName)
        获取指定的用户名的数据集的权限
        参数:
        userOrRoleName - 指定用户名或角色名
        返回:
        返回PrivilegeTypes
        从以下版本开始:
        SuperMap iObjects Java 11.2.0。
      • getPrivilegeTypes

        public HashMap<String,DatasetPrivilegeTypes> getPrivilegeTypes()
        获取所有用户或角色的数据集权限
        返回:
        返回HashMap key是用户名或角色名,value是对应的权限
        从以下版本开始:
        SuperMap iObjects Java 11.2.0。
      • setPrivilegeTypes

        public boolean setPrivilegeTypes(String userOrRoleName,
                                         DatasetPrivilegeTypes datasetPrivilegeTypes)

        设置指定用户对数据集的操作权限。

        特殊说明:仅超级用户或数据集的创建者才有权限设置,特别的,当PostGIS、Yukon数据源的数据库内核为openGauss、GaussDB时,仅超级用户或具有sysadmin权限的用户才有权限设置。

        参数:
        userOrRoleName - 用户名或者角色名,如果传入的名称是超级用户,则返回失败,因为超级用户本身就拥有所有数据集权限,所以不支持设置
        datasetPrivilegeTypes - 指定权限
        返回:
        是否设置成功
        从以下版本开始:
        SuperMap iObjects Java 11.2.0。
      • hasPrivilegeGrant

        public boolean hasPrivilegeGrant()
        获取当前数据源连接用户对数据集是否有授权权限

        只有数据集拥有者和超级用户有授权和撤回的权限。

        返回:
        是否有Grant权限
        从以下版本开始:
        SuperMap iObjects Java 11.2.0。
      • dispose

        public void dispose()
        释放该对象所占用的资源。当调用该方法之后,此对象不再可用。
      • hashCode

        public int hashCode()
        覆盖:
        hashCode 在类中 Object

Copyright © 2021–2024 SuperMap. All rights reserved.