3D 线与多面体(Multipatch)相交 (3D Analyst)
摘要
计算输入线及多面体 (multipatch) 要素的几何交集,并返回交点数。交点和/或线(由在交点处断开的输入线得到)可选择性地写入输出要素类。
插图
用法
-
要求多面体 (multipatch) 要素类及 3D 线要素类作为输入。
该工具会确定输入线要素类中各所选线(若无选中线,则为全部线)与输入多面体 (multipatch) 要素类中各所选多面体 (multipatch)(若无选中多面体,则为全部多面体)之间的交集。
-
输入线要素的属性值可选择性地引入可选的输出线要素类中。
即使没有指定任何输出要素类,该工具也可生成数值(整数)型的输出结果,给出找到的交点数。
可以指定一个输出要素类、两个输出要素类或没有输出要素类(如,点和/或线,或是两者为空)。仅当使用模型或脚本及输出交叉点计数时,才能指定没有输出要素类。
多面体 (Multipatch) 无需为闭合多面体。
输出要素包含三维几何。
-
以下是可选输出点要素类中的字段:
- OID:点的 OBJECTID。
- 形状:点的几何。
- LINE_OID:沿原始线找到交集的原始线 OBJECTID。
- MPATCH_OID:在此处与线相交的多面体 (multipatch) 的 OBJECTID。
- DIST_3D:沿原始线找到交集的 3D 距离。
-
以下是可选输出线要素类中的字段:
- OID:点的 OBJECTID。
- Shape:线的几何。
- LINE_OID:沿原始线找到交集并从交集中生成新线的原始线的 OBJECTID。
- FROM_MP_ID:与原始线在此新线起点处相交的多面体 (multipatch) 的 OBJECTID(若无多面体 (multipatch) 时,为 -1)。
- TO_MP_ID:与原始线在此新线终点处相交的多面体 (multipatch) 的 OBJECTID(若无多面体 (multipatch) 时,为 -1)。
- DIST_3D:沿原始线找到表示新线起点的相交位置的 3D 距离。
- LENGTH_3D:此新线的 3D 长度。
“3D 线与多面体 (Multipatch) 相交”属于一种 3D 集合运算符,是“3D 要素”工具集的一部分。有关什么是集合运算符以及如何使用它们的详细信息,请参阅使用 3D 集合运算符。
语法
Intersect3DLineWithMultiPatch_3d (in_line_features, in_multipatch_features, {join_attributes}, {out_point_feature_class}, {out_line_feature_class})
参数 | 说明 | 数据类型 |
in_line_features |
输入线要素类或图层。 | Feature Layer |
in_multipatch_features |
输入多面体 (multipatch) 要素类或图层。 | Feature Layer |
join_attributes (可选) |
允许输入线要素类中的所有非必需字段(即,非 ObjectID 或几何)及数值复制到可选输出线要素类。
| String |
out_point_feature_class (可选) |
在其中放置交点的可选要素类。 | Feature Class |
out_line_feature_class (可选) |
在其中放置线(交点处断开的输入线)的可选要素类。 | Feature Class |
代码示例
3D 线与多面体 (Multipatch) 相交示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何在即时模式下使用 3D 线与多面体 (Multipatch) 相交函数。
import arcpy from arcpy import env arcpy.CheckOutExtension('3D') env.workspace = 'C:/data' arcpy.Intersect3DLineWithMultiPatch_3d('inLine.shp', 'inMultipatch.shp', 'IDS_ONLY', 'outPts.shp', 'outLine.shp')
3D 线与多面体 (Multipatch) 相交示例 2(独立脚本)
以下 Python 脚本演示了如何在独立脚本中使用 3D 线与多面体 (Multipatch) 相交函数。
'''**************************************************************************** Name: Intersect3DLineWithMultiPatch Example Description: This script demonstrates how to use the Intersect3DLine tool. ****************************************************************************''' # Import system modules import arcpy import exceptions, sys, traceback from arcpy import env try: # Obtain a license for the ArcGIS 3D Analyst extension arcpy.CheckOutExtension('3D') # Set environment settings 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) except arcpy.ExecuteError: print arcpy.GetMessages() except: # Get the traceback object tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] # Concatenate error information into message string pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\ .format(tbinfo, str(sys.exc_info()[1])) msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2)) # Return python error messages for script tool or Python Window arcpy.AddError(pymsg) arcpy.AddError(msgs)
环境
相关主题
许可信息
ArcView: 需要 3D Analyst
ArcEditor: 需要 3D Analyst
ArcInfo: 需要 3D Analyst
7/10/2012