com.supermap.data.topology
类 TopologyValidator

java.lang.Object
  继承者 com.supermap.data.topology.TopologyValidator

public class TopologyValidator
extends java.lang.Object

拓扑检查类,用于进行拓扑预处理、拓扑检查和拓扑错误自动修复。

当处理对象是三维数据集时(非三维模型),计算过程中忽略三维线段的z值,只使用x、y数据进行计算。


方法摘要
static void addSteppedListener(SteppedListener l)
          添加一个进度条事件(SteppedEvent)的监听器。
static DatasetVector checkGeometry(DatasetVector sourceDataset, Datasource targetDatasource, java.lang.String targetDatasetName, SteppedListener... listeners)
          几何检查。
static boolean fixTopoError(DatasetVector sourceDataset, DatasetVector validatingDataset, DatasetVector topoErrorDataset)
          进行拓扑错误自动修复。
static boolean integrate(DatasetVector[] datasetVectors, int[] precisionOrders, double tolerance, Unit unit, SteppedListener... listeners)
          多数据集整合, 将容限范围内的节点捕捉在一起。
static boolean integrate(DatasetVector sourceDatasetVector, double tolerance, Unit unit, SteppedListener... listeners)
          整合, 将容限范围内的节点捕捉在一起。
static boolean preprocess(DatasetTopology datasetTopology)
          对给定的拓扑数据集进行拓扑预处理。
static boolean preprocess(DatasetVector[] datasetVectors, int[] precisionOrders, double tolerance)
          根据给定的矢量数据集集合和精度等级数组进行拓扑预处理。
static boolean preprocess(DatasetVector[] datasetVectors, int[] precisionOrders, TopologyPreprocessOptions options, double tolerance)
          根据给定的参数进行拓扑预处理。
static boolean preprocess(DatasetVector datasetVector, Geometry geometryTarget, TopologyPreprocessOptions options, double tolerance, boolean bStd)
          根据给定的参数进行拓扑预处理。
static boolean preprocess(Geometry geometrySource, Geometry geometryTarget, TopologyPreprocessOptions options, double tolerance, boolean bStd)
          根据给定的参数进行拓扑预处理。
static boolean preprocess(Recordset[] recordsets, int[] precisionOrders, TopologyPreprocessOptions options, double tolerance)
          根据给定的参数进行拓扑预处理。
static boolean preprocess(Recordset recordset, Geometry geometryTarget, TopologyPreprocessOptions options, double tolerance, boolean bStd)
          根据给定的参数进行拓扑预处理。
static boolean preprocess(TopologyDatasetRelationItem[] items, double tolerance)
          根据给定的拓扑预处理项对象数组进行拓扑预处理。
static boolean preprocessAdjustVertex(DatasetVector[] datasetVectors, double tolerance)
          对给定的矢量数据集集合进行节点调整预处理。
static boolean preprocessVertexSnap(DatasetVector[] datasetVectors, VertexSnapType type, double closeNodeTolerance, double tolerance)
          对给定的矢量数据集集合根据给定的方式进行节点捕捉预处理。
static void removeSteppedListener(SteppedListener l)
          移除一个进度条事件(SteppedEvent)的监听器。
static boolean repairGeometry(DatasetVector sourceDataset, SteppedListener... listeners)
          几何修复。
static boolean validate(DatasetTopology datasetTopology, GeoRegion validateRegion)
          根据给定的拓扑数据集进行拓扑错误检查。
static DatasetVector validate(DatasetVector sourceDataset, DatasetVector validatingDataset, TopologyRule rule, double tolerance, GeoRegion validateRegion, Datasource outputDatasource, java.lang.String outputDatasetName)
          对数据集进行拓扑错误检查,返回含有拓扑错误的结果数据集。
static DatasetVector validate(Recordset sourceRecordset, Recordset validatingRecordset, TopologyRule rule, double tolerance, GeoRegion validateRegion, Datasource outputDatasource, java.lang.String outputDatasetName)
          对记录集进行拓扑错误检查,返回含有拓扑错误的结果数据集。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

preprocess

public static boolean preprocess(DatasetTopology datasetTopology)
对给定的拓扑数据集进行拓扑预处理。

参数:
datasetTopology - 被预处理的拓扑数据集。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(TopologyDatasetRelationItem[] items,
                                 double tolerance)
根据给定的拓扑预处理项对象数组进行拓扑预处理。

