com.supermap.data.topology

类 TopologyProcessing



  • public class TopologyProcessing
    extends Object
    拓扑处理类。

    用于进行拓扑处理。

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

    • 方法详细资料

      • buildRegions

        public static DatasetVector buildRegions(DatasetVector sourceDataset,
                                                 Datasource outputDatasource,
                                                 String outputDatasetName,
                                                 SteppedListener... listeners)
        用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。
        参数:
        sourceDataset - 指定的用于进行多边形拓扑处理的源数据集,只能是线数据集或网络数据集,支持三维线数据集。
        outputDatasource - 指定的用于存储结果数据集的数据源。
        outputDatasetName - 指定的结果面数据集的名称。
        listeners - 用于接收进度条事件的监听器。
        返回:
        结果面数据集。
      • buildRegions

        public static DatasetVector buildRegions(DatasetVector sourceDataset,
                                                 Datasource outputDatasource,
                                                 String outputDatasetName,
                                                 TopologyProcessingOptions options,
                                                 SteppedListener... listeners)
        用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。
        参数:
        sourceDataset - 指定的用于进行多边形拓扑处理的源数据集,只能是线数据集或网络数据集。
        outputDatasource - 指定的用于存储结果数据集的数据源。
        outputDatasetName - 指定的结果面数据集的名称。
        options - 指定的拓扑处理选项。
        listeners - 用于接收进度条事件的监听器。
        返回:
        结果面数据集。
      • clean

        @Deprecated
        public static boolean clean(DatasetVector datasetVector,
                                                 TopologyProcessingOptions options)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 TopologyProcessing.clean(DatasetVector, TopologyProcessingOptions, SteppedListener...) 替换。
        根据拓扑处理选项对给定的数据集进行拓扑处理。支持三维矢量数据集。
        参数:
        datasetVector - 指定的拓扑处理的数据集。支持三维矢量数据集。
        options - 指定的拓扑处理选项。其中 options 的 AreLinesIntersected 弧段求交属性值可以为 false,即在做拓扑处理时, 可以先不进行弧段求交。
        返回:
        成功返回 true,失败返回 false。
      • clean

        public static boolean clean(DatasetVector datasetVector,
                                    TopologyProcessingOptions options,
                                    SteppedListener... listeners)
        根据拓扑处理选项对给定的数据集进行拓扑处理。支持三维矢量数据集。
        参数:
        datasetVector - 指定的拓扑处理的数据集。支持三维矢量数据集。
        options - 指定的拓扑处理选项。其中 options 的 AreLinesIntersected 弧段求交属性值可以为 false,即在做拓扑处理时, 可以先不进行弧段求交。
        listeners - 用于接收进度条事件的监听器。
        返回:
        成功返回 true,失败返回 false。
      • pickupLeftRightRegions

        @Deprecated
        public static boolean pickupLeftRightRegions(DatasetVector regionDataset,
                                                                  DatasetVector lineDataset,
                                                                  boolean preProcessed)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 TopologyProcessing.pickupLeftRightRegions(DatasetVector, DatasetVector, boolean, SteppedListener...) 替换。
        根据给定的面数据集和关联的线数据集,提取关联线数据集中线对象的左右多边形。

        该方法调用后,会在关联线数据集属性表里自动创建出名称为 “SmTopoLPolygon” 和 “SmTopoRPolygon” 的字段,这两个字段用于存储相应线对象的左多边形和右多边形的 ID。

        1. 如果线对象落在多边形内,则该线对象的左右多边形均赋为该多边形的ID;
        2. 如果线对象的一边无匹配的多边形,则该方向赋值为0,即 “SmTopoLPolygon” 或者 “SmTopoRPolygon” 字段值为 0;如果线对性两边都没有多边形,则左右多边形都赋为 0,即 “SmTopoLPolygon” 和 “SmTopoRPolygon” 字段值都为 0。

        注意:使用此方法时,要求一个线对象的左右两边分别至多有一个多边形,如果不是,则需要先打断,否则方法调用会产生错误结果;另外,使用此方法前请先对数据进行拓扑预处理,否则无法得到正确的结果。

        参数:
        regionDataset - 指定的图斑(面)数据集。
        lineDataset - 指定的关联的线数据集。
        preProcessed - 指定是否进行拓扑预处理。
        返回:
        成功返回 true,失败返回 false。
      • pickupLeftRightRegions

        public static boolean pickupLeftRightRegions(DatasetVector regionDataset,
                                                     DatasetVector lineDataset,
                                                     boolean preProcessed,
                                                     SteppedListener... listeners)
        根据给定的面数据集和关联的线数据集,提取关联线数据集中线对象的左右多边形。

        该方法调用后,会在关联线数据集属性表里自动创建出名称为 “SmTopoLPolygon” 和 “SmTopoRPolygon” 的字段,这两个字段用于存储相应线对象的左多边形和右多边形的 ID。

        1. 如果线对象落在多边形内,则该线对象的左右多边形均赋为该多边形的ID;
        2. 如果线对象的一边无匹配的多边形,则该方向赋值为0,即 “SmTopoLPolygon” 或者 “SmTopoRPolygon” 字段值为 0;如果线对性两边都没有多边形,则左右多边形都赋为 0,即 “SmTopoLPolygon” 和 “SmTopoRPolygon” 字段值都为 0。

        注意:使用此方法时,要求一个线对象的左右两边分别至多有一个多边形,如果不是,则需要先打断,否则方法调用会产生错误结果;另外,使用此方法前请先对数据进行拓扑预处理,否则无法得到正确的结果。

        参数:
        regionDataset - 指定的图斑(面)数据集。
        lineDataset - 指定的关联的线数据集。
        preProcessed - 指定是否进行拓扑预处理。
        listeners - 用于接收进度条事件的监听器。
        返回:
        成功返回 true,失败返回 false。
      • pickupBorder

        @Deprecated
        public static DatasetVector pickupBorder(DatasetVector sourceDataset,
                                                              Datasource outputDatasource,
                                                              String outputDatasetName,
                                                              boolean preProcessed)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 TopologyProcessing.pickupBorder(DatasetVector, Datasource, String, boolean, SteppedListener...) 替换。
        提取面(或线)的边界,并保存为线数据集。若多个面(或线)共边界(线段),该边界(线段)只会被提取一次。支持处理三维线数据集和三维面数据集。

        不支持重叠面提取边界。

        参数:
        sourceDataset - 指定的图斑(面)、或线数据集。支持处理三维线数据集和三维面数据集。
        outputDatasource - 指定的用于存储结果边界线数据集的数据源。
        outputDatasetName - 指定的结果边界线数据集的名称。
        preProcessed - 指定是否进行拓扑预处理。
        返回:
        线数据集。
      • pickupBorder

        public static DatasetVector pickupBorder(DatasetVector sourceDataset,
                                                 Datasource outputDatasource,
                                                 String outputDatasetName,
                                                 boolean preProcessed,
                                                 SteppedListener... listeners)
        提取面(或线)的边界,并保存为线数据集。若多个面(或线)共边界(线段),该边界(线段)只会被提取一次。支持处理三维线数据集和三维面数据集。

        不支持重叠面提取边界。

        参数:
        sourceDataset - 指定的图斑(面)、或线数据集。支持处理三维线数据集和三维面数据集。
        outputDatasource - 指定的用于存储结果边界线数据集的数据源。
        outputDatasetName - 指定的结果边界线数据集的名称。
        preProcessed - 指定是否进行拓扑预处理。
        listeners - 用于接收进度条事件的监听器。
        返回:
        线数据集。
      • splitLinesByRegions

        @Deprecated
        public static boolean splitLinesByRegions(Recordset lineRecordset,
                                                               Recordset regionRecordset)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 TopologyProcessing.splitLinesByRegions(Recordset, Recordset, SteppedListener...) 替换。
        用面对象分割线对象。在提取线对象的左右多边形(即 pickupLeftRightRegions() 方法)操作前,需要调用该方法分割线对象,否则会出现一个线对象对应多个左(右)多边形的情形。

        如下图:线对象 AB,如果不用面对象进行分割,则 AB 的左多边形有两个,分别为1,3;右多边形也有两个,分别为1和3,进行分割操作后,线对象 AB 分割为 AC 与 CB,此时 AC 与 CB 各自对应的左、右多边形分别只有一个。

        参数:
        lineRecordset - 指定的被分割的线记录集。
        regionRecordset - 指定的用于分割线记录集的面记录集。
        返回:
        成功返回 true,失败返回 false。
      • splitLinesByRegions

        public static boolean splitLinesByRegions(Recordset lineRecordset,
                                                  Recordset regionRecordset,
                                                  SteppedListener... listeners)
        用面对象分割线对象。在提取线对象的左右多边形(即 pickupLeftRightRegions() 方法)操作前,需要调用该方法分割线对象,否则会出现一个线对象对应多个左(右)多边形的情形。

        如下图:线对象 AB,如果不用面对象进行分割,则 AB 的左多边形有两个,分别为1,3;右多边形也有两个,分别为1和3,进行分割操作后,线对象 AB 分割为 AC 与 CB,此时 AC 与 CB 各自对应的左、右多边形分别只有一个。

        参数:
        lineRecordset - 指定的被分割的线记录集。
        regionRecordset - 指定的用于分割线记录集的面记录集。
        listeners - 用于接收进度条事件的监听器。
        返回:
        成功返回 true,失败返回 false。
      • pickupBorder

        @Deprecated
        public static DatasetVector pickupBorder(DatasetVector sourceDataset,
                                                              Datasource outputDatasource,
                                                              String outputDatasetName,
                                                              int[] extractIDs,
                                                              boolean preProcessed)
        已过时。 此方法已废弃,请使用支持进度监听的新方法 TopologyProcessing.pickupBorder(DatasetVector, Datasource, String, int[], boolean, SteppedListener...) 替换。 一个布尔值,如果合并成功返回 true,否则返回 false。
        提取给定ID数组对应的面对象的边界,并保存为线数据集。若多个面共边界,该边界只会被提取一次。支持处理三维线数据集和三维面数据集。

        不支持重叠面提取边界。

        仅会提取给定ID数组对应的面对象边界。提取过程中会考虑相邻面对象的影响,目标面对象与多个面相邻,面边界可能会被打断成多条线段。

        参数:
        sourceDataset - 指定的图斑(面)、或线数据集。支持处理三维线数据集和三维面数据集。
        outputDatasource - 指定的用于存储结果边界线数据集的数据源。
        outputDatasetName - 指定的结果边界线数据集的名称。
        extractIDs - 指定的面ID数组。
        preProcessed - 指定是否进行拓扑预处理。
        返回:
        线数据集。
      • pickupBorder

        public static DatasetVector pickupBorder(DatasetVector sourceDataset,
                                                 Datasource outputDatasource,
                                                 String outputDatasetName,
                                                 int[] extractIDs,
                                                 boolean preProcessed,
                                                 SteppedListener... listeners)
        提取给定ID数组对应的面对象的边界,并保存为线数据集。若多个面共边界,该边界只会被提取一次。支持处理三维线数据集和三维面数据集。

        不支持重叠面提取边界。

        仅会提取给定ID数组对应的面对象边界。提取过程中会考虑相邻面对象的影响,目标面对象与多个面相邻,面边界可能会被打断成多条线段。

        参数:
        sourceDataset - 指定的图斑(面)、或线数据集。支持处理三维线数据集和三维面数据集。
        outputDatasource - 指定的用于存储结果边界线数据集的数据源。
        outputDatasetName - 指定的结果边界线数据集的名称。
        extractIDs - 指定的面ID数组。
        preProcessed - 指定是否进行拓扑预处理。
        listeners - 用于接收进度条事件的监听器。
        返回:
        线数据集。
      • addSteppedListener

        public static void addSteppedListener(SteppedListener l)
        添加一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。
      • removeSteppedListener

        public static void removeSteppedListener(SteppedListener l)
        移除一个进度条事件(SteppedEvent)的监听器。
        参数:
        l - 一个用于接收进度条事件的监听器。

Copyright © 2021–2024 SuperMap. All rights reserved.