3D 线相交 (3D Analyst)

摘要

用于计算 3D 空间中线的相交和重叠线段。

使用情况

  • 该工具是成对运行。如果多条线相交,则输出点的数量将是相交线的数学组合。例如,三条相交线将产生三个输出点 - 一条用于第一和第二个交点,一条用于第一和第三个交点,最后一条用于第二和第三个交点。同样,如果四条输入线相交,则将产生六个输出点,这些点将分别用于第一和第二、第一和第三、第一和第四,第二和第三,第二和第四,以及第三和第四条线的交点。

  • 输入要素必须具有空间索引。使用添加空间索引工具创建新索引(专门针对 shapefile)或重新构建现有索引(如果无法确定其是否正确)。

  • 如果提供 2D 线作为输入,则将假定所有顶点都位于高程零处。

  • 如果由于用于检测交点的允许的垂直公差的原因,两条具有不同 z 值的线相交,则输出点将使用两个高程中的较高者。同样,当两个 z 值不同的线段相交时,输出线要素将基于 z 值较高的线段。

  • 某些输出线可能由多个部分组成,这是因为两条输入线具有多个不连续的重叠部分,或者两条线在 z 方向上越来越近或越来越远。

  • 将属性传递到输出时,放置在第一组字段中的值来自第一个输入线,而第二组字段中的值来自第二个输入线。如果指定两个输入线要素图层,则第一和第二条输入线分别来自第一和第二个输入线要素图层。如果仅指定一个输入线要素图层,则规则是相同的,除非列看起来是重复的。

  • 该输出点要素将包含以下属性字段:

    • I3L_TYPE - 值 0 表示该点标记重叠线段的终点,而值 1 则表示该点是两条线的交点。
    • I3L_GROUP - 用于标识在水平空间中共享相同位置的所有点的唯一值。
    • I3L_OID1 - 第一个相交线要素的要素 ID。
    • I3L_OID2 - 第二个相交线要素的要素 ID。
    • I3L_LINE1Z - 第一条线上的交点的 Z 值。
    • I3L_LINE2Z - 第二条线上的交点的 Z 值。
    • I3L_Z_DIFF - 交点的 XY 位置处的两条输入线之间的 Z 差。

参数

标注说明数据类型
输入要素

将针对交点进行评估的线要素。输入可以包含一或两个线要素图层或类。如果指定了一个输入,则将每个要素与该要素类中的所有其他要素进行比较。没有要素将与其自身进行比较。

Feature Layer
最大 Z 差异
(可选)

相交线段之间的最大垂直距离。

Linear Unit
要连接的属性
(可选)

指定将输入要素的哪些属性传递到输出要素类。

  • 所有属性输入要素的所有属性都将传递到输出要素类。 这是默认设置。
  • 除要素 ID 外的所有属性除 FID 属性外,将输入要素的其余所有属性都传递到输出要素类。
  • 仅要素 ID仅输入要素的 FID 属性将传递到输出要素类。
String
输出点要素类
(可选)

输出点代表输入线相交的位置,其中包括重叠线段的起点和终点。

Feature Class
输出线要素类
(可选)

输出线表示存在于输入线之间的重叠部分。

Feature Class

派生输出

标注说明数据类型
输出交点数

输入线的相交位置的数量。

长整型

arcpy.ddd.Intersect3DLines(in_lines, {max_z_diff}, {join_attributes}, {out_point_fc}, {out_line_fc})
名称说明数据类型
in_lines
[in_lines,...]

将针对交点进行评估的线要素。输入可以包含一或两个线要素图层或类。如果指定了一个输入,则将每个要素与该要素类中的所有其他要素进行比较。没有要素将与其自身进行比较。

Feature Layer
max_z_diff
(可选)

相交线段之间的最大垂直距离。

Linear Unit
join_attributes
(可选)

指定将输入要素的哪些属性传递到输出要素类。

  • ALL输入要素的所有属性都将传递到输出要素类。 这是默认设置。
  • NO_FID除 FID 属性外,将输入要素的其余所有属性都传递到输出要素类。
  • ONLY_FID仅输入要素的 FID 属性将传递到输出要素类。
String
out_point_fc
(可选)

输出点代表输入线相交的位置,其中包括重叠线段的起点和终点。

Feature Class
out_line_fc
(可选)

输出线表示存在于输入线之间的重叠部分。

Feature Class

派生输出

名称说明数据类型
out_intersection_count

输入线的相交位置的数量。

长整型

代码示例

Intersect3DLines 示例(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.Intersect3DLines(['floor_centerlines.shp', 'stairs.shp'], '2 Meters', 
                           'ONLY_FID', 'intersection_pts.shp')

相关主题