com.supermap.data.topology

类 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 - 弧段求交的过滤线表达式。
      • setFilterMode

        public void setFilterMode(ArcAndVertexFilterMode value)
        设置弧段求交的过滤模式。

        关于弧段求交及过滤模式的介绍,请参见 setLinesIntersected 方法。

        参数:
        value - 弧段求交的过滤模式。

Copyright © 2021–2024 SuperMap. All rights reserved.