3D 线与多面体相交 (3D Analyst)

摘要

返回 3D 线和多面体要素之间几何交集的数量,并且还提供用于表示相交点的可选要素,另在这些点处对 3D 线进行分割。

插图

3D 线与多面体相交示例

使用情况

  • 交点计数将在消息窗口中返回,并可在模型或脚本中用于建立后续操作的前提条件。

  • 此工具用于确定 3D 欧氏空间中的交点。此工具不支持 2D 线要素,但通过依据属性实现要素转 3D,可将属性字段中存储了高度定义的 2D 线要素转换为 3D 线要素。

  • 可选点输出用于表示输入线和多面体要素之间的交叉点,并包含下列属性:

    • LINE_OID - 沿原始线找到交集的原始线 OBJECTID。
    • MPATCH_OID - 在此处与线相交的多面体的 OBJECTID。
    • DIST_3D - 沿原始线找到交集的 3D 距离。
  • 可选线输出会在交点处对输入线要素进行分割,并包含下列属性:

    • LINE_OID - 派生新线的原始线的 OBJECTID。
    • FROM_MP_ID - 与线的起点相交的多面体要素的 OBJECTID。值 -1 用于表示线的起点不是交点。
    • TO_MP_ID - 与线的终点相交的多面体的 OBJECTID。值 -1 用于表示线的起点不是交点。
      注:

      如果线与多面体不相交,则直接将线复制到输出中,而且线的 FROM_MP_IDTO_MP_ID 字段将包含 -1。

    • DIST_3D - 沿原始线找到表示新线起点的相交位置的 3D 距离。
    • LENGTH_3D - 此新线的 3D 长度。从原始线派生的各新线的长度总和将等于原始线的 3D 长度。
  • 通过连接属性参数使用输出线要素类可在可选输出要素中引用原始线的属性值。

参数

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

要与多面体要素相交的线要素。

Feature Layer
输入多面体要素

要与线相交的多面体要素。

Feature Layer
连接属性
(可选)

将与可选输出要素一同存储的输入线要素属性。

  • IDS_ONLY 仅存储要素标识号。这是默认设置。
  • ALL将存储所有属性。
String
输出点
(可选)

用于表示 3D 线和多面体之间交点的可选要素。

Feature Class
输出线
(可选)

在与多面体要素的各交点处对输入线进行分割的可选线要素。

Feature Class

派生输出

标注说明数据类型
交点计数

交点数。

长整型

arcpy.ddd.Intersect3DLineWithMultiPatch(in_line_features, in_multipatch_features, {join_attributes}, {out_point_feature_class}, {out_line_feature_class})
名称说明数据类型
in_line_features

要与多面体要素相交的线要素。

Feature Layer
in_multipatch_features

要与线相交的多面体要素。

Feature Layer
join_attributes
(可选)

将与可选输出要素一同存储的输入线要素属性。

  • IDS_ONLY 仅存储要素标识号。这是默认设置。
  • ALL将存储所有属性。
String
out_point_feature_class
(可选)

用于表示 3D 线和多面体之间交点的可选要素。

Feature Class
out_line_feature_class
(可选)

在与多面体要素的各交点处对输入线进行分割的可选线要素。

Feature Class

派生输出

名称说明数据类型
out_intersection_count

交点数。

长整型

代码示例

Intersect3DLineWithMultipatch 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'
arcpy.Intersect3DLineWithMultiPatch_3d('inLine.shp', 'inMultipatch.shp', 
                                     'IDS_ONLY', 'outPts.shp', 'outLine.shp')
Intersect3DLineWithMultipatch 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
Name: Intersect3DLineWithMultiPatch Example
Description: This script demonstrates how to
             use the Intersect3DLine tool.
****************************************************************************'''
# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = 'C:/data'

# Set Local Variables
inLineFC = 'sample.gdb/lines_3d'
inMP = 'sample.gdb/test_MP'

# Ensure a unique name is produced for output files
outPoint = arcpy.CreateUniqueName('OutPt_3DIntersect', 'sample.gdb')
outLine = arcpy.CreateUniqueName('OutLine_3DIntersect', 'sample.gdb')

# Execute Intersect 3D Line with Multipatch
arcpy.Intersect3DLineWithMultiPatch_3d(inLineFC, inMP, 'IDS_ONLY',
                                       outPoint, outLine)

相关主题