“面邻域”和“成对面邻域”的工作原理

该主题介绍了面邻域成对面邻域工具查找邻域并填充输出表的方法。

查找邻域关系和计算统计数据

邻域关系按以下方式进行定义:

  • 重叠邻域 - 全部或部分区域重叠的面。
  • 边邻域 - 具有公共或接触边界的面。
  • 节点邻域 - 在某一点相切的面(对于面邻域工具,边界相切或交叉;对于成对面邻域工具,边界相切)。

对于面邻域工具,使用与相交工具相同的规则来查找邻近面。

对于成对面邻域工具,使用与成对相交工具相同的规则来查找邻近面。

两种工具都按照等级路径确定邻域类型和输出表中记录的统计数据。 从高到低等级顺序的邻域关系是重叠、重合边和节点邻域。 找到排序更高的邻域后,工具将计算并存储关系信息,并跳过排序更低关系的分析。 工具使用以下工作流:

  1. 选择可用作源要素的面。
  2. 查找与源面相交的所有面(查找邻域)。
  3. 对于找到的第一个邻域,对源面进行以下分析:
    • 当邻域面为重叠邻域并且选中包括区域重叠参数时,将执行以下操作:
      1. AREA 字段添加到输出表。
      2. 计算重叠的面积。
      3. 将计算出的面积记录在输出表 AREA 字段中以供使用。
      4. 记录 0 以供输出表 LENGTH 字段使用。
      5. 记录 0 以供输出表 NODE_COUNT 字段使用。

        重叠邻域分析已完成。

      6. 分析下一个邻域面。
    • 当邻域面为边邻域时,将执行以下操作:
      1. 计算重合边界的长度。
      2. 将计算出的长度记录在输出表 LENGTH 字段中以供使用。
      3. 记录 0 以供输出表 NODE_COUNT 字段使用。

        边邻域分析已完成。

      4. 分析下一个邻域面。
    • 当邻域面为节点邻域时,将执行以下操作:
      1. 查找邻域面在某一点与源面相交和接触的次数(成对面邻域工具仅使用接触)。
      2. 记录该计数值以供输出表 NODE_COUNT 字段使用。
      3. 记录 0 以供输出表 LENGTH 字段使用。

        节点邻域分析已完成。

      4. 分析下一个邻域面。

找到邻域关系后,工具将使用按字段报告参数值来确定如何在输出表中报告邻域关系和统计数据。 按字段报告参数值用于确定唯一面或面组,并按唯一面或面组报告其邻域信息。 同一组的面具有相同的一组字段值。

按字段报告示例

以下子部分将介绍使用按字段报告参数的示例。

为每个单独的面使用具有唯一值的字段

要查找输入中每个面的邻域,请指定一个对每个面都具有唯一值的输入字段。 在此示例中,九个面的输入表有 myCode 字段,每个面都有一个唯一的值。

输入数据

下表显示了使用 myCode 字段作为按字段报告参数值的结果。 源和邻域字段名称中的前缀是 src_myCodenbr_myCode

输出表

使用具有定义唯一面组的值的字段

要识别唯一的面组并按组报告邻域信息,请指定具有分类唯一值的字段。 邻域信息是根据唯一组之间的关系来汇总的。 在此示例中,使用 myClass 字段作为按字段报告参数值来识别唯一面组。

输入数据

以下是使用 myClass 字段作为按字段报告参数值的结果:

  • 对于组 A 到组 A 中的其他面,重合边的总长度为 1200,该长度来自于组 A 中的面之间的六条重合边。
    注:

    输出表将仅包含使用按字段报告参数指定的源面值和邻域面值的每个唯一组合的唯一记录。 由于以组 A 作为源、邻域作为关系的一侧,而反向关系也是以组 A 作为源和邻域,因此邻域关系两侧的总数都在一条记录中。

  • 组 A 与组 B 之间只有两条边重合,总长度为 200。 组 B 和组 A 之间也是如此。
  • 组 A 和组 C 之间有三条重合边,总长度为 300。组 C 和组 A 之间也是如此。
  • 对于组 B 与组 B 的其他面,与组 A 不同,未发现邻域关系,因此输出中没有报告任何内容。

输出表

使用具有组合值的多个字段来定义唯一的面组

在此示例中,myZone 字段中的值表示面的一种分类,而 myClass 字段中的值表示第二种分类。

输入数据

当两个字段 myZonemyClass 指定为按字段报告参数值时,这两个字段的组合值将产生以下唯一面组:

  • Z1-A 组
  • Z1-C 组
  • Z2-A 组
  • Z2-B 组
  • Z2-C 组

下面的输出表显示了这些组的邻域信息。 前八行表示 Z1 值的唯一组与 myClass 字段中的值相结合,作为 Z1 和 Z2 中的源组及其邻域组:

  • Z1-A 源组内有六条重合边(类似于上例中的组 A),重合边的总长度为 600。
  • Z1-A 源组与 Z1-C 邻域组为边邻域,重合边的总长度为 200。
  • Z1-A 源组与 Z2-A 邻域组为边邻域,重合边的总长度为 300。
  • Z1-A 源组与 Z1-B 邻域组不是边邻域,但 Z1-B 邻域组边界在某个节点处与 Z1-A 源组相接,并且是节点邻域。 因此,LENGTH 字段的值为 0,NODE_COUNT 字段的值为 1。

输出表

具有和不具有重叠面的输入数据

下面的示例详细显示了在运行具有和不具有区域重叠的输入数据时如何按照从高到低的等级顺序分析邻域关系。 这些示例使用单个字段作为按字段报告参数值,其中包含每个面的唯一值。 在每个示例中,都标注了面邻域工具和成对面邻域工具之间的差异。

