|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.data.Datasource
public class Datasource
数据源类。
该类管理投影信息、数据源与数据库的连接信息和对其中的数据集的相关操作,如通过已有数据集复制生成新的数据集等。
每个数据源对应一种数据引擎。SuperMap 产品中提供了多种数据源类型,分为文件型数据源、数据库型数据源和 Web 数据源。如 UDB 数据源属于文件型数据源; Oracle、SQL Server、MySQL、PostgreSQL 和 DB2 数据源属于数据库型数据源;OGC、GoogleMaps、超图云服务、REST 地图服务和天地图地图服务数据源属于 Web 数据源。
当单个Geometry比较大时,MySQL数据库型数据源需要修改配置文件,因为MySQL会根据配置文件限制服务端接受的数据包大小,导致写入或更新失败。修改方法: 打开MySQL安装目录下的mysql.ini配置文件,根据Geometry数据大小设置合适的max_allowed_packet;若无法打开配置文件,也可以在MySQL命令行中设置:set global max_allowed_packet=?。完成配置后需要重启MySQL服务。
数据源定义了一致的数据访问接口和规范。数据源的物理存储既可以是文件方式,也可以是数据库方式。区别不同存储方式的主要依据是其所采用的数据引擎类型:采用 UDB 引擎时,数据源以文件方式存储(*.udb,*.udd)——文件型数据源文件用.udb 文件存储空间数据,.udd 文件存储属性数据,采用空间数据库引擎时,数据源存储在指定的 DBMS 中。
数据源对象通常作为工作空间中数据源集合中的一个元素。可以对数据源进行保存操作、对数据集进行复制操作。
一个工作空间可以打开多个数据源,不同的数据源通过不同的别名(Alias)进行标识。
其中值得一提的是我们假设数据源中的数据都使用同样的单位和空间参考系。
通过 isConnected()
方法可以设置数据源是否自动连接,当选择自动连接的时候,在打开工作空间时,数据源会自动连接数据库中的数据。由于数据集默认是不打开的,所以如果要对数据集的数据进行修改或其他操作,可以通过 Dataset
类中提供的 open()
方法来实现打开数据集操作,否则数据集处于关闭状态。
构造方法摘要 | |
---|---|
Datasource(EngineType enginetype)
根据指定的参数构造Datasource类的新实例。 |
方法摘要 | |
---|---|
void |
addDisconnectedListener(DatasourceDisconnectedListener l)
添加一个用于接收数据源断开连接结束事件( DatasourceDisconnectedEvent )的监听器。 |
void |
addRefreshedListener(DatasourceRefreshedListener l)
添加一个用于接收数据源刷新结束事件( DatasourceRefreshedEvent )的监听器。 |
void |
addSteppedListener(SteppedListener l)
添加一个用于接收进度条事件( SteppedEvent )的监听器。 |
boolean |
changePassword(java.lang.String oldPassword,
java.lang.String newPassword)
修改已经打开的数据源的密码。 |
void |
close()
关闭当前数据源。 |
boolean |
connect()
用于连接数据源。 |
Dataset |
copyDataset(Dataset srcDataset,
java.lang.String desDatasetName,
EncodeType encodeType)
用于在相同或不同引擎数据源中复制数据集。 |
Dataset |
copyDataset(Dataset srcDataset,
java.lang.String desDatasetName,
EncodeType encodeType,
Charset nCharset)
根据指定的编码类型以及字符集类型复制数据集。 |
Dataset |
copyDatasetWithSmID(Dataset srcDataset,
java.lang.String desDatasetName,
EncodeType encodeType)
复制数据集,保留SmID的值,目前只支持Oracle、UDB。 |
boolean |
create(DatasourceConnectionInfo connectioninfo)
根据指定的数据源连接信息创建数据源。 |
boolean |
createSequence(java.lang.String sequenceName)
根据给定的名称创建一个序列。 |
boolean |
createSequence(java.lang.String sequenceName,
long startValue,
long maxValue,
int incrementValue)
根据给定的参数创建序列,可以自定义序列长度和步长。 |
boolean |
deleteSequence(java.lang.String sequenceName)
删除指定名称的序列。 |
boolean |
executeSQL(java.lang.String sql)
用于对数据库类型的数据源执行一个 SQL 语句。 |
DatasetVector |
fieldToPointDataset(DatasetVector srcDataset,
java.lang.String desDatasetName,
java.lang.String fieldX,
java.lang.String fieldY)
从一个矢量数据集的属性表中的 X、Y 坐标字段创建点数据集。 |
boolean |
flush(java.lang.String datasetName)
用于将内存中暂未写入数据库中的数据保存到数据库。 |
java.lang.String |
getAlias()
返回数据源的别名。 |
static int |
getConnectCheckInterval()
返回两次检测连接数据库时间间隔,以毫秒为单位。 |
DatasourceConnectionInfo |
getConnectionInfo()
返回此数据源的连接信息。 |
Unit |
getCoordUnit()
返回数据源坐标单位。 |
Datasets |
getDatasets()
返回此数据源所包含的数据集的集合对象。 |
java.lang.String |
getDateLastUpdated()
获取数据源最后更新的时间。 |
java.lang.String |
getDescription()
返回用户添加的关于数据源的描述信息。 |
Unit |
getDistanceUnit()
返回数据源的距离单位。 |
DomainManager |
getDomainManager()
返回值域管理对象。 |
EngineType |
getEngineType()
返回此数据源的数据引擎类型。 |
LockStateType |
getLockState()
获取数据源的内存锁状态。 |
PrjCoordSys |
getPrjCoordSys()
返回数据源的投影信息。 |
ReplicaManager |
getReplicaManager()
获取数据源的复本管理类对象。 |
DatasetGroup |
getRootGroup()
返回数据集分组的根组。 |
long |
getSequenceNextValue(java.lang.String sequenceName)
返回指定序列的下一个值。 |
VersionManager |
getVersionManager()
获取数据源的版本管理类对象。 |
Workspace |
getWorkspace()
得到数据源所在的工作空间对象。 |
DatasetVector |
innerPointToDataset(DatasetVector srcDataset,
java.lang.String destDatasetName)
创建矢量数据集的内点数据集,并把矢量数据集中几何对象的属性复制到相应的点数据集属性表中。 |
boolean |
isAutoConnect()
返回一个布尔值指定数据源是否自动连接数据库。 |
boolean |
isCanConnect()
用于连接数据源,连接成功返回 True;否则返回 False。 |
boolean |
isConnected()
判断数据源是否与数据库连接,非数据库型数据源此方法无效。 |
boolean |
isFieldIndexNameExist(java.lang.String strIndexName,
java.lang.String strTableName)
判断指定表名的指定索引名称是否存在。 |
boolean |
isModified()
返回此数据源是否有改动。 |
boolean |
isOpened()
返回数据源是否打开的状态,如果数据源处于打开状态,返回 true,如果数据源被关闭,则返回 false。 |
boolean |
isReadOnly()
返回数据源是否以只读方式打开。 |
boolean |
isSequenceExist(java.lang.String sequenceName)
判断指定的序列是否存在。 |
boolean |
isUnicodeSupported()
返回判断当前数据源是否支持 Unicode 数据存储,true 表示支持;false 表示不支持。 |
DatasetVector |
labelToTextDataset(DatasetVector srcDataset,
java.lang.String desDatasetName,
java.lang.String textField,
TextStyle textStyle)
用于将数据集的属性字段生成一个文本数据集。 |
boolean |
open(DatasourceConnectionInfo connectioninfo)
根据指定的数据源连接信息打开数据源。 |
Dataset |
open(DatasourceConnectionInfo connectioninfo,
java.lang.String strDtName)
根据指定的数据源连接信息和数据集名称打开数据源获取数据集。 |
DatasetVector |
recordsetToDataset(Recordset recordset,
java.lang.String desDatasetName)
用于将记录集的内容生成一个相应类型的矢量数据集。 |
void |
refresh()
该方法用于对数据库类型的数据源进行刷新。 |
void |
removeDisconnectedListener(DatasourceDisconnectedListener l)
移除一个用于接收数据源断开连接结束事件( DatasourceDisconnectedEvent )的监听器。 |
void |
removeRefreshedListener(DatasourceRefreshedListener l)
移除一个用于接收数据源刷新结束事件( DatasourceRefreshedEvent )的监听器。 |
void |
removeSteppedListener(SteppedListener l)
移除一个用于接收进度条事件( SteppedEvent )的监听器。 |
void |
setAutoConnect(boolean value)
设置一个布尔值指定数据源是否自动自动连接数据库。 |
static void |
setConnectCheckInterval(int value)
设置两次检测连接数据库时间间隔,以毫秒为单位。 |
void |
setCoordUnit(Unit unit)
设置数据源坐标单位。 |
void |
setDescription(java.lang.String value)
设置用户添加的关于数据源的描述信息。 |
void |
setDistanceUnit(Unit unit)
设置数据源的距离单位。 |
boolean |
setLockState(LockStateType lockType)
数据源设置内存锁状态。 |
void |
setPrjCoordSys(PrjCoordSys value)
设置数据源的投影信息。 |
void |
updateDataset()
对数据集进行更新操作。 |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public Datasource(EngineType enginetype)
enginetype
- 引擎类型。方法详细信息 |
---|
public boolean open(DatasourceConnectionInfo connectioninfo)
connectioninfo
- 数据源连接信息。
public Dataset open(DatasourceConnectionInfo connectioninfo, java.lang.String strDtName)
connectioninfo
- 数据源连接信息。strDtName
- 数据集名称。
public boolean create(DatasourceConnectionInfo connectioninfo)
connectioninfo
- 数据源连接信息。
public void close()
public Workspace getWorkspace()
public boolean isUnicodeSupported()
public java.lang.String getAlias()
public boolean isAutoConnect()
public void setAutoConnect(boolean value)
value
- 一个布尔值指定是否自动连接。public boolean isConnected()
如果数据源没有连接,可以通过调用 connect()
方法 来实现与数据库的连接。
public DatasourceConnectionInfo getConnectionInfo()
DatasourceConnectionInfo
类。
DatasourceConnectionInfo
public Datasets getDatasets()
一个数据源中所有的数据集对象都由一个数据集集合对象来管理。当数据源中存在多个 schema,可获取到多个 schema 下的数据集,同名数据集将采用 schema.datasetname 的形式进行区分。(多个 schema 的情况当前仅支持 PostGIS 和 YuKon 引擎)
特别说明:PostGIS数据库中存在第三方来源的大小写不同的同名数据集时,引擎暂未对此场景做处理。
public java.lang.String getDescription()
public void setDescription(java.lang.String value)
value
- 用户添加的关于数据源的描述信息。public EngineType getEngineType()
EngineType
类型。
EngineType
public boolean isModified()
public PrjCoordSys getPrjCoordSys()
public void setPrjCoordSys(PrjCoordSys value)
value
- 数据源的投影信息。public DatasetGroup getRootGroup()
public boolean isReadOnly()
对文件型数据源,如果只读方式打开,就是共享的,可以打开多次;如果以非只读方式打开,则只能打开一次。
如果以只读方式打开数据源,数据源的相关信息以及其中的数据都不可修改。即在数据源中不允许进行下列操作,例如:复制数据集(copyDataset()
),创建内点数据集(innerPointToDataset()
),根据关联表的坐标字段创建点数据集(fieldToPointDataset()
),属性字段生成文本数据集(labelToTextDataset()
),将记录集的内容生成矢量数据集(recordsetToDataset()
)。
对于影像数据源(IMAGEPLUGINS
引擎类型)只会以只读方式打开。
public Unit getCoordUnit()
public void setCoordUnit(Unit unit)
unit
- 数据源坐标单位。public Unit getDistanceUnit()
public void setDistanceUnit(Unit unit)
unit
- 数据源的距离单位。public VersionManager getVersionManager()
public ReplicaManager getReplicaManager()
public boolean connect()
可以通过 isConnected()
方法判断数据源与数据库是否连接。未连接时可以使用 connect()
方法重新连接。
public Dataset copyDataset(Dataset srcDataset, java.lang.String desDatasetName, EncodeType encodeType)
Datasets.isAvailableDatasetName()
方法来判断目标数据集的名称是否合法,并且目标数据集的名称不能使用数据库的关键字;复制数据集时,可通过 EncodeType
参数来对数据集的编码方式进行修改。有关数据集存储的编码方式请参见 EncodeType
枚举类型。
由于CAD数据集不支持任何编码,对 CAD 数据集进行复制(copyDataset()
)操作时设置的 EncodeType
无效,即只能置为 NONE
。
支持将ImagePlugin引擎数据源中的影像数据集到其它数据源中,也支持将其它数据源中的数据集复制到影像数据源
从 ImagePlugin 打开的数据源中复制数据集到其他数据集无效,也不能向 ImagePlugin 数据源中复制数据集,因为这种引擎是只读的。
PostGIS作为复制的目标数据源时,复制后字段名统一存为小写。
srcDataset
- 要复制的源数据集。desDatasetName
- 目标数据集的名称。encodeType
- 数据集的编码方式。
EncodeType
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); }
public Dataset copyDatasetWithSmID(Dataset srcDataset, java.lang.String desDatasetName, EncodeType encodeType)
srcDataset
- 要复制的源数据集。desDatasetName
- 目标数据集的名称。encodeType
- 数据集的编码方式。
public Dataset copyDataset(Dataset srcDataset, java.lang.String desDatasetName, EncodeType encodeType, Charset nCharset)
srcDataset
- 要复制的源数据集。desDatasetName
- 目标数据集的名称。encodeType
- 数据集的编码方式。nCharset
- 数据集的字符集类型。
public DatasetVector innerPointToDataset(DatasetVector srcDataset, java.lang.String destDatasetName)
srcDataset
- 要计算内点数据集的矢量数据集。destDatasetName
- 结果点数据集的名称。
fieldToPointDataset(DatasetVector, String, String, String)
Datasource.fieldToPointDataset()
方法的示例。public DatasetVector fieldToPointDataset(DatasetVector srcDataset, java.lang.String desDatasetName, java.lang.String fieldX, java.lang.String fieldY)
srcDataset
- 关联属性表中带有坐标字段的矢量数据集。desDatasetName
- 待创建的点数据集的名称。fieldX
- 表示点横坐标的字段。fieldY
- 表示点纵坐标的字段。
public void toDatasetTest() { // 假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象 // 取出该数据源中的一个数据集{datasetVector},该数据集有两个名为 SQKM 和 SQMI 的 double 类型字段,以及名为 Capital 的 String 类型字段 // 从 datasetVector 属性表的 SQKM、SQMI 字段创建点数据集 DatasetVector datasetVector = (DatasetVector) datasource.getDatasets(). get("World"); datasource.fieldToPointDataset(datasetVector, datasource.getDatasets(). getAvailableDatasetName("point"), "SQKM", "SQMI"); // Create the inner point dataset of datasetVector. datasource.innerPointToDataset(datasetVector, datasource.getDatasets(). getAvailableDatasetName("innerPoint")); // Create a text dataset using the field "Capital" of datasetVector. datasource.labelToTextDataset(datasetVector, datasource.getDatasets(). getAvailableDatasetName("text"), "Capital", new TextStyle()); // Get the record where SmID>10. Converts the content of the recordset to the corresponding vector dataset. Recordset recordset = datasetVector .query("SmID>10", CursorType.STATIC); datasource.recordsetToDataset(recordset, datasource.getDatasets(). getAvailableDatasetName("Record")); recordset.dispose(); }
public DatasetVector labelToTextDataset(DatasetVector srcDataset, java.lang.String desDatasetName, java.lang.String textField, TextStyle textStyle)
srcDataset
- 要转换属性的数据集,必须为矢量数据集。desDatasetName
- 目标文本数据集名,此数据集存放于调用本方法的数据源中。textField
- 要转换的属性字段的名称。textStyle
- 文本数据集的风格。
fieldToPointDataset(DatasetVector,String,String, String)
Datasource.fieldToPointDataset()
方法的示例。public DatasetVector recordsetToDataset(Recordset recordset, java.lang.String desDatasetName)
recordset
- 要转换的源记录集。desDatasetName
- 要生成的矢量数据集的名称。
fieldToPointDataset(DatasetVector,String,String, String)
Datasource.fieldToPointDataset()
方法的示例。public boolean executeSQL(java.lang.String sql)
SQL 语句中可直接书写执行事务处理相关的语句而不需设置“以事务方式打开”;
注意:当前版本暂不支持事务的处理。
sql
- 标准 SQL 查询语句.
public void refresh()
public boolean flush(java.lang.String datasetName)
datasetName
- 需要刷新的数据集名称。当传入长度为空的字符串,表示对所有数据集进行刷新;否则对指定名字的数据集进行刷新。
public DomainManager getDomainManager()
public boolean createSequence(java.lang.String sequenceName)
sequenceName
- 指定的待创建序列的名称。
public boolean createSequence(java.lang.String sequenceName, long startValue, long maxValue, int incrementValue)
sequenceName
- 指定的待创建序列的名称。startValue
- 指定的序列的起始值。maxValue
- 指定的序列的终止值。指定为 -1,表示采用 Int64 类型的最大值作为终止值。incrementValue
- 指定的增长步长。
public boolean deleteSequence(java.lang.String sequenceName)
sequenceName
- 指定的待删除序列的名称。
public long getSequenceNextValue(java.lang.String sequenceName)
序列刚创建时,使用该方法获得的是序列的起始值。当序列被使用后,使用该方法可以获取到下一个将要被使用的序列值。注意,序列值是以该序列指定的步长来增长的。
sequenceName
- 指定的序列名称。
public boolean isSequenceExist(java.lang.String sequenceName)
sequenceName
- 指定的序列名称。
public void addDisconnectedListener(DatasourceDisconnectedListener l)
DatasourceDisconnectedEvent
)的监听器。
l
- 一个用于接收数据源断开连接结束事件的监听器。public void removeDisconnectedListener(DatasourceDisconnectedListener l)
DatasourceDisconnectedEvent
)的监听器。
l
- 一个用于接收数据源断开连接结束事件的监听器。public void addRefreshedListener(DatasourceRefreshedListener l)
DatasourceRefreshedEvent
)的监听器。
l
- 一个用于接收数据源刷新结束事件的监听器。public void removeRefreshedListener(DatasourceRefreshedListener l)
DatasourceRefreshedEvent
)的监听器。
l
- 一个用于接收数据源刷新结束事件的监听器。public void addSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。
l
- 用于接收进度条事件的监听器。public void removeSteppedListener(SteppedListener l)
SteppedEvent
)的监听器。
l
- 用于接收进度条事件的监听器。public static int getConnectCheckInterval()
DatasourceDisconnectedEvent
事件有效。
public static void setConnectCheckInterval(int value)
该值对 DatasourceDisconnectedEvent
事件有效。
value
- 两次检测连接数据库时间间隔,以毫秒为单位。public boolean changePassword(java.lang.String oldPassword, java.lang.String newPassword)
只有在工作空间处于打开的状态下,才能修改密码,并且该方法只针对文件型的数据源。
oldPassword
- 指定的旧的密码。newPassword
- 指定的新的密码。
public void updateDataset()
public boolean isOpened()
public java.lang.String getDateLastUpdated()
public boolean isFieldIndexNameExist(java.lang.String strIndexName, java.lang.String strTableName)
strIndexName
- 指定的索引名称。strTableName
- 指定的表名。
public LockStateType getLockState()
public boolean setLockState(LockStateType lockType)
lockType
- 锁的类型。 指定的索引名称。
public boolean isCanConnect()
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |