类 TopologyProcessingOptions
- java.lang.Object
-
- com.supermap.data.topology.TopologyProcessingOptions
-
public class TopologyProcessingOptions extends Object
拓扑处理选项类。该类提供了关于拓扑处理的设置信息。注意:
如果未通过
setVertexTolerance、setOvershootsTolerance和setUndershootsTolerance方法设置节点容限、短悬线容限和长悬线容限,或设置为0,系统将使用数据集的容限(getTolerance)中相应的容限值进行处理。
-
-
构造器概要
构造器 构造器和说明 TopologyProcessingOptions()构造一个新的TopologyProcessingOptions对象。TopologyProcessingOptions(TopologyProcessingOptions topologyProcessingOptions)根据给定的TopologyProcessingOptions对象构造一个与其完全相同的新对象。
-
方法概要
所有方法 实例方法 具体方法 限定符和类型 方法和说明 booleanareAdjacentEndpointsMerged()返回是否进行邻近端点合并。booleanareDuplicatedLinesCleaned()返回是否去除重复线。booleanareLinesIntersected()返回是否进行弧段求交。booleanareOvershootsCleaned()返回是否去除短悬线。booleanarePseudoNodesCleaned()返回是否去除假结点。booleanareRedundantVerticesCleaned()返回是否去除冗余点。booleanareUndershootsExtended()返回是否进行长悬线延伸。StringgetArcFilterString()返回弧段求交的过滤线表达式。ArcAndVertexFilterModegetFilterMode()返回弧段求交的过滤模式。doublegetOvershootsTolerance()返回短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。doublegetUndershootsTolerance()返回长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。RecordsetgetVertexFilterRecordset()返回弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。doublegetVertexTolerance()返回节点容限。voidsetAdjacentEndpointsMerged(boolean value)设置是否进行邻近端点合并。voidsetArcFilterString(String value)设置弧段求交的过滤线表达式。voidsetDuplicatedLinesCleaned(boolean value)设置是否去除重复线。voidsetFilterMode(ArcAndVertexFilterMode value)设置弧段求交的过滤模式。voidsetLinesIntersected(boolean value)设置是否进行弧段求交。voidsetOvershootsCleaned(boolean value)设置是否去除短悬线。voidsetOvershootsTolerance(double value)设置短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。voidsetPseudoNodesCleaned(boolean value)设置是否去除假结点。voidsetRedundantVerticesCleaned(boolean value)设置是否去除冗余点。voidsetUndershootsExtended(boolean value)设置是否进行长悬线延伸。voidsetUndershootsTolerance(double value)设置长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。voidsetVertexFilterRecordset(Recordset value)设置弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。voidsetVertexTolerance(double value)设置节点容限。
-
-
-
构造器详细资料
-
TopologyProcessingOptions
public TopologyProcessingOptions()
构造一个新的TopologyProcessingOptions对象。
-
TopologyProcessingOptions
public TopologyProcessingOptions(TopologyProcessingOptions topologyProcessingOptions)
根据给定的TopologyProcessingOptions对象构造一个与其完全相同的新对象。- 参数:
topologyProcessingOptions- 指定的 TopologyProcessingOptions 对象。
-
-
方法详细资料
-
getOvershootsTolerance
public double getOvershootsTolerance()
返回短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。单位与进行拓扑处理的数据集单位相同。“悬线”的定义:如果一个线对象的端点没有与其它任意一个线对象的端点相连,则这个端点称之为悬点。具有悬点的线对象称之为悬线。
- 返回:
- 短悬线容限。
- 默认值:
- 默认值为 0.0。
-
setOvershootsTolerance
public void setOvershootsTolerance(double value)
设置短悬线容限,该容限用于在去除短悬线时判断悬线是否是短悬线。单位与进行拓扑处理的数据集单位相同。“悬线”的定义:如果一个线对象的端点没有与其它任意一个线对象的端点相连,则这个端点称之为悬点。具有悬点的线对象称之为悬线。
注意:该容限的有效范围为大于等于0,设置为小于0时会抛出异常。如果用户不设置,或将该值设置为0,系统会使用数据集的容限(
getTolerance)中的短悬线容限来处理。- 参数:
value- 短悬线容限。
-
getUndershootsTolerance
public double getUndershootsTolerance()
返回长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同。- 返回:
- 长悬线容限。
- 默认值:
- 默认值为 0.0。
-
setUndershootsTolerance
public void setUndershootsTolerance(double value)
设置长悬线容限,该容限用于在长悬线延伸时判断悬线是否延伸。单位与进行拓扑处理的数据集单位相同。注意:该容限的有效范围为大于等于0,设置为小于0时会抛出异常。如果用户不设置,或将该值设置为0,系统会使用数据集的容限(
getTolerance)中的长悬线容限来处理。- 参数:
value- 长悬线容限。
-
arePseudoNodesCleaned
public boolean arePseudoNodesCleaned()
返回是否去除假结点。- 返回:
- 一个布尔值指定是否去除假结点,去除返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setPseudoNodesCleaned
public void setPseudoNodesCleaned(boolean value)
设置是否去除假结点。结点又称为弧段连接点,至少连接三条弧段的才可称为一个结点。如果弧段连接点只连接了一条弧段(岛屿的情况)或连接了两条弧段(即它是两条弧段的公共端点),则该结点被称为假结点。如下图所示,结点2只连接了两条弧段,为假结点,去除假结点后的结果如下图(右)所示。

值得注意的是,并不是所有的假结点都需要被去除,比如岛屿或为了标识在不同部分具有不同属性的一个线对象(一条公路一段是柏油路面,另一段是石灰路面,它在构建拓扑关系时,需要将假结点保留下来)。
- 参数:
value- 一个布尔值指定是否去除假结点,true 表示去除,false 表示不去除。
-
areOvershootsCleaned
public boolean areOvershootsCleaned()
返回是否去除短悬线。- 返回:
- 一个布尔值指定是否去除短悬线,去除返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setOvershootsCleaned
public void setOvershootsCleaned(boolean value)
设置是否去除短悬线。去除短悬线指如果一条悬线的长度小于悬线容限,则在进行去除短悬线操作时就会把这条悬线删除。通过
setOvershootsTolerance方法可以指定短悬线容限,如不指定则使用数据集的短悬线容限。
注:
悬线:如果一个线对象的端点没有与其它任意一个线对象的端点相连,则这个端点称之为悬点。具有悬点的线对象称之为悬线。
- 参数:
value- 一个布尔值指定是否去除短悬线,true 表示去除,false 表示不去除。
-
areRedundantVerticesCleaned
public boolean areRedundantVerticesCleaned()
返回是否去除冗余点。- 返回:
- 一个布尔值指定是否去除冗余点,去除返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setRedundantVerticesCleaned
public void setRedundantVerticesCleaned(boolean value)
设置是否去除冗余点。任意弧段上两节点之间的距离小于节点容限时,其中一个即被认为是一个冗余点,在进行拓扑处理时可以去除,下图为去除冗余点前后。

