見通し線の構築(Construct Sight Lines) (3D Analyst)
サマリ
1 つまたは複数の観測点から見通し線を表すライン フィーチャを、ターゲット フィーチャクラス内のフィーチャに作成します。
使用法
-
ターゲット フィーチャがラインまたはポリゴンの場合、境界は均一にサンプリングされます。
-
入力フィーチャクラスとしてポイント フィーチャクラスを使用する必要があります。マルチポイントは無効です。
-
高さのソースが観測点フィーチャとターゲット フィーチャの両方に指定されている場合、3D 出力が生成されます。
結合フィールドを使用して、特定の観測点の 1 つ以上の目標点を指定します。結合フィールドを使用しない場合、すべてのポイントがすべての目標点に接続されます。
観測点フィーチャとターゲット フィーチャの高さのソースはデフォルトでは、このリストで最初に見つかったフィールド名になります。
- Shape.Z(Z が有効化されているフィーチャにのみ使用可能)
- Spot
- Z
- Z_Value
- Height
- Elev
- Elevation
- Contour
適した高さフィールドが存在しない場合、デフォルトでキーワード「<なし>」が使用されて Z 値を持たないフィーチャが表示されます。
デフォルトのフィールド選択では、必要な高さフィールドの優先度が低い場合、必要なフィールドを明示的に指定する必要があります。同時に、高さフィールドは必要ないがフィーチャクラスにデフォルトの選択リストのフィールドの 1 つが含まれる場合は、キーワード「<なし>」を指定する必要があります。
[サンプリング距離] の単位は、出力フィーチャクラスの X、Y 単位で指定します。
次のフィールドが、見通し線を含む出力フィーチャクラスに追加されます。
- OID_OBSERV - 観測点の OID
- OID_TARGET - 目標点の OID
- DIST_ALONG - ターゲット フィーチャがラインまたはポリゴンの場合、ターゲット フィーチャに沿った距離
構文
パラメータ | 説明 | データ タイプ |
in_observer_points |
観測点を表す単一のポイント フィーチャマルチポイント フィーチャはサポートされていません。 | Feature Layer |
in_target_features |
ターゲット フィーチャ(ポイント、マルチポイント、ライン、ポリゴン) | Feature Layer |
out_line_feature_class |
見通し線を含む出力フィーチャクラス | Feature Class |
observer_height_field (オプション) |
属性テーブルから取得された観測点の高さの値のソース [観測点の標高フィールド] のデフォルト値は、以下のリストのオプションの中から優先度順に設定されます。複数のフィールドが存在し、デフォルトのフィールド選択では必要な高さフィールドの優先度が低い場合、必要なフィールドを明示的に指定する必要があります。適した高さフィールドが存在しない場合、キーワード「<なし>」が使用されます。同時に、高さフィールドは必要ないがフィーチャクラスに以下のリストのフィールドの 1 つが含まれる場合、キーワード「<なし>」を指定する必要があります。
| String |
target_height_field (オプション) |
目標点の高さフィールドです。 [目標点の標高フィールド] のデフォルト値は、以下のリストのオプションの中から優先度順に設定されます。複数のフィールドが存在し、デフォルトのフィールド選択では必要な高さフィールドの優先度が低い場合、必要なフィールドを明示的に指定する必要があります。適した高さフィールドが存在しない場合、キーワード「<なし>」が使用されます。同時に、高さフィールドは必要ないがフィーチャクラスに以下のリストのフィールドの 1 つが含まれる場合、キーワード「<なし>」を指定する必要があります。適した高さフィールドが存在しない場合、デフォルトでキーワード「<なし>」が使用されます。
| String |
join_field (オプション) |
結合フィールドは、観測点を特定の目標点に関連付けるために使用されます。 | String |
sample_distance (オプション) |
ターゲットがラインまたはポリゴン フィーチャクラスのときのサンプル間の距離です。[サンプリング距離] の単位は、出力フィーチャクラスの XY 単位で解釈されます。 | Double |
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
import arcpy
from arcpy import env
arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.ConstructSightLines_3d('observer_pt.shp', 'target.shp',
'sightlines.shp', 'BASEHEIGHT',
'TOP_HEIGHT', 'NAME')
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''*********************************************************************
Name: Sight Line Visibility
Description: This script demonstrates how to calculate visibility
for sight lines against the obstructions presented by
terrain elevation & building models in a multipatch.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set Local Variables
env.workspace = 'C:/data'
obs_pts = "Observers.shp"
target = "Observation_Targets.shp"
sight_lines = "in_memory/sightlines"
surface = "sample.gdb/elevation/terrain"
buildings = "city_buildings.shp"
outLOS = arcpy.CreateUniqueName("Line_of_Sight.shp")
obstruction_pts = arcpy.CreateUniqueName("Obstruction_Points.shp")
arcpy.AddMessage("Constructing sight lines...")
arcpy.ddd.ConstructSightLines(obs_pts, target, sight_lines)
arcpy.AddMessage("Calculating line of sight...")
arcpy.ddd.LineOfSight(surface, sight_lines, outLOS, obstruction_pts,
"CURVATURE", "REFRACTION", 0.35, 0, buildings)
arcpy.GetMessages(0)
arcpy.CheckInExtension("3D")
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)