参数:
items - 指定的拓扑预处理项对象数组。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(DatasetVector[] datasetVectors,
                                 int[] precisionOrders,
                                 double tolerance)
根据给定的矢量数据集集合和精度等级数组进行拓扑预处理。

参数:
datasetVectors - 指定的数据集集合。
precisionOrders - 指定的精度等级的数组。精度等级的值越小,代表对应数据集的精度越高,数据质量越好。在进行顶点捕捉时,低精度的数据集中的点将被捕捉到高精度数据集中的点的位置上。精度等级数组必须与要进行拓扑预处理的数据集集合元素数量相同并一一对应。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(DatasetVector[] datasetVectors,
                                 int[] precisionOrders,
                                 TopologyPreprocessOptions options,
                                 double tolerance)
根据给定的参数进行拓扑预处理。支持三维矢量数据集。

参数:
datasetVectors - 指定的待进行预处理的数据集集合。
precisionOrders - 指定的精度等级数组。精度等级的值越小,代表对应数据集的精度越高,数据质量越好。在进行顶点捕捉时,低精度的数据集中的点将被捕捉到高精度数据集中的点的位置上。精度等级数组必须与要进行拓扑预处理的数据集集合元素数量相同并一一对应。
options - 指定的拓扑预处理选项对象。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(DatasetVector datasetVector,
                                 Geometry geometryTarget,
                                 TopologyPreprocessOptions options,
                                 double tolerance,
                                 boolean bStd)
根据给定的参数进行拓扑预处理。

参数:
datasetVector - 指定的待进行预处理的数据集。
geometryTarget - 指定的待进行预处理的几何对象。
options - 指定的拓扑预处理选项对象。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的记录集单位相同。取值范围为大于等于0,小于0将抛出异常。
bStd - 是否设置标准参考,设置为true时,标准数据集datasetVector不进行预处理,指定几何对象geometryTarget进行预处理。否则都进行预处理。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(Recordset recordset,
                                 Geometry geometryTarget,
                                 TopologyPreprocessOptions options,
                                 double tolerance,
                                 boolean bStd)
根据给定的参数进行拓扑预处理。

参数:
recordset - 指定的待进行预处理的记录集。
geometryTarget - 指定的待进行预处理的几何对象。
options - 指定的拓扑预处理选项对象。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的记录集单位相同。取值范围为大于等于0,小于0将抛出异常。
bStd - 是否设置标准参考,设置为true时,标准记录集recordset不进行预处理,指定几何对象geometryTarget进行预处理。否则都进行预处理。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(Geometry geometrySource,
                                 Geometry geometryTarget,
                                 TopologyPreprocessOptions options,
                                 double tolerance,
                                 boolean bStd)
根据给定的参数进行拓扑预处理。

参数:
geometrySource - 指定的待进行预处理的源几何对象。
geometryTarget - 指定的待进行预处理的目标几何对象。
options - 指定的拓扑预处理选项对象。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的记录集单位相同。取值范围为大于等于0,小于0将抛出异常。
bStd - 是否设置标准参考,设置为true时,标准源几何对象geometrySource不进行预处理,指定几何对象geometryTarget进行预处理。否则都进行预处理。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocess

public static boolean preprocess(Recordset[] recordsets,
                                 int[] precisionOrders,
                                 TopologyPreprocessOptions options,
                                 double tolerance)
根据给定的参数进行拓扑预处理。支持三维矢量数据集。

参数:
recordsets - 指定的待进行预处理的记录集集合。
precisionOrders - 指定的精度等级数组。精度等级的值越小,代表对应记录集的精度越高,数据质量越好。在进行顶点捕捉时,低精度的记录集中的点将被捕捉到高精度记录集中的点的位置上。精度等级数组必须与要进行拓扑预处理的记录集集合元素数量相同并一一对应。
options - 指定的拓扑预处理选项对象。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的记录集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocessAdjustVertex

public static boolean preprocessAdjustVertex(DatasetVector[] datasetVectors,
                                             double tolerance)
对给定的矢量数据集集合进行节点调整预处理。

参数:
datasetVectors - 指定的数据集集合。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

preprocessVertexSnap

public static boolean preprocessVertexSnap(DatasetVector[] datasetVectors,
                                           VertexSnapType type,
                                           double closeNodeTolerance,
                                           double tolerance)
对给定的矢量数据集集合根据给定的方式进行节点捕捉预处理。

参数:
datasetVectors - 指定的数据集集合。
type - 节点捕捉预处理模式。
closeNodeTolerance - 邻接节点合并的容限值。
tolerance - 指定的处理时需要的容限控制。单位与进行拓扑预处理的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

