类 Dataset
- java.lang.Object
-
- com.supermap.data.InternalHandle
-
- com.supermap.data.Dataset
-
- 直接已知子类:
- DatasetGrid, DatasetGridCollection, DatasetImage, DatasetImageCollection, DatasetLas, DatasetMosaic, DatasetTopology, DatasetUnknown, DatasetVector, DatasetVolume
public abstract class Dataset extends com.supermap.data.InternalHandle所有数据集类型(如矢量数据集,栅格数据集等)的基类。提供各数据集共有的方法和事件。
数据集一般为存储在一起的相关数据的集合;根据数据类型的不同,分为矢量数据集和栅格数据集,以及为了处理特定问题而设计的如拓扑数据集,网络数据集等。数据集是 GIS 数据组织的最小单位。其中矢量数据集是由同种类型空间要素组成的集合,所以也可以称为要素集。根据要素的空间特征的不同,矢量数据集又分为点数据集,线数据集,面数据集等,各矢量数据集是空间特征和性质相同而组织在一起的数据的集合。而栅格数据集由像元阵列组成,在表现要素上比矢量数据集欠缺,但是可以很好的表现空间现象的位置关系。栅格数据集包括影像数据集和栅格数据集。
在 SuperMap 中有十八种类型的数据集,但目前版本支持的数据集主要有点数据集,线数据集,面数据集,文本数据集,复合数据集,网络数据集,影像数据集和栅格数据集。
对数据集进行操作后必须调用
Workspace.dispose()方法,否则数据修改的内容不能被保存。
-
-
方法概要
所有方法 实例方法 具体方法 限定符和类型 方法和说明 voidaddClosedListener(DatasetClosedListener l)添加一个用于接收数据集关闭结束事件(DatasetClosedEvent)的监听器。voidaddClosingListener(DatasetClosingListener l)添加一个用于接收数据集关闭事件(DatasetClosingEvent)的监听器。voidaddLockChangedListener(DatasetLockChangedListener l)添加一个用于接收数据集内存读写锁改变事件(DatasetLockChangedEvent)的监听器。voidaddSteppedListener(SteppedListener l)添加一个用于接收进度条事件(SteppedEvent)的监听器。voidclose()关闭当前数据集。voiddispose()显式释放该对象占用的系统资源。booleanequals(Object obj)Rectangle2DgetBounds()返回数据集中包含所有对象的最小外接矩形。DatasourcegetDatasource()返回此数据集对象所属数据源对象。StringgetDescription()返回用户加入的对数据集的描述信息。EncodeTypegetEncodeType()返回此数据集数据存储时的编码方式。StringgetExtInfo()返回用户加入的对数据集的附加信息。GeoStoreTypegetGeoStoreType()获取数据集Geometry的存储类型。DatasetGroupgetGroup()获取当前数据集所在的分组对象。intgetID()获取数据集的ID。LockStateTypegetLockState()获取数据集的内存锁状态。StringgetName()返回此数据集的名称,是数据集的唯一标识。HashMap<String,DatasetPrivilegeTypes>getPrivilegeTypes()获取所有用户或角色的数据集权限。DatasetPrivilegeTypesgetPrivilegeTypes(String userOrRoleName)获取指定的用户名的数据集的权限PrjCoordSysgetPrjCoordSys()返回数据集的投影信息。StringgetSchema()获取数据集所在的模式名。StringgetTableName()对数据库型数据源,返回此数据集在数据库中所对应的数据表名称;对文件型数据源,返回此数据集的存储属性的表名称(文件型数据源文件用.udb 文件存储空间数据,.udd 文件存储属性数据)。DatasetTransStateTypegetTransState()获取数据集的事务状态。DatasetTypegetType()返回此数据集的类型。booleanhasAttachment()检测数据集是否已存在附件。inthashCode()booleanhasPrivilegeGrant()获取当前数据源连接用户对数据集是否有授权权限 只有数据集拥有者和超级用户有授权和撤回的权限。booleanhasPrjCoordSys()判断数据集是否有投影,即是否有自己的投影。booleanisDisposed()检测数据集对象是否已被释放。booleanisOpen()判断此数据集是否已经打开。booleanisReadOnly()返回当前数据集是否为只读。booleanisVersioned()检测数据集是否已注册版本。booleanopen()用于打开数据集,准备对数据集进行操作。voidrefresh()刷新数据集信息。voidremoveClosedListener(DatasetClosedListener l)移除一个用于接收数据集关闭结束事件(DatasetClosedEvent)的监听器。voidremoveClosingListener(DatasetClosingListener l)移除一个用于接收数据集关闭事件(DatasetClosingEvent)的监听器。voidremoveLockChangedListener(DatasetLockChangedListener l)移除一个用于接收数据集内存读写锁改变事件(DatasetLockChangedEvent)的监听器。voidremoveSteppedListener(SteppedListener l)移除一个用于接收进度条事件(SteppedEvent)的监听器。voidsetBounds(Rectangle2D value)设置数据集中包含所有对象的最小外接矩形。voidsetDescription(String value)设置用户加入的对数据集的描述信息。voidsetExtInfo(String value)设置用户加入的对数据集的附加信息。booleansetLockState(LockStateType lockType)设置数据集的内存锁状态。booleansetPrivilegeTypes(String userOrRoleName, DatasetPrivilegeTypes datasetPrivilegeTypes)设置指定用户对数据集的操作权限。voidsetPrjCoordSys(PrjCoordSys value)设置数据集的投影信息。voidsetReadOnly(boolean readOnly)设置当前数据集是否为只读。StringtoString()
-
-
-
方法详细资料
-
setPrjCoordSys
public void setPrjCoordSys(PrjCoordSys value)
设置数据集的投影信息。- 当该方法设置为 null 时,该数据集的投影采用其所在数据源的投影;如果想要查看此时数据集的投影信息,请调用
Datasource.getPrjCoordSys() 方法。
- 参数:
value- 数据集的投影信息。
- 当该方法设置为 null 时,该数据集的投影采用其所在数据源的投影;如果想要查看此时数据集的投影信息,请调用
-
getPrjCoordSys
public PrjCoordSys getPrjCoordSys()
返回数据集的投影信息。- 当该数据集的投影采用其所在数据源的投影时,该方法返回 null;如果想要查看此时数据集的投影信息,请调用
Datasource.getPrjCoordSys() 方法。
- 返回:
- 数据集的投影信息。
- 示范代码:
- 以下代码示范如何查看数据集的投影。
public void getPrjCoordSysTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据库型数据源 datasource 对象 // 从数据源中取出数据集,查看数据集的投影 Dataset dataset = datasource.getDatasets().get("World"); PrjCoordSys prjCoordSys = dataset.getPrjCoordSys(); }
- 当该数据集的投影采用其所在数据源的投影时,该方法返回 null;如果想要查看此时数据集的投影信息,请调用
-
isVersioned
public boolean isVersioned()
检测数据集是否已注册版本。- 返回:
- 如果数据集已注册版本,返回 true,否则返回 false。
-
hasAttachment
public boolean hasAttachment()
检测数据集是否已存在附件。目前该接口只针对矢量数据集,其余类型数据集均返回 false。
- 返回:
- 数据集已注册附件返回 true,否则返回 false。
- 抛出:
IllegalStateException- 当前数据集对象已释放,或者数据源对象已释放。- 从以下版本开始:
- 12.0.0
-
hasPrjCoordSys
public boolean hasPrjCoordSys()
判断数据集是否有投影,即是否有自己的投影。如果有投影,返回 true,否则返回 false。- 返回:
- 如果有投影,返回 true,否则返回 false。
-
getBounds
public Rectangle2D getBounds()
返回数据集中包含所有对象的最小外接矩形。对于矢量数据集来说,为数据集中所有对象的最小外接矩形;对于栅格数据集来说,为当前栅格或影像的地理范围。- 返回:
- 数据集中包含所有对象的最小外接矩形。
-
setBounds
public void setBounds(Rectangle2D value)
设置数据集中包含所有对象的最小外接矩形。对于矢量数据集来说,为数据集中所有对象的最小外接矩形;对于栅格数据集来说,为当前栅格或影像的地理范围。- 参数:
value- 数据集中包含所有对象的最小外接矩形。
-
isReadOnly
public boolean isReadOnly()
返回当前数据集是否为只读。- 当数据源以只读方式打开时,返回 true,其中的数据集不允许被修改;
- 如果数据源不是以只读方式打开,但数据集被设置为只读时也不能修改数据集,这时仍然返回 true。
- 对于矢量数据集(
DatasetVector),不允许删除、修改和添加记录;- 对于影像数据集(
DatasetImage),不允许设置其像素值;- 对于栅格数据集(
DatasetGrid),不允许设置其栅格值。- 返回:
- 一个布尔值指示当前数据集是否为只读。
- 另请参阅:
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.dispose()。- 示范代码:
- 请参见
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
- 从以下版本开始:
- 11.2.0
-
getPrivilegeTypes
public HashMap<String,DatasetPrivilegeTypes> getPrivilegeTypes()
获取所有用户或角色的数据集权限。- 返回:
- 返回HashMap
key是用户名或角色名,value是对应的权限。 - 从以下版本开始:
- 11.2.0
-
setPrivilegeTypes
public boolean setPrivilegeTypes(String userOrRoleName, DatasetPrivilegeTypes datasetPrivilegeTypes)
设置指定用户对数据集的操作权限。特殊说明:
- 仅超级用户或数据集的创建者才有权限设置,特别的,当PostGIS、Yukon数据源的数据库内核为openGauss、GaussDB时,仅超级用户或具有sysadmin权限的用户才有权限设置。
- 数据库中已注册为数据集的视图(View),和普通数据集一样,可设置用户对数据集的操作权限。
- 参数:
userOrRoleName- 用户名或者角色名,如果传入的名称是超级用户,则返回失败,因为超级用户本身就拥有所有数据集权限,所以不支持设置。datasetPrivilegeTypes- 指定权限。- 返回:
- 是否设置成功
- 从以下版本开始:
- 11.2.0
-
hasPrivilegeGrant
public boolean hasPrivilegeGrant()
获取当前数据源连接用户对数据集是否有授权权限只有数据集拥有者和超级用户有授权和撤回的权限。
- 返回:
- 是否有Grant权限
- 从以下版本开始:
- 11.2.0
-
dispose
public void dispose()
显式释放该对象占用的系统资源。调用此方法将立即回收对象占用的内存,确保资源高效释放。当调用该方法之后,此对象将不再可用。
-
-
Copyright © 2021–2025 SuperMap. All rights reserved.