3D ラインをマルチパッチでインターセクト(Intersect 3D Line With Multipatch) (3D Analyst)
サマリ
入力ラインとマルチパッチ フィーチャのジオメトリの交差部分を計算し、交差ポイント数を返します。(交差)ポイントまたは(交差ポイントで切断される入力ラインから得られる)ライン(あるいはその両方)が、任意で出力フィーチャクラスに書き込まれます。
[3D ラインをマルチパッチでインターセクト(Intersect 3D Line With Multipatch)](3D Analyst)の仕組みの詳細
図
使用法
-
マルチパッチ フィーチャクラスと 3D ライン フィーチャクラスが入力として必要になります。
このツールは、入力ライン フィーチャクラス内で選択されたすべてのライン(何も選択されていない場合はすべてのライン)と、入力マルチパッチ フィーチャクラス内で選択されたすべてのマルチパッチ(何も選択されていない場合はすべてのマルチパッチ)の間の交差を決定します。
-
入力ライン フィーチャクラスの属性値は、必要に応じて、オプションの出力ライン フィーチャクラスに引き継がれます。
このツールでは、見つかった交差ポイントの数を示す数値(整数)の出力も生成されます。これは、出力フィーチャクラスが指定されていない場合でも生成されます。
出力フィーチャクラスは、指定してもしなくても構いません。どちらか一方だけ指定することもできます。つまり、ポイントまたはライン(あるいは両方)を指定したり、どちらも指定しない場合があります。どちらも指定しなくてよいのは、モデルまたはスクリプトを使用していて、出力の交差部分の数を使用している場合のみです。
マルチパッチは閉じている必要はありません。
出力フィーチャには 3 次元のジオメトリがあります。
-
オプションの出力ポイント フィーチャクラスには、次のフィールドが存在しています。
- OID:ポイントの OBJECTID。
- Shape:ポイントのジオメトリ。
- LINE_OID: 交差の見つかった元のラインの OBJECTID。
- MPATCH_OID: この位置でラインと交差したマルチパッチの OBJECTID。
- DIST_3D:交差の見つかった元のラインの 3D 距離。
-
オプションの出力ライン フィーチャクラスには、次のフィールドが存在しています。
- OID:ポイントの OBJECTID。
- Shape:ラインのジオメトリ。
- LINE_OID:交差の見つかった元のライン(この新しいラインの生成起点となったライン)の OBJECTID。
- FROM_MP_ID: この新しいラインの始点で元のラインと交差したマルチパッチの OBJECTID(マルチパッチが存在しない場合は -1)。
- TO_MP_ID: この新しいラインの終点で元のラインと交差したマルチパッチの OBJECTID(マルチパッチが存在しない場合は -1)。
- DIST_3D:交差の見つかった元のライン(この新しいラインの始点となるライン)の 3D 距離。
- LENGTH_3D: この新しいラインの 3D 長さ。
[3D ラインをマルチパッチでインターセクト(Intersect 3D Line With Multipatch)] は、[3D フィーチャ] ツールセットの一部を成す 3D セット演算子です。セット演算子の種類と、その使用方法については、「3D セット演算子の使用」をご参照ください。
構文
パラメータ | 説明 | データ タイプ |
in_line_features |
入力ライン フィーチャクラスまたはレイヤ。 | Feature Layer |
in_multipatch_features |
入力マルチパッチ フィーチャクラスまたはレイヤ。 | Feature Layer |
join_attributes (オプション) |
入力ライン フィーチャクラスのすべての必須でないフィールド(ObjectID またはジオメトリ以外)と値を、オプションの出力ライン フィーチャクラスにコピーできるようにします。
| String |
out_point_feature_class (オプション) |
交差ポイントが配置されるオプションのフィーチャクラス。 | Feature Class |
out_line_feature_class (オプション) |
ライン(交差ポイントで切断される入力ライン)が配置されるオプションのフィーチャクラス。 | Feature Class |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで Intersect 3D Line With Multipatch(3D ラインをマルチパッチでインターセクト)関数を使用する方法を示しています。
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')
次の Python スクリプトは、スタンドアロン スクリプトで Intersect 3D Line With Multipatch(3D ラインをマルチパッチでインターセクト)関数を使用する方法を示しています。
'''**************************************************************************** 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)