validate

public static boolean validate(DatasetTopology datasetTopology,
                               GeoRegion validateRegion)
根据给定的拓扑数据集进行拓扑错误检查。

用户在调用该方法前,即对数据进行拓扑检查之前,需要对相应的数据进行拓扑预处理(即调用 preprocess(DatasetTopology) 方法),否则检查的结果错误。

参数:
datasetTopology - 指定的拓扑数据集。
validateRegion - 指定的被检查的区域,如果区域为 null,则对整个拓扑数据集(datasetTopology)的脏区进行检查,否则对 validateRegion 进行拓扑检查。脏区指的是未进行拓扑检查的区域,就已经进行了拓扑检查的区域,若用户在局部对数据进行了部分编辑时,则在此局部区域又将生成新的脏区。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

validate

public static DatasetVector validate(DatasetVector sourceDataset,
                                     DatasetVector validatingDataset,
                                     TopologyRule rule,
                                     double tolerance,
                                     GeoRegion validateRegion,
                                     Datasource outputDatasource,
                                     java.lang.String outputDatasetName)
对数据集进行拓扑错误检查,返回含有拓扑错误的结果数据集。

该方法支持对三维矢量数据集的处理,具体支持规则可见TopologyRule

该方法的 tolerance 参数用于指定使用 rule 参数指定的拓扑规则对数据集检查时涉及的容限。例如,使用“线内无打折”(TopologyRule.LINE_NO_SHARP_ANGLE)规则检查时,tolerance 参数设置的为尖角容限(一个角度值)。

在调用该方法对数据进行拓扑检查之前,建议先对相应的数据进行拓扑预处理(即调用 preprocess 方法),否则检查的结果可能不正确。

参数:
sourceDataset - 被检查的数据集。
validatingDataset - 用于检查的参考数据集。如果使用的拓扑规则不需要参考数据集,则设置为 null。
rule - 拓扑规则。
tolerance - 指定的拓扑错误检查时使用的容限。单位与进行拓扑错误检查的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
validateRegion - 被检查区域,如果区域为null,则默认对整个拓扑数据集(validatingDataset)进行检查,否则对 validateRegion 区域进行拓扑检查。
outputDatasource - 指定的输出拓扑错误结果数据集所在的数据源。
outputDatasetName - 指定的输出拓扑错误结果数据集的名称。
返回:
含有拓扑错误的结果数据集。以下是几种常见的返回数据集的字段说明。


validate

public static DatasetVector validate(Recordset sourceRecordset,
                                     Recordset validatingRecordset,
                                     TopologyRule rule,
                                     double tolerance,
                                     GeoRegion validateRegion,
                                     Datasource outputDatasource,
                                     java.lang.String outputDatasetName)
对记录集进行拓扑错误检查,返回含有拓扑错误的结果数据集。

该方法支持对三维矢量数据集的处理,具体支持规则可见TopologyRule

该方法的 tolerance 参数用于指定使用 rule 参数指定的拓扑规则对记录集检查时涉及的容限。例如,使用“线内无打折”(TopologyRule.LINE_NO_SHARP_ANGLE)规则检查时,tolerance 参数设置的为尖角容限(一个角度值)。

在调用该方法对数据进行拓扑检查之前,建议先对相应的数据进行拓扑预处理(即调用 preprocess 方法),否则检查的结果可能不正确。

参数:
sourceRecordset - 被检查的记录集。
validatingRecordset - 用于检查的参考记录集。如果使用的拓扑规则不需要参考记录集,则设置为 null。
rule - 拓扑规则。
tolerance - 指定的拓扑错误检查时使用的容限。单位与进行拓扑错误检查的数据集单位相同。取值范围为大于等于0,小于0将抛出异常。
validateRegion - 被检查区域,如果区域为null,则默认对整个拓扑数据集(validatingDataset)进行检查,否则对 validateRegion 区域进行拓扑检查。
outputDatasource - 指定的输出拓扑错误结果数据集所在的数据源。
outputDatasetName - 指定的输出拓扑错误结果数据集的名称。
返回:
含有拓扑错误的结果数据集。以下是几种常见的返回数据集的字段说明。


fixTopoError

public static boolean fixTopoError(DatasetVector sourceDataset,
                                   DatasetVector validatingDataset,
                                   DatasetVector topoErrorDataset)
