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)