用于判断冗余点的节点容限,可通过
setVertexTolerance方法设置,如果不设置或设置为0,将使用数据集的容限(getTolerance)中的节点容限。冗余点与假结点的异同
- 去除冗余点和去除假结点(
setPseudoNodesCleaned)都是去除多余的点。 - 冗余点一定是多余的点,必须去除,而假结点在有意义时需要保留。
- 冗余点一般是矢量化过程中在画线的时候连击所致,该点连接的是连续且完整的一条弧段,而假结点一般是临近端点合并或捕捉画线时产生的,该点连接的是两条弧段。
- 冗余点是节点,假结点是结点。
- 参数:
value- 一个布尔值指定是否去除冗余点,true 表示去除,false 表示不去除。
- 去除冗余点和去除假结点(
-
areUndershootsExtended
public boolean areUndershootsExtended()
返回是否进行长悬线延伸。- 返回:
- 一个布尔值指定是否进行长悬线延伸,去除返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setUndershootsExtended
public void setUndershootsExtended(boolean value)
设置是否进行长悬线延伸。如果一条悬线按其行进方向延伸了指定的长度(悬线容限)之后与某弧段有交点,则拓扑处理后会将该悬线自动延伸到某弧段上,称为长悬线延伸。通过
setUndershootsTolerance方法可以指定长悬线容限,如不指定则使用数据集的长悬线容限。
关于悬线的定义,请参见
setOvershootsCleaned方法的介绍。- 参数:
value- 一个布尔值指定是否进行长悬线延伸,true 表示延伸,false 表示不延伸。
-
areDuplicatedLinesCleaned
public boolean areDuplicatedLinesCleaned()
返回是否去除重复线。若处理对象是三维线数据集,则去掉重复线时具有随机性,即保留下来的三维线的z值可能来自任何一条重复线。
- 返回:
- 一个布尔值指定是否去除重复线,去除返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setDuplicatedLinesCleaned
public void setDuplicatedLinesCleaned(boolean value)
设置是否去除重复线。重复线:两条弧段若其所有节点两两重合,则可认为是重复线。重复线的判断不考虑方向。
去除重复线的目的是为避免建立拓扑多边形时产生面积为零的多边形对象,因此,重复的线对象只应保留其中一个,多余的应删除。
通常,出现重复线多是由于弧段求交造成的。如下图中弧段求交之后,将产生8条弧段,分别为 AB、BC、CD、DE、FB、BC、CD、DE,其中弧段 BC 和 CD 都是重复线,通过拓扑处理去除重复线之后,结果只有5条弧段 AB、BC、CD、DE、FB。如果用户选择弧段求交,建议同时选择去除重复线(实际是先进行去除重复线)。

- 参数:
value- 一个布尔值指定是否去除重复线,true 表示去除,false 表示不去除。
-
areLinesIntersected
public boolean areLinesIntersected()
返回是否进行弧段求交。默认为否。- 返回:
- 一个布尔值指定是否进行弧段求交,进行弧段求交返回 true,否则返回 false。
- 默认值:
- 默认值为 true。
-
setLinesIntersected
public void setLinesIntersected(boolean value)
设置是否进行弧段求交。线数据建立拓扑关系之前,首先要进行弧段求交计算,根据交点分解成若干线对象,如下图所示。一般而言,在二维坐标系统中凡是与其他线有交点的线对象都需要从交点处打断,如十字路口。且此方法是后续错误处理方法的基础。

在实际应用中,相交线段完全打断的处理方式在很多时候并不能很好地满足研究需求。例如,一条高架铁路横跨一条公路,在二维坐标上来看是两个相交的线对象,但事实上并没有相交,如果打断将可能影响进一步的分析。在交通领域还有很多类似的实际场景,如河流水系与交通线路的相交,城市中错综复杂的立交桥等,对于某些相交点是否打断,需要根据实际应用来灵活处理,而不能因为在二维平面上相交就一律打断。
如下图(左)所示,线对象 B 与 A、C 分别在1、2处相交,已知线对象 B 在位置1处与 A 是空间不相交的,不能打断。

这种情况可以通过设置过滤线表达式(
setArcFilterString)和过滤点记录集(setVertexFilterRecordset)来确定哪些线对象以及哪些相交位置处不打断。- 过滤线表达式用于查询出不需要打断的线对象;
- 过滤点记录集中的点对象所在位置处不打断。
这两个参数单独或组合使用构成了弧段求交的四种过滤模式,还有一种是不进行过滤。过滤模式通过
setFilterMode方法设置。对于上面的例子,使用不同的过滤模式,弧段求交的结果也不相同。关于过滤模式的详细介绍请参阅ArcAndVertexFilterMode类。注意:进行弧段求交处理时,可通过
setVertexTolerance方法设置节点容限(如不设置,将使用数据集的节点容限),用于判断过滤点是否有效。若过滤点到线对象的距离在设置的容限范围内,则线对象在过滤点到其的垂足位置上不被打断。- 参数:
value- 一个布尔值指定是否进行弧段求交,true 表示进行弧段求交,false 表示不求交。
-
areAdjacentEndpointsMerged
public boolean areAdjacentEndpointsMerged()
返回是否进行邻近端点合并。- 返回:
- 一个布尔值指定是否进行邻近端点合并,合并返回 true,否则返回 false。
- 默认值:
- 默认值为 false。
-
setAdjacentEndpointsMerged
public void setAdjacentEndpointsMerged(boolean value)
设置是否进行邻近端点合并。如果多条弧段端点的距离小于节点容限,那么这些点就会被合并成为一个结点,该结点位置是原有点的几何平均(即 X、Y 分别为所有原有点 X、Y 的平均值)。

用于判断邻近端点的节点容限,可通过
setVertexTolerance设置,如果不设置或设置为0,将使用数据集的容限(getTolerance)中的节点容限。需要注意的是,如果有两个邻近端点,那么合并的结果就会是一个假结点,还需要进行去除假结点的操作。
- 参数:
value- 一个布尔值指定是否进行邻近端点合并,true 表示合并,false 表示不合并。
-
getVertexTolerance
public double getVertexTolerance()
返回节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同。- 返回:
- 节点容限。
- 默认值:
- 默认值为 0.0。
-
setVertexTolerance
public void setVertexTolerance(double value)
设置节点容限。该容限用于邻近端点合并、弧段求交、去除假结点和去除冗余点。单位与进行拓扑处理的数据集单位相同。 注意:该容限的有效范围为大于等于0,设置为小于0时会抛出异常。如果用户不设置,或将该值设置为0,系统会使用数据集的容限(getTolerance)中的节点容限来处理。- 参数:
value- 节点容限。
-
getVertexFilterRecordset
public Recordset getVertexFilterRecordset()
返回弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。- 返回:
- 弧段求交的过滤点记录集。
-
setVertexFilterRecordset
public void setVertexFilterRecordset(Recordset value)
设置弧段求交的过滤点记录集,即此记录集中的点位置线段不进行求交打断。如果过滤点在线对象上或到线对象的距离在容限范围内,在过滤点到线对象的垂足位置上线对象不被打断。详细介绍请参见
setLinesIntersected方法。注意:过滤点记录集是否有效,与
setFilterMode方法设置的弧段求交过滤模式有关。可参见ArcAndVertexFilterMode类。- 参数:
value- 弧段求交的过滤点记录集。
-
getArcFilterString
public String getArcFilterString()
返回弧段求交的过滤线表达式。- 返回:
- 弧段求交的过滤线表达式。
-
setArcFilterString
public void setArcFilterString(String value)
设置弧段求交的过滤线表达式。在进行弧段求交时,通过该属性可以指定一个字段表达式,符合该表达式的线对象将不被打断。详细介绍请参见
setLinesIntersected方法。注意:该表达式是否有效,与
setFilterMode方法设置的弧段求交过滤模式有关。可参见ArcAndVertexFilterMode类。- 参数:
value- 弧段求交的过滤线表达式。
-
getFilterMode
public ArcAndVertexFilterMode getFilterMode()
返回弧段求交的过滤模式。- 返回:
- 弧段求交的过滤模式。
- 默认值:
- 默认值为
ArcAndVertexFilterMode.NONE,即在所有相交处打断。
-
setFilterMode
public void setFilterMode(ArcAndVertexFilterMode value)
设置弧段求交的过滤模式。关于弧段求交及过滤模式的介绍,请参见
setLinesIntersected方法。- 参数:
value- 弧段求交的过滤模式。
-
-
Copyright © 2021–2025 SuperMap. All rights reserved.