进行拓扑错误自动修复。该方法在拓扑检查之后调用。

拓扑错误自动修复功能用于修复针对以下十个拓扑规则检查出的拓扑错误:

注意:请参考相关拓扑规则(TopologyRule)的详细介绍,以帮助正确理解如何进行修复。

参数:
sourceDataset - 指定的需要进行拓扑错误修复的数据集。
validatingDataset - 指定的参考数据集。该数据集为进行拓扑检查时的参考数据集。
topoErrorDataset - 指定的存储拓扑错误的数据集。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

checkGeometry

public static DatasetVector checkGeometry(DatasetVector sourceDataset,
                                          Datasource targetDatasource,
                                          java.lang.String targetDatasetName,
                                          SteppedListener... listeners)
几何检查。

检查数据集中要素的几何问题,并生成错误描述报告,以便识别并确定数据集中要素的几何问题。要修复这些问题,可以通过手动编辑修复,或者使用repairGeometry方法。

输出的报告(结果表)可记录发现的每个几何问题,如果未发现任何问题,则该表为空。结果表中包含以下字段:

problem字段包含的几何错误释义如下:

参数:
sourceDataset - 指定的需要进行几何检查的数据集。
targetDatasource - 指定的输出结果属性表所在的数据源。
targetDatasetName - 指定的输出结果属性表的名称。
listeners - 用于接收进度条事件的监听器。
返回:
几何检查错误结果报告(表)。

repairGeometry

public static boolean repairGeometry(DatasetVector sourceDataset,
                                     SteppedListener... listeners)
几何修复。

通过checkGeometry发现数据中存在几何问题后,用于修复相关错误。几何修复后将会在属性表里追加一列字段来返回如下的说明:正确的几何要素;几何修复失败,返回检查项的错误类型;几何修复成功。

修复情况如下:

参数:
sourceDataset - 指定的需要进行几何修复的数据集。
listeners - 用于接收进度条事件的监听器。
返回:
一个布尔值,如果成功返回 true,否则返回 false。

integrate

public static boolean integrate(DatasetVector sourceDatasetVector,
                                double tolerance,
                                Unit unit,
                                SteppedListener... listeners)
整合, 将容限范围内的节点捕捉在一起。

整合接口与拓扑预处理节点捕捉相同,会将捕捉在一起的节点修改为同样的二维坐标。详情请参阅拓扑预处理节点和节点捕捉 (TopologyPreprocessOptions.setVertexesSnapped())。数据集整合会进行数据多次迭代处理,相比拓扑预处理执行一次,结果更可靠。

节点容限较大会导致要素重叠或导致面和线对象被删除,还可能导致不被期望移动的节点发生移动。所以,容限值应该尽量小。

参数:
sourceDatasetVector - 指定的待整合的数据集。可以为点、线、面数据集。
tolerance - 指定的节点容限。
unit - 指定的节点容限单位。
返回:
整合成功返回true,否则为false。

integrate

public static boolean integrate(DatasetVector[] datasetVectors,
                                int[] precisionOrders,
                                double tolerance,
                                Unit unit,
                                SteppedListener... listeners)
多数据集整合, 将容限范围内的节点捕捉在一起。

整合接口与拓扑预处理节点捕捉相同,会将捕捉在一起的节点修改为同样的二维坐标。详情请参阅拓扑预处理节点和节点捕捉 (TopologyPreprocessOptions.setVertexesSnapped())。数据集整合会进行数据多次迭代处理,相比拓扑预处理执行一次,结果更可靠。

节点容限较大会导致要素重叠或导致面和线对象被删除,还可能导致不被期望移动的节点发生移动。所以,容限值应该尽量小。

参数:
datasetVectors - 指定的待进行整合的数据集集合。
precisionOrders - 指定的精度等级数组。精度等级的值越小,代表对应数据集的精度越高,数据质量越好。在进行顶点捕捉时,低精度的数据集中的点将被捕捉到高精度数据集中的点的位置上。精度等级数组必须与要进行拓扑预处理的数据集集合元素数量相同并一一对应。
tolerance - 指定的节点容限。
unit - 指定的节点容限单位。
listeners - 进度信息。
返回:
整合成功返回true,否则为false。

addSteppedListener

public static void addSteppedListener(SteppedListener l)
添加一个进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。

removeSteppedListener

public static void removeSteppedListener(SteppedListener l)
移除一个进度条事件(SteppedEvent)的监听器。

参数:
l - 一个用于接收进度条事件的监听器。