|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.data.Dataset com.supermap.data.DatasetVector<RelationDatasetInfo>
RelationDatasetInfo
- public class DatasetVector<RelationDatasetInfo>
矢量数据集类。
用于对矢量数据集进行描述,并对之进行相应的管理和操作。对矢量数据集的操作主要包括数据查询、修改、删除、建立索引等。
用户在对矢量数据集进行操作之前,需要先打开该数据集,即调用打开数据集的方法—— Dataset.open()
方法。
构造方法摘要 | |
---|---|
DatasetVector()
|
方法摘要 | |
---|---|
boolean |
addCollectionDataset(DatasetVector dtv)
数据集集合添加一个子数据集。 |
boolean |
addRelationDataset(RelationDatasetInfo rdInfo)
增加实体数据集的关系数据集 |
boolean |
append(Recordset recordset)
用于将记录集( Recordset )追加到矢量数据集(DatasetVector )中。 |
boolean |
append(Recordset recordset,
java.lang.String tileName)
用于将记录集( Recordset )按图幅名字追加到矢量数据集(DatasetVector )中,要求该矢量数据集的空间索引为图幅索引,追加后记录集中的所有记录将作为图幅索引的一幅。 |
boolean |
append(Recordset recordset,
java.lang.String[] sourceFields,
java.lang.String[] targetFields)
将记录集中源字段数组对应的记录,按照目标字段数组对矢量数据集追加行。 |
boolean |
appendFields(DatasetVector sourceDataset,
java.lang.String sourceLinkFieldName,
java.lang.String targetLinkFieldName,
java.lang.String[] sourceFields)
从源数据集向目标数据集追加字段,并根据关联字段查询结果对字段进行赋值。 |
boolean |
appendFields(DatasetVector sourceDataset,
java.lang.String sourceLinkFieldName,
java.lang.String targetLinkFieldName,
java.lang.String[] sourceFields,
java.lang.String[] targetFields)
从源数据集向目标数据集追加字段,并根据关联字段查询结果对字段进行赋值。 |
boolean |
buildFieldIndex(java.lang.String[] fieldName,
java.lang.String indexName)
为数据集的非空间字段创建索引。 |
boolean |
buildSpatialIndex(SpatialIndexInfo spatialIndexInfo)
根据指定的空间索引信息为矢量数据集创建空间索引。 |
boolean |
buildSpatialIndex(SpatialIndexType spatialIndexType)
根据给定的空间索引类型来为矢量数据集创建空间索引。 |
boolean |
buildVectorPyramid(int[] levels,
double[] tolerances,
boolean[] preserveCollapseds,
java.lang.String[] filters,
java.lang.String geometryName,
java.lang.String[] fieldnames)
创建矢量金字塔。 |
boolean |
computeAreaLength()
紧缩面积长度是否成功 |
Rectangle2D |
computeBounds()
重新计算数据集的空间范围。 |
boolean |
copyFieldsToPyramid(java.lang.String[] fields)
复制字段到矢量金字塔。 |
boolean |
createGridCodeFiled()
创建空间网格编码文件,用于存储数据库中空间对象的网格编码信息。 |
boolean |
DeleteDatasetFromCollection(DatasourceConnectionInfo info,
java.lang.String datasetName)
删除数据集合子数据集。 |
boolean |
deleteRecords(int[] id)
通过 ID 数组删除数据集中的记录。 |
boolean |
deleteRelationDataset(RelationDatasetInfo rdInfo)
删除实体数据集的关系数据集 |
boolean |
dropFieldIndex(java.lang.String indexName)
根据索引名指定字段,删除该字段的索引。 |
boolean |
dropGridCodeFiled()
返回空间网格编码文件。 |
boolean |
dropSpatialIndex()
删除空间索引。 |
boolean |
dropVectorPyramid()
删除矢量金字塔。 |
boolean |
dropVectorPyramid(java.lang.String geometryName)
删除指定几何字段创建的矢量金字塔。 |
java.util.Map<java.lang.Integer,Feature> |
getAllFeatures()
返回矢量数据集中的所有特征要素集。 |
java.lang.String |
getAvailableFieldName(java.lang.String name)
根据传入参数生成一个合法的字段名。 |
Charset |
getCharset()
返回矢量数据集的字符集。 |
DatasetVector |
getChildDataset()
返回矢量数据集的子数据集。 |
DatasetVector[] |
getChildDatasets()
获取图幅索引的子数据集。 |
int |
getCollectionDatasetCount()
获取数据集集合中子数据集的个数。 |
java.util.ArrayList<CollectionDatasetInfo> |
getCollectionDatasetInfos()
获取数据集集合中所有子数据集的信息。 |
DatasetIDType |
getDatasetIDType()
获取数据集 ID 标识符类型。 |
int |
getFieldCount()
返回矢量数据集中字段的数目。 |
java.util.Map<java.lang.String,java.lang.String> |
getFieldIndexes()
返回当前数据集属性表建的索引与建索引的字段的关系映射对象。 |
FieldInfos |
getFieldInfos()
返回字段信息集合的对象。 |
java.lang.String |
getFieldNameBySign(FieldSign value)
根据字段标识获取字段名。 |
java.lang.String[] |
getGeoFieldNames()
获取数据集中用于存储对象几何信息的字段名称。 |
java.lang.String |
getIDFieldName()
获取数据集的唯一ID字段名。 |
int[] |
getIDsByGeoRelation(DatasetVector sourceataset,
SpatialRelationType spatialRelationType,
boolean isBorderInside,
boolean isShowProgress)
从另一数据集中获取与当前数据集的对象满足一定空间关系的对象的 ID。 |
int[] |
getIDsByGeoRelation(Geometry[] sourceGeometries,
SpatialRelationType spatialRelationType,
boolean isBorderInside,
boolean isShowProgress)
从给定的几何对象集合中获取与当前数据集的对象满足一定空间关系的对象的 ID。 |
int[] |
getIDsByGeoRelation(Recordset sourceRecordset,
SpatialRelationType spatialRelationType,
boolean isBorderInside,
boolean isShowProgress)
从另一记录集中获取与当前数据集的对象满足一定空间关系的对象的 ID。 |
double |
getMaxZ()
获取模型数据集最大值。 |
double |
getMinZ()
获取模型数据集最小值。 |
Dataset |
getParentDataset()
返回矢量数据集的父数据集。 |
int |
getRecordCount()
返回矢量数据集中全部记录的数目。 |
Recordset |
getRecordset(boolean isEmptyRecordset,
CursorType cursorType)
根据给定的参数来返回空的记录集或者返回包括所有记录的记录集对象。 |
java.util.ArrayList<RelationDatasetInfo> |
getRelationDatasets()
获取实体数据集的关系数据集 |
SpatialIndexType |
getSpatialIndexType()
返回当前的空间索引类型。 |
DatasetType |
GetSubCollectionDatasetType()
获取数据集集合中子数据集的数据集类型。 |
Tolerance |
getTolerance()
返回矢量数据集的容限,单位与数据集的单位相同。 |
boolean |
hasPyramid()
判断是否存在矢量金字塔。 |
boolean |
hasPyramid(java.lang.String geometryName)
判断指定几何字段是否创建了矢量金字塔。 |
boolean |
isAvailableFieldName(java.lang.String fieldName)
用于判断属性数据表中字段名是否合法。 |
boolean |
isCreateGridCodeFiled()
返回是否已创建空间网格编码。 |
boolean |
isFileCache()
返回是否使用文件形式的缓存。 |
boolean |
isSimpliFy()
获取postgis是否设置抽析 |
boolean |
isSpatialIndexDirty()
返回矢量数据集中空间索引是否需要重建。 |
boolean |
isSpatialIndexTypeSupported(SpatialIndexType type)
判断当前数据集是否支持指定的类型的空间索引。 |
boolean |
isSQLQuery()
判断数据集是否为用户通过过滤条件生成的临时数据集。 |
Recordset |
query(Geometry geometry,
double bufferDistance,
CursorType cursorType)
用于查询数据集中落在指定空间对象的缓冲区内的记录。 |
Recordset |
query(Geometry geometry,
double bufferDistance,
java.lang.String attributeFilter,
CursorType cursorType)
用于查询数据集中落在指定空间对象的缓冲区内,并且满足一定条件的记录。 |
Recordset |
query(int[] id,
CursorType cursorType)
根据 ID 进行查询。 |
Recordset |
query(int[] id,
java.lang.String idFieldName,
CursorType cursorType)
根据指定字段做ID查询,指定字段类型必须是整型。 |
Recordset |
query(long[] id,
CursorType cursorType)
根据指定字段做ID查询,指定字段类型必须是长整型。 |
Recordset |
query(long[] id,
java.lang.String idFieldName,
CursorType cursorType)
根据指定字段做ID查询,指定字段类型必须是长整型。 |
Recordset |
query(QueryParameter queryParameter)
通过设置查询条件对矢量数据集进行查询,该方法默认查询空间信息与属性信息。 |
Recordset |
query(Rectangle2D bounds,
CursorType cursorType)
用于查询落在已知空间范围内的记录。 |
Recordset |
query(Rectangle2D bounds,
java.lang.String attributeFilter,
CursorType cursorType)
用于查询落在已知空间范围内,并且满足一定条件的记录。 |
Recordset |
query(java.lang.String attributeFilter,
CursorType cursorType)
利用查询条件查询数据。 |
boolean |
reBuildSpatialIndex()
在原有的空间索引的基础上进行重建,如果原来的空间索引被破坏,那么重建成功之后还可以继续使用。 |
boolean |
registerVersion()
对数据集注册版本,数据集需注册版本,才能进入版本管理工作流程。 |
boolean |
resample(ResampleInformation resampleInfo,
boolean isShowProgress,
boolean isSaveSmallGeometry)
对矢量数据集进行重采样,支持线数据集、面数据集和网络数据集。 |
void |
setCharset(Charset value)
设置矢量数据集的字符集。 |
void |
setFileCache(boolean value)
设置是否使用文件形式的缓存。 |
void |
setGeoFieldName(java.lang.String strGeoName)
用户查询结果保存的数据集,如果存在多个geometry类型字段,可设置其中一个geometry类型字段,作为对象的空间几何进行地图展示,仅用于 Yukon 和 PostGIS 空间数据引擎。 |
void |
setIDFieldName(java.lang.String strUserID)
对用户查询结果保存的数据集设置唯一ID字段,仅用于 Yukon 和 PostGIS 空间数据引擎。 |
void |
setIsSimpliFy(boolean value)
设置postgis是否抽析 |
boolean |
setRecordCount(int value)
返回矢量数据集数目是否设置成功 |
void |
setTolerance(Tolerance tolerance)
设置矢量数据集的容限,单位与数据集的单位相同。 |
boolean |
smooth(int smoothness,
boolean isShowProgress)
对矢量数据集进行光滑,支持线数据集、面数据集和网络数据集。 |
double |
statistic(int fieldIndex,
StatisticMode mode)
对指定的字段按照给定的方式进行统计。 |
double |
statistic(java.lang.String fieldExpression,
StatisticMode mode)
通过字段名称指定字段,对指定的字段按照给定的方式进行统计。 |
boolean |
truncate()
清除矢量数据集中的所有记录。 |
boolean |
unRegisterVersion()
对数据集取消注册版本,数据集取消注册版本后,将退出版本管理工作流程。 |
boolean |
updateField(int fieldIndex,
java.lang.Object value,
java.lang.String attributeFilter)
根据指定的需要更新的字段序号,用指定的用于更新的字段值更新符合 attributeFilter 条件的所有记录的字段值。 |
boolean |
updateField(int fieldIndex,
java.lang.String expression,
java.lang.String attributeFilter)
根据指定的需要更新的字段序号,用指定的表达式计算结果更新符合查询条件的所有记录的字段值。 |
boolean |
updateField(java.lang.String fieldName,
java.lang.Object value,
java.lang.String attributeFilter)
根据指定的需要更新的字段名称,用指定的用于更新的字段值更新符合 attributeFilter 条件的所有记录的字段值。 |
boolean |
updateField(java.lang.String fieldName,
java.lang.String expression,
java.lang.String attributeFilter)
根据指定的需要更新的字段名,用指定的表达式计算结果更新符合查询条件的所有记录的字段值。 |
boolean |
updateFields(DatasetVector sourceDataset,
SpatialRelationType spatialRelationType,
java.lang.String[] sourceFields,
java.lang.String[] targetFields,
AttributeStatisticsType attributeStatisticsType,
boolean isBorderInside,
java.lang.String errorName,
boolean isShowProgress)
根据空间关系更新数据集中对象的属性。 |
boolean |
updateFields(Recordset sourceRecordset,
SpatialRelationType spatialRelationType,
java.lang.String[] sourceFields,
java.lang.String[] targetFields,
AttributeStatisticsType attributeStatisticsType,
boolean isBorderInside,
java.lang.String errorName,
boolean isShowProgress)
根据空间关系更新数据集中对象的属性。 |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public DatasetVector()
方法详细信息 |
---|
public Charset getCharset()
public void setCharset(Charset value)
value
- 矢量数据集的字符集。public DatasetVector getChildDataset()
public Dataset getParentDataset()
public boolean isSimpliFy()
public void setIsSimpliFy(boolean value)
value
- public boolean isFileCache()
文件形式的缓存可以提高浏览速度。
注意:文件形式的缓存只对 Oracle 数据源下已创建图幅索引的矢量数据集有效。
public void setFileCache(boolean value)
文件形式的缓存可以提高浏览速度,只针对数据库型数据源有效。
value
- 是否使用文件形式的缓存。public int getRecordCount()
public boolean setRecordCount(int value)
value
-
public void setTolerance(Tolerance tolerance)
tolerance
- 矢量数据集对象的悬线(Dangle)容限,单位与数据集的单位相同。public Tolerance getTolerance()
public int getFieldCount()
public FieldInfos getFieldInfos()
通过此方法得到的 FieldInfos
对象不可执行 clear()
和 exchange()
方法。
public boolean append(Recordset recordset)
Recordset
)追加到矢量数据集(DatasetVector
)中。追加时,记录集与矢量数据集中字段名相同的字段直接追加,矢量数据集中没有而记录集中有的字段将跳过不处理。
执行完追加后 recordset 会指向最后一条记录的后面,即 isEOF 方法为 true。
recordset
- 添加的记录集对象。
public void appendTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含两个矢量数据集“World”和“Ocean”。 // 获取两个矢量数据集 DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); DatasetVector datasetVector1 = (DatasetVector) datasource.getDatasets().get("Ocean"); // 返回名为“Ocean”的数据集的所有记录,将其追加到名为“World”的数据集中 Recordset recordset = datasetVector1.getRecordset(false,CursorType.DYNAMIC); if (datasetVector.append(recordset)) { System.out.println("追加数据集成功"); } // 释放资源 recordset.dispose(); datasetVector.close(); datasetVector1.close(); }
public boolean append(Recordset recordset, java.lang.String tileName)
Recordset
)按图幅名字追加到矢量数据集(DatasetVector
)中,要求该矢量数据集的空间索引为图幅索引,追加后记录集中的所有记录将作为图幅索引的一幅。追加时,记录集与矢量数据集中字段名相同的字段直接追加,矢量数据集中没有而记录集中有的字段将跳过不处理。该方法一般用于标准图幅数据入库过程。
执行完追加后 recordset 会指向最后一条记录的后面,即 isEOF 方法为 true。
注:目前,仅有 ORACLEPLUS
引擎,支持矢量数据集按图幅追加数据。
recordset
- 添加的记录集对象。tileName
- 新增的图幅名称标记。
public boolean append(Recordset recordset, java.lang.String[] sourceFields, java.lang.String[] targetFields)
例如:将记录集中的b和c字段追加到矢量数据集的a和b字段中,其中,b和c字段组成源字段数组,a和b字段组成目标字段数组,调用该方法,将记录集的b和c的字段值逐行写到矢量数据集a和b字段下。
使用该方法有以下几点注意事项:
1.系统字段不能作为目标字段,可以作为源字段。
2.目标字段数组中的所有字段必须在目标数据集中存在,如果目标字段数组中指定了矢量数据集中不存在的字段,则追加失败。
3.源字段数组中指定了记录集中不存在的字段,追加失败。
4.目标矢量数据集中未被指定的字段,所追加记录值按默认值赋值。
目标字段和源字段的字段类型有以下注意:
1.当目标字段的字段类型为整型时,源字段的字段类型的整型字节数要小于或等于目标字段的整型字节数,即当目标字段的类型为Long型时,源字段的字段类型可以为int或Long;
2.当目标字段的字段类型为浮点型时,源字段的字段类型的精度必须小于或等于目标字段的类型精度,即当目标字段的类型为double型时,源字段的类型可以为float或double;
3.当目标字段的字段类型为字符或文本型时,源字段的字段的类型可以为二进制类型以外的所有类型;
4.当目标字段类型为日期型和二进制字段,源字段的字段类型要和其一致。
recordset
- 源记录集对象。sourceFields
- 源字段数组,对应的是源记录集中的字段。targetFields
- 目标字段数组,对应的是矢量数据集中的字段。
public void appendDemo() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含两个矢量数据集“Capital”和“Point”。 // 获取两个矢量数据集 DatasetVector tarDataset = (DatasetVector) datasource.getDatasets().get("Point"); DatasetVector srcDataset = (DatasetVector) datasource.getDatasets().get("Capital"); // 获取源记录集 Recordset srcRecordset = srcDataset.getRecordset(false,CursorType.STATIC); // 源字段数组,数组中的字段必须在源记录集中存在 String[] srcFieldsNames = new String[] {"NAME", "DESCRIPTION", "URBAN_POP"}; // 目标字段数组,数组中的字段必须在目标数据集中存在 String[] tagFieldsNames = new String[] {"CAPITAL", "COUNTRY", "CAP_POP"}; if (tarDataset.append(srcRecordset, srcFieldsNames, tagFieldsNames)) { System.out.println("追加成功"); } // 释放资源 srcRecordset.dispose(); srcDataset.close(); tarDataset.close(); }
public boolean deleteRecords(int[] id)
id
- 待删除记录的 ID 数组。
public boolean isAvailableFieldName(java.lang.String fieldName)
fieldName
- 字段的名称。
public java.lang.String getAvailableFieldName(java.lang.String name)
name
- 输入的字段名称。
public Recordset query(java.lang.String attributeFilter, CursorType cursorType)
对于 UDB 引擎,当用户传入字符串型时间字段并用此时间值构造查询条件时,需遵循以下规则:将时间值格式化到 ”to_data()” 字符串的括号中,例如,时间值 "2008-5-12 14:28:00",写为 "to_date(2008-5-12 14:28:00)",注意括号中时间值无需引号。
注意:
attributeFilter
- 查询条件,相当于 SQL 语句中的 Where 子句。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读属性。详细信息请参见 CursorType
类型。
public void queryTest(){ // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含矢量数据集"Link"。 // 获取矢量数据集 DatasetVector vector = (DatasetVector) datasource.getDatasets().get("Link"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //构造一个时间对象 Date dateOld=new Date(110,0,10,11,12,13); //构造一个当前时间的对象 Date dateNow = new Date(); //格式化成字符串 String dtStrOld = format.format(dateOld); String dtStrNow = format.format(dateNow); //用两个时间字符串构造查询条件 String filter = "TimeField between '" + dtStrOld + "' and '" + dtStrNow + "'"; //将查询条件传入到Query方法,查询记录集 Recordset recordset = vector.query(filter,CursorType.STATIC); }
public Recordset query(Geometry geometry, double bufferDistance, CursorType cursorType)
geometry
- 用于查询的空间对象。bufferDistance
- 缓冲区的半径。单位与被查询数据集的单位一致。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读属性。详细信息请参见 CursorType
类型。
public Recordset query(int[] id, CursorType cursorType)
id
- 指定的 ID 数组。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。详细信息请参见 CursorType
类型。
public Recordset query(long[] id, CursorType cursorType)
id
- 指定的 ID 数组。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读属性。详细信息请参见 CursorType
类型。
public Recordset query(int[] id, java.lang.String idFieldName, CursorType cursorType)
id
- 指定 ID 数组。idFieldName
- 定的字段名称。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读属性。详细信息请参见 CursorType
类型。
public Recordset query(long[] id, java.lang.String idFieldName, CursorType cursorType)
id
- 指定 ID 数组。idFieldName
- 定的字段名称。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读属性。详细信息请参见 CursorType
类型。
public boolean buildSpatialIndex(SpatialIndexType spatialIndexType)
SpatialIndexType
枚举类型说明。
注意:
本操作需要在数据集关闭状态时进行,如当前数据集仍然打开,则重建空间索引失败。
spatialIndexType
- 指定的需要创建空间索引的类型。
public void buildSpatialIndexTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含矢量数据集"World"。 // 获取矢量数据集 DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 判断此数据集的空间索引是否需要重建,如果需要重建,建立一个 R 树索引,如果不需重建,则判断现有数据集是否支持多级网格索引 if (datasetVector.isSpatialIndexDirty()) { // 删除已存在的索引 datasetVector.dropSpatialIndex(); // 关闭数据集 datasetVector.close(); // 重建 R 树索引 if (datasetVector.buildSpatialIndex(SpatialIndexType.RTREE)) { SpatialIndexType spatialindextype = datasetVector.getSpatialIndexType(); System.out.println("新建空间索引的类型为:" + spatialindextype); } } else { // 如果不需要重建,判断现有数据集是否支持多级网格索引 if (datasetVector.isSpatialIndexTypeSupported(SpatialIndexType.MULTI_LEVEL_GRID)) { System.out.println("该数据集支持多级网格索引"); } else { System.out.println("该数据集不支持多级网格索引"); } } }
public boolean buildSpatialIndex(SpatialIndexInfo spatialIndexInfo)
注意:
spatialIndexInfo
- 指定的空间索引信息对象。
java.lang.UnsupportedOperationException
- 本操作需要在数据集关闭状态时进行,如当前数据集仍然打开。public Recordset getRecordset(boolean isEmptyRecordset, CursorType cursorType)
isEmptyRecordset
- 给定的判断是否返回空的记录集参数。为 true 时返回空记录集。为 false 时返回包含所有记录的记录集合对象。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。详细信息请参见 CursorType
类型。
append(Recordset)
DatasetVector.append()
方法的示例。public Recordset query(Geometry geometry, double bufferDistance, java.lang.String attributeFilter, CursorType cursorType)
注意:
geometry
- 用于查询的空间对象。bufferDistance
- 缓冲区的半径。单位与被查询数据集的单位一致。attributeFilter
- 查询条件,通常是一个 SQL 语句。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。详细信息请参见 CursorType
类型。
public Recordset query(Rectangle2D bounds, CursorType cursorType)
bounds
- 已知的空间范围。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。详细信息请参见 CursorType
类型。
public Recordset query(Rectangle2D bounds, java.lang.String attributeFilter, CursorType cursorType)
注意:
bounds
- 已知的空间范围。attributeFilter
- 查询过滤条件,相当于 SQL 语句中的 Where 子句部分。cursorType
- 指定的游标类型,以便用户控制查询出来的记录集的属性。当游标类型为动态时,记录集可以被修改,当游标类型为静态时,记录集为只读。详细信息请参见 CursorType
类型。
public Recordset query(QueryParameter queryParameter)
注意:
QueryParameter
对象的 setGroupBy
方法后,空间查询结果可能不正确。QueryParameter.setSpatialQueryObject
)中存在对象重叠的情况时,空间查询的结果可能不正确,建议采用遍历搜索数据集/记录集,逐个使用单对象查询的方式进行空间查询。setDefault
。
queryParameter
- 定义的查询条件。
statistic(String,StatisticMode)
DatasetVector.statistic()
方法的示例。public boolean buildFieldIndex(java.lang.String[] fieldName, java.lang.String indexName)
fieldName
- 非空间字段名称。indexName
- 索引名称。
public double statistic(java.lang.String fieldExpression, StatisticMode mode)
当前版本提供了6种统计方式。统计字段的最大值,最小值,平均值,总和,标准差,以及方差。
当前版本支持的统计字段类型为布尔,字节,双精度,单精度,16位整型,32位整型。
fieldExpression
- 统计使用的字段或字段运算表达式,如 SmID/100 等。mode
- 统计方式。
public void statisticTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含矢量数据集"World",数据集中包含字段 Pop_1994,代表1994年的人口数目。 // 获取矢量数据集 DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 计算1994年人口的平均值,构建查询条件,即人口数大于一百万,查询条件遵循 SQL 语法 double average = datasetVector.statistic("Pop_1994",StatisticMode.AVERAGE); System.out.println("1994年人口的平均值为:" + average); QueryParameter queryParameter = new QueryParameter(); queryParameter.setAttributeFilter("Pop_1994 >"+average); queryParameter.setHasGeometry(true); // 根据查询条件执行查询操作,返回查询结果记录集 Recordset queryRecordset = datasetVector.query(queryParameter); // 释放资源 queryRecordset.dispose(); datasetVector.close(); }
public double statistic(int fieldIndex, StatisticMode mode)
当前版本提供了6种统计方式。统计字段的最大值,最小值,平均值,总和,标准差,以及方差。
当前版本支持的统计字段类型为布尔,字节,双精度,单精度,16位整型,32位整型。
fieldIndex
- 要统计的字段索引值。mode
- 统计方式。
public boolean updateField(java.lang.String fieldName, java.lang.Object value, java.lang.String attributeFilter)
fieldName
- 需要更新的字段名。value
- 指定用于更新的字段值。attributeFilter
- 要更新记录的查询条件,如果 attributeFilter 为空字符串,则更新表中所有的记录。
public boolean updateField(int fieldIndex, java.lang.Object value, java.lang.String attributeFilter)
fieldIndex
- 需要更新的字段序号。value
- 指定用于更新的字段值。attributeFilter
- 要更新记录的查询条件,如果 attributeFilter 为空字符串,则更新表中所有的记录。
public boolean updateField(java.lang.String fieldName, java.lang.String expression, java.lang.String attributeFilter)
fieldName
- 需要更新的字段名。expression
- 指定的表达式,表达式可以是字段的运算或函数的运算。例如:"SMID" 、"abs(SMID)"、"SMID+1"、 " '字符串'"。attributeFilter
- 要更新记录的查询条件,如果 attributeFilter 为空字符串,则更新表中所有的记录。
public void updateFieldTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含矢量数据集"World",数据集中包含字段 Pop_1994,代表1994年的人口数目。 // 获取矢量数据集 DatasetVector datasetVector = (DatasetVector) datasource.getDatasets().get("World"); // 将字段 Pop_1994 中大于一百万的数值统一更新为“1000000” datasetVector.updateField("Pop_1994", "1000000", "Pop_1994 >= 1000000"); // 关闭数据集 datasetVector.close(); }
public boolean updateField(int fieldIndex, java.lang.String expression, java.lang.String attributeFilter)
fieldIndex
- 需要更新的字段序号。expression
- 指定的表达式。attributeFilter
- 要更新记录的查询条件,如果 attributeFilter 为空字符串,则更新表中所有的记录。
public Rectangle2D computeBounds()
public boolean dropFieldIndex(java.lang.String indexName)
indexName
- 索引名。
public boolean dropSpatialIndex()
buildSpatialIndex(SpatialIndexType)
DatasetVector.buildSpatialIndex()
方法的示例。public SpatialIndexType getSpatialIndexType()
buildSpatialIndex(SpatialIndexType)
DatasetVector.buildSpatialIndex()
方法的示例。public boolean isSpatialIndexDirty()
注意:
buildSpatialIndex(SpatialIndexType)
DatasetVector.buildSpatialIndex()
方法的示例。public boolean isSpatialIndexTypeSupported(SpatialIndexType type)
type
- 指定的空间索引的类型。
buildSpatialIndex(SpatialIndexType)
DatasetVector.buildSpatialIndex()
方法的示例。public boolean reBuildSpatialIndex()
public java.util.Map<java.lang.Integer,Feature> getAllFeatures()
Map 的第一个参数代表几何对象的 ID 号(即 SmID 字段的值),第二个参数是特征要素(Feature
})的引用。
Recordset.getAllFeatures()
方法的示例。public boolean updateFields(DatasetVector sourceDataset, SpatialRelationType spatialRelationType, java.lang.String[] sourceFields, java.lang.String[] targetFields, AttributeStatisticsType attributeStatisticsType, boolean isBorderInside, java.lang.String errorName, boolean isShowProgress)
注意:
sourceDataset
- 指定的提供属性的数据集。spatialRelationType
- 指定的空间关系。sourceFields
- 指定的提供属性的数据集中用于更新的字段集合。targetFields
- 指定的被更新的字段集合。attributeStatisticsType
- 指定的属性字段的取值方式。isBorderInside
- 指定边界处理方式,即位于面边线上的点是否被面包含,或线只有端点与面相交时是否与面相交。errorName
- 指定的记录满足空间关系的提供属性的数据集中对象个数的字段。该字段必须为整型。isShowProgress
- 指定是否显示进度条。
public boolean updateFields(Recordset sourceRecordset, SpatialRelationType spatialRelationType, java.lang.String[] sourceFields, java.lang.String[] targetFields, AttributeStatisticsType attributeStatisticsType, boolean isBorderInside, java.lang.String errorName, boolean isShowProgress)
有关以下三个注意点请参见另一重载方法 DatasetVector.updateFields
的介绍。
sourceRecordset
- 指定的提供属性的记录集。spatialRelationType
- 指定的空间关系。sourceFields
- 指定的提供属性的记录集中用于更新的字段集合。targetFields
- 指定的被更新的字段集合。attributeStatisticsType
- 指定的属性字段的取值方式。isBorderInside
- 指定边界处理方式,即位于面边线上的点是否被面包含,或线只有端点与面相交时是否与面相交。errorName
- 指定的记录满足空间关系的提供属性的记录集中对象个数的字段。该字段必须为整型。isShowProgress
- 指定是否显示进度条。
public int[] getIDsByGeoRelation(DatasetVector sourceataset, SpatialRelationType spatialRelationType, boolean isBorderInside, boolean isShowProgress)
关于该方法返回的整型数组各元素的含义,请结合下图来理解。
在下图中,有两个数据集,当前数据集 T 和相关数据集 S,数据集 T 包含 T1 和 T2 两个对象,数据集 S 包含 S1 和 S2 两个对象,调用 getIDsByGeoRelation 方法来获取数据集 S 中与数据集 T 中的对象满足相关关系的对象的 ID,其返回值为[IDT1,1,IDS1,IDT2,2,IDS1,IDS2]。
故该方法返回的数组其结构可归纳为:[当前数据集中第一个对象的 SMID,相关数据集中与之满足空间关系的对象个数,相关数据集中与之满足空间关系的第一个对象的 SMID,第二个,...,当前数据集中第二个对象的 SMID,...,依此类推]。
注意,假设数据集 T 中的第 n 个对象,在数据集 S 中没有与之满足空间关系的对象,则数组中只记录该对象的 ID 和满足空间关系的对象数(即 0),即[...,IDTn,0,IDT(n+1),...]。
sourceataset
- 指定的与当前数据集相关的数据集。spatialRelationType
- 指定的空间关系。isBorderInside
- 指定边界处理方式,即位于面边线上的点是否被面包含,或线只有端点与面相交时是否与面相交。isShowProgress
- 指定是否显示进度条。
public int[] getIDsByGeoRelation(Recordset sourceRecordset, SpatialRelationType spatialRelationType, boolean isBorderInside, boolean isShowProgress)
该方法返回的数组其结构可归纳为:[当前数据集中第一个对象的 SMID,相关记录集中与之满足空间关系的对象个数,相关记录集中与之满足空间关系的第一个对象的 SMID,第二个,...,当前数据集中第二个对象的 SMID,...,依此类推]。
更多介绍,请参阅另一重载方法 DatasetVector.getIDsByGeoRelation
。
sourceRecordset
- 指定的与当前数据集相关的记录集。spatialRelationType
- 指定的空间关系。isBorderInside
- 指定边界处理方式,即位于面边线上的点是否被面包含,或线只有端点与面相交时是否与面相交。isShowProgress
- 指定是否显示进度条。
public int[] getIDsByGeoRelation(Geometry[] sourceGeometries, SpatialRelationType spatialRelationType, boolean isBorderInside, boolean isShowProgress)
该方法返回的数组其结构可归纳为:[当前数据集中第一个对象的 SMID,相关几何对象数组中满足空间关系的对象个数,相关几何对象数组中满足空间关系的第一个对象的 ID,第二个,...,当前数据集中第二个对象的 SMID,...,依此类推]。
需要注意,相关几何对象数组中的对象必须具有不重复的 ID,该 ID 可通过 Geometry
的 getID
方法返回,以及通过 setID
方法设置。如果相关的几何对象数组中的对象来自于记录集,并且没有手动修改对象的 ID,那么返回的是对象的 SMID。如果对象没有明确的来源,或者 ID 有重复,必须为它们重新设置不同的 ID。
更多介绍,请参阅另一重载方法 DatasetVector.getIDsByGeoRelation
。
sourceGeometries
- 指定的与当前数据集相关的几何对象数组。spatialRelationType
- 指定的空间关系。isBorderInside
- 指定边界处理方式,即位于面边线上的点是否被面包含,或线只有端点与面相交时是否与面相交。isShowProgress
- 指定是否显示进度条。设置为 true,则显示进度条,否则不显示。
public boolean resample(ResampleInformation resampleInfo, boolean isShowProgress, boolean isSaveSmallGeometry)
矢量数据重采样是按照一定规则剔除一些节点,以达到对数据进行简化的目的(如下图所示),其结果可能由于使用不同的重采样方法而不同。SuperMap 提供了两种重采样方法,请参见枚举类型 ResampleType
的介绍。
该方法可以对线数据集、面数据集和网络数据集进行重采样。对面数据集重采样时,实质是对面对象的边界进行重采样。对于多个面对象的公共边界,如果进行了拓扑预处理(可通过 setTopologyPreprocess
方法来设置)只对其中一个多边形的该公共边界重采样一次,其他多边形的该公共边界会依据该多边形重采样的结果进行调整使之贴合,因此不会出现缝隙。
注意:重采样容限过大时,可能影响数据正确性,如出现两多边形的公共边界处出现相交的情况。
resampleInfo
- 指定的重采样信息设置。isShowProgress
- 指定是否显示进度条。true 表示显示进度条,false 表示不显示。isSaveSmallGeometry
- 指定是否保留小对象。小对象是指面积为0的对象,重采样过程有可能产生小对象。true 表示保留小对象,false 表示不保留。
public boolean smooth(int smoothness, boolean isShowProgress)
当折线或多边形的边界的线段过多时,就可能影响对原始特征的描述,不利用进一步的处理或分析,或显示和打印效果不够理想,因此需要对数据简化。简化的方法一般有重采样(resample
)和光滑。光滑是通过增加节点的方式使用曲线或直线段来代替原始折线的方法。
需要注意,对折线进行光滑后,其长度通常会变短,折线上线段的方向也会发生明显改变,但两个端点的相对位置不会变化;面对象经过光滑后,其面积通常会变小。
该方法采用 B 样条法对矢量数据集进行光滑。有关 B 样条法的介绍可参见 SmoothMethod
类。光滑系数(方法中对应 smoothness 参数)影响着光滑的程度,光滑系数越大,结果数据越光滑。光滑系数的建议取值范围为[2,10]。该方法支持对线数据集、面数据集和网络数据集进行光滑。下面两幅图为光滑系数分别为2、5和8时对线和面光滑的效果。
对线数据集设置不同光滑系数的光滑效果:
对面数据集设置不同光滑系数的光滑效果:
注意:该方法只支持对线数据集、面数据集和网络数据集进行光滑,设置为其他类型的矢量数据集会抛出异常。
smoothness
- 指定的光滑系数。取大于等于 2 的值有效,该值越大,线对象或面对象边界的节点数越多,也就越光滑。建议取值范围为[2,10]。isShowProgress
- 指定是否显示进度条。true 表示显示进度条,false 表示不显示。
public boolean appendFields(DatasetVector sourceDataset, java.lang.String sourceLinkFieldName, java.lang.String targetLinkFieldName, java.lang.String[] sourceFields, java.lang.String[] targetFields)
sourceDataset
- 源数据集。sourceLinkFieldName
- 源数据集中的与目标数据集的关联字段。targetLinkFieldName
- 目标数据集中的与源数据集的关联字段。sourceFields
- 源数据集中被追加到目标数据集的字段名集合。targetFields
- 追加字段在目标数据集中相对应的字段名集合。
注意
appendFields(DatasetVector, String, String, String[], Boolean)
,可以不必指定目标字段名集合;appendFields(DatasetVector, String, String, String[], Boolean)
方法的示例。public boolean appendFields(DatasetVector sourceDataset, java.lang.String sourceLinkFieldName, java.lang.String targetLinkFieldName, java.lang.String[] sourceFields)
sourceDataset
- 源数据集。sourceLinkFieldName
- 源数据集中的与目标数据集的关联字段。targetLinkFieldName
- 目标数据集中的与源数据集的关联字段。sourceFields
- 源数据集中被追加到目标数据集的字段名集合。。
注意
appendFields(DatasetVector, String, String, String[])
,可以不必指定目标字段名集合;public void appendFieldsTest() { // 前提条件:已打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象,数据源中包含矢量数据集"World"和“Capital”。 // 获取矢量数据集 DatasetVector dataset_world = (DatasetVector) datasource.getDatasets().get("World"); DatasetVector dataset = (DatasetVector) datasource.getDatasets().get("Capital"); // 定义关联字段 String targetLinkFieldName = "Capital"; String sourceLinkFieldName = "Capital"; // 定义源数据集中被追加到目标数据集的字段名集合 String[] sourceFields = new String[] { "SMID", "SMAREA", "SMPERIMETER", "Country"}; //向目标数据集追加字段 dataset.appendFields(dataset_world, sourceLinkFieldName, targetLinkFieldName, sourceFields); }
public java.util.Map<java.lang.String,java.lang.String> getFieldIndexes()
public boolean truncate()
public java.lang.String getFieldNameBySign(FieldSign value)
value
- 字段标识。
public DatasetVector[] getChildDatasets()
public boolean addCollectionDataset(DatasetVector dtv)
dtv
- 子矢量数据集。
public boolean DeleteDatasetFromCollection(DatasourceConnectionInfo info, java.lang.String datasetName)
info
- datasetName
-
public int getCollectionDatasetCount()
public java.util.ArrayList<CollectionDatasetInfo> getCollectionDatasetInfos()
public DatasetType GetSubCollectionDatasetType()
public double getMaxZ()
public double getMinZ()
public boolean computeAreaLength()
public boolean addRelationDataset(RelationDatasetInfo rdInfo)
rdInfo
-
public boolean deleteRelationDataset(RelationDatasetInfo rdInfo)
rdInfo
-
public java.util.ArrayList<RelationDatasetInfo> getRelationDatasets()
public DatasetIDType getDatasetIDType()
public boolean createGridCodeFiled()
public boolean isCreateGridCodeFiled()
public boolean dropGridCodeFiled()
public boolean registerVersion()
public boolean unRegisterVersion()
public boolean buildVectorPyramid(int[] levels, double[] tolerances, boolean[] preserveCollapseds, java.lang.String[] filters, java.lang.String geometryName, java.lang.String[] fieldnames)
levels
- 金字塔层级数组,可设置多个层级tolerances
- 分辨率,用户可设置金字塔分辨率,默认为金字塔层级对应的分辨率preserveCollapseds
- 是否保留最小对象,保留设置为true,不保留设置为falsefilters
- 过滤条件geometryName
- 用于创建矢量金字塔的几何字段名称fieldnames
- 矢量金字塔中保留的属性字段名称
public boolean dropVectorPyramid(java.lang.String geometryName)
geometryName
-
public boolean dropVectorPyramid()
public boolean hasPyramid(java.lang.String geometryName)
public boolean hasPyramid()
public boolean copyFieldsToPyramid(java.lang.String[] fields)
fields
- 字段信息
public boolean isSQLQuery()
public void setIDFieldName(java.lang.String strUserID)
strUserID
- 自定义唯一ID的字段名。public void setGeoFieldName(java.lang.String strGeoName)
strGeoName
- geometry类型字段名 。public java.lang.String getIDFieldName()
public java.lang.String[] getGeoFieldNames()
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |