com.supermap.data.topology
类 TopologyProcessing

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

public class TopologyProcessing
extends java.lang.Object

拓扑处理类。

用于进行拓扑处理。

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


方法摘要
static void addSteppedListener(SteppedListener l)
          添加一个进度条事件(SteppedEvent)的监听器。
static DatasetVector buildRegions(DatasetVector sourceDataset, Datasource outputDatasource, java.lang.String outputDatasetName)
          用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。
static DatasetVector buildRegions(DatasetVector sourceDataset, Datasource outputDatasource, java.lang.String outputDatasetName, TopologyProcessingOptions options)
          用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。
static boolean clean(DatasetVector datasetVector, TopologyProcessingOptions options)
          根据拓扑处理选项对给定的数据集进行拓扑处理。
static DatasetVector pickupBorder(DatasetVector regionDataset, Datasource outputDatasource, java.lang.String outputDatasetName, boolean preProcessed)
          提取面(或线)的边界,并保存为线数据集。
static DatasetVector pickupBorder(DatasetVector regionDataset, Datasource outputDatasource, java.lang.String outputDatasetName, int[] extractIDs, boolean preProcessed)
          提取给定ID数组对应的面对象的边界,并保存为线数据集。
static boolean pickupLeftRightRegions(DatasetVector regionDataset, DatasetVector lineDataset, boolean preProcessed)
          根据给定的面数据集和关联的线数据集,提取关联线数据集中线对象的左右多边形。
static void removeSteppedListener(SteppedListener l)
          移除一个进度条事件(SteppedEvent)的监听器。
static boolean splitLinesByRegions(Recordset lineRecordset, Recordset regionRecordset)
          用面对象分割线对象。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

buildRegions

public static DatasetVector buildRegions(DatasetVector sourceDataset,
                                         Datasource outputDatasource,
                                         java.lang.String outputDatasetName)
用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。

参数:
sourceDataset - 指定的用于进行多边形拓扑处理的源数据集,只能是线数据集或网络数据集,支持三维线数据集。
outputDatasource - 指定的用于存储结果数据集的数据源。
outputDatasetName - 指定的结果面数据集的名称。
返回:
结果面数据集。

buildRegions

public static DatasetVector buildRegions(DatasetVector sourceDataset,
                                         Datasource outputDatasource,
                                         java.lang.String outputDatasetName,
                                         TopologyProcessingOptions options)
用于将线数据集或者网络数据集,通过拓扑处理来构建面数据集。

参数:
sourceDataset - 指定的用于进行多边形拓扑处理的源数据集,只能是线数据集或网络数据集。
outputDatasource - 指定的用于存储结果数据集的数据源。
outputDatasetName - 指定的结果面数据集的名称。
options - 指定的拓扑处理选项。
返回:
结果面数据集。

clean

public static boolean clean(DatasetVector datasetVector,
                            TopologyProcessingOptions options)
根据拓扑处理选项对给定的数据集进行拓扑处理。支持三维矢量数据集。

参数:
datasetVector - 指定的拓扑处理的数据集。支持三维矢量数据集。
options - 指定的拓扑处理选项。其中 options 的 AreLinesIntersected 弧段求交属性值可以为 false,即在做拓扑处理时, 可以先不进行弧段求交。
返回:
成功返回 true,失败返回 false。

pickupLeftRightRegions

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

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

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

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

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

pickupBorder

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

不支持重叠面提取边界。

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

pickupBorder

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

不支持重叠面提取边界。

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

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

splitLinesByRegions

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

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

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

addSteppedListener

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

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

removeSteppedListener

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

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