不包含重叠面的输入数据

以下两种情况中使用的输入数据包含不重叠的面。

未选中“包括区域重叠”参数

下面显示的四个输入面不重叠。 如果在未选中包括区域重叠参数的情况下运行工具,则工具将仅选中边和节点邻域,顺序如下。 以面 1 作为源面为例,发现了三个邻域面,并在下面的输出表中报告了以下信息:

  • 面 2 具有与面 1 重合的边,因此它是边邻域。 重合边的长度 (100) 将写入 LENGTH 字段。 跳过节点邻域分析,NODE_COUNT 字段值为 0。面 4 也是如此。
  • 面 5 与面 1 没有重合边,因此 LENGTH 字段的值为 0。但是,面 5 在某一点与面 1 相切,因此它是面 1 的节点邻域,并且 NODE_COUNT 字段的值为 1。

输入表和输出表

选中“包括区域重叠”参数

当选中包括区域重叠参数时,输出表将包含 AREA 字段。 由于没有面重叠,因此所有 AREA 字段值都将为 0。 边和节点邻域的分析继续进行,并且 LENGTHNODE_COUNT 字段值与可比较的按字段报告参数示例中的示例相同。

输入数据包含重叠面

以下两个示例中使用的输入数据包含重叠面。

未选中“包括区域重叠”参数

在以下四个面中,重叠、边或节点邻域在任意两个面之间仅出现一次。 当取消选中包括区域重叠参数时,工具仅选中边和节点邻域(按此顺序),并且输出不包含 AREA 字段。 以面 1 作为源面为例,发现了三个邻域面,并在下面的输出表中报告了以下信息:

  • 面 2 和 5 均与面 1 有重合的边,并且边的长度 20 写在 LENGTH 字段中。 即使面 2 与面 1 在某一点相交,也会跳过节点邻域分析。 NODE_COUNT 字段的值为 0。
  • 面 4 与面 1 有重合的边,并且重合边的长度 100 写在 LENGTH 字段中。

输入表和输出表

选中“包括区域重叠”参数

以面 1 作为源面为例,找到三个邻域面,并在选中包括区域重叠参数的情况下,在下面的输出表中报告以下信息:

  • 面 2 与面 1 重叠,重叠面积 1600 写在 AREA 字段中。 尽管面 2 具有与面 1 重合的边并且在某个点处相交,但仍会跳过对边和节点邻域的分析。 LENGTHNODE_COUNT 字段的值为 0。
  • 面 4 与面 1 有重合的边,并且边的重合长度 100 写在 LENGTH 字段中。
  • 面 5 与面 1 有重合的边,并且重合边的长度 20 写在 LENGTH 字段中。 即使节点邻域分析在某个点与面 1 相交,也会跳过该分析(成对面邻域工具仅使用接触,因此不考虑这种交叉情况)。 NODE_COUNT 字段的值为 0。

输入表和输出表

输入数据包含与另一个面相交多次的面

在下面描述的示例中使用的输入数据中,两个面之间出现多次重叠、边或节点邻域。 输出字段(AREALENGTHNODE_COUNT)的值是每种邻域类型中所有出现次数的总和。

未选中“包括区域重叠”参数

下面的两个面在两处重叠,并且有两条重合的边。 当未选中“包括区域重叠”参数时,该工具不会分析两个要素之间的重叠。 它发现两个重合边,并将两个重合边的长度总和 40 写入 LENGTH 字段。 跳过节点邻域的分析,因此在 NODE_COUNT 字段中输入值 0。 在这种情况下,面 1 为源面,面 2 为邻域,反之亦然。

选中“包括区域重叠”参数

对于下面相同的两个面,当选中“包括区域重叠”参数时,工具会找到两个区域重叠,并将两个区域的总和 800 写入 AREA 字段中。 跳过对边和节点邻域的分析,并在 LENGTHNODE_COUNT 字段中输入 0 值。 在这种情况下,面 1 为源面,面 2 为邻域,反之亦然。

输入数据和输出表

未选中“包括区域重叠”参数,并且输入面之间不存在重合边

对于此场景中的两种工具,均未找到重合边,因此将 0 写入 LENGTH 字段。 工具继续分析节点邻域,面邻域工具发现边界交叉两次,而成对面邻域工具不考虑交叉关系并返回空输出。 由于面邻域工具考虑交叉关系,因此它会在 NODE_COUNT 字段中写入值 2。 在这种情况下,面 1 为源面,面 2 为邻域,反之亦然,如下面的输出表所示:

输入表和输出表

特殊情况

接下来的两种特殊情况中使用的输入数据可能看起来相同,但覆盖的区域不同,如下所述。

覆盖另一个面的洞的面

在这种情况下,面 2 有一个洞,被面 1 覆盖。 两个面不重叠,因此不需要对重叠邻域进行分析。 当面 1 为源面,且面 2 与面 1 有一条重合边 200 时,该值将写入 LENGTH 字段。 NODE_COUNT 字段值为 0。同样,当面 2 为源面时,面 1 与面 2 有一条重合边 200,这会导致每个记录的 LENGTH 字段值相同。

输入表和输出表

面与另一个面完全重叠

在这种情况下,面 1 和 2 相互重叠。 您需要选中包括区域重叠参数才能在分析中找到此邻域关系。 对于作为源的面 1 和作为邻域的面 2,反之亦然,下面的输出表中报告了 2500 的重叠面积。

输入表和输出表