スカイライン(Skyline) (3D Analyst)
図
使用法
解析は、観測ポイントからファンクション サーフェスまたは仮想サーフェスより上で行われ、解析中に検出されたフィーチャも考慮されます。他のツール(特に [スカイライン バリア(Skyline Barrier)] ツール)と組み合わせて、シャドウ ボリュームなどのフィーチャを作成できます。
[スカイライン(Skyline)] ツールは多くの場合、[スカイライン バリア(Skyline Barrier)] ツールと一緒に使用されます。また、[スカイライン グラフ(Skyline Graph)] ツールと一緒に使用する場合もあります。[スカイライン(Skyline)] ツールのその他の応用については、「3D フライト パスおよびコリドーに対する脅威分析」をご参照ください。
[スカイライン(Skyline)] ツールでは、フィーチャのシルエットを作成できます。また、[スカイライン バリア(Skyline Barrier)] ツールを使用すると、これらのシルエットをシャドウ ボリュームに立ち上げることができます。詳細については、「スカイライン(Skyline)の詳細」をご参照ください。
スカイラインの代わりにフィーチャのシルエットが生成される場合は、一部のパラメータの使用法と説明が違います。
フィーチャを指定しないと、スカイラインは尾根線(水平線)だけで構成されます。
ファンクション サーフェスを指定しない場合は、指定した半径と標高から生成される仮想サーフェスが使用されます。
-
必須のパラメータは、入力観測ポイントと出力フィーチャクラス(スカイライン)のみです。
-
1 つまたは複数のフィーチャを選択した場合は、選択したフィーチャのみが考慮されます。それ以外の場合はすべてのフィーチャが考慮されます。
地平線解析は、観測ポイントごとに独立して実行されます。各観測ポイントから見たスカイラインを表す、1 つ以上のラインが生成されます。
方位角の増分値は、スカイラインの尾根部分の精度にのみ影響し、フィーチャに沿った部分には影響しません。
各出力ラインには、そのラインが表すスカイラインの作成に使用された観測ポイント フィーチャの FID を示す値が設定されます。
1 つまたは複数のフィーチャのシャドウ ボリュームを作成する場合は、通常、[スカイラインをセグメント化] のチェックボックスをオンにして、スカイラインを構成する各フィーチャがそれぞれのポリラインを含むようにすることをお勧めします。
通常、シャドウ ボリュームを作成する場合は、実行ごとにフィーチャを 1 つだけ選択して [スカイライン(Skyline)] ツールを実行し、続いてフィーチャを表すポリラインに対して [スカイライン バリア(Skyline Barrier)] ツールを実行します。
出力ジオメトリは 3D ポリラインです。
次のフィールドが、スカイラインを含む出力フィーチャクラスに追加されます。
- OID - スカイラインの FID。
- Shape - スカイラインのジオメトリ
- OBSV_PT_ID - スカイラインの作成に使用した観測ポイントの FID。
- ORIGFTR_ID - 建物などのフィーチャの FID。
次のフィールドが、シルエットを含む出力フィーチャクラスに追加されます。
- FID - シルエットのフィーチャ ID。
- Shape - シルエットのジオメトリ。
- OBSV_PT_ID - シルエットの作成に使用した観測ポイントの FID。
- ORIGFTR_ID - このシルエットで表される、建物などの元のフィーチャの FID。
- DIR_VECT_X - 観測点からの光線の方向を表す単位ベクトルの X 要素。
- DIR_VECT_Y - 観測点からの光線の方向を表す単位ベクトルの Y 要素。
- DIR_VECT_Z - 観測点からの光線の方向を表す単位ベクトルの Z 要素。
- FEAT_CTR_X - 元のフィーチャ(建物など)のエンベロープの中心を表す X 要素。
- FEAT_CTR_Y - フィーチャのエンベロープの中心を表す Y 要素。
- FEAT_CTR_Z - フィーチャのエンベロープの中心を表す Z 要素。
- BHND_CTR_X - フィーチャの背後に移動された、フィーチャのエンベロープの中心を表す X 要素。
- BHND_CTR_Y - フィーチャの背後に移動された、フィーチャのエンベロープの中心を表す Y 要素。
- BHND_CTR_Z - フィーチャの背後に移動された、フィーチャのエンベロープの中心を表す Z 要素。
- USED_PARLL - シルエットの作成に平行な光線を使用したかどうかを表します(平行な光線を使用した場合は 1、そうでない場合は 0)。
- MADE_VERT - 光線に平行ではなく、光線に垂直にシルエットが作成されたかどうかを表します(作成された場合は 1、そうでない場合は 0)。
- MOVED_BHND - シルエットがフィーチャの背後に移動されているか、そのままフィーチャの中心にあるかを示します(移動された場合は 1、そうでない場合は 0)。
構文
パラメータ | 説明 | データ タイプ |
in_observer_point_features |
観測位置を表す 3D ポイント。これらのポイントごとにスカイラインが生成されます。 | Feature Layer |
out_feature_class |
スカイラインを格納するライン フィーチャクラス。または、フィーチャのシルエットを格納するマルチパッチ フィーチャクラス。 | Feature Class |
in_surface (オプション) |
水平線を決定するファンクション サーフェス。 | LAS Dataset Layer; Raster Layer; TIN Layer; Terrain Layer |
virtual_surface_radius (オプション) |
実際のサーフェスの代わりに水平線を定義する仮想サーフェスの半径。正の値を指定する必要があります。実際のサーフェスが指定されている場合は無視されます。デフォルトは 1,000 です。 | Linear Unit |
virtual_surface_elevation (オプション) |
実際のサーフェスの代わりに水平線を定義する仮想サーフェスの標高。実際のサーフェスが指定されている場合は無視されます。デフォルトは 0 です。 | Linear Unit |
in_features (オプション) |
地平線解析に使用されるフィーチャクラス。一般的に、フィーチャは都市の建物などの障害物を表します。 | Feature Layer |
feature_lod (オプション) |
地平線解析で各フィーチャを検証する詳細レベル。
| String |
from_azimuth_value_or_field (オプション) |
地平線解析を開始する方位角(度)。解析は観測ポイントから開始され、[方位角の開始角度] から [方位角の終了角度] に達するまで、右方向に実行されます。-360 より大きく 360 より小さい値を指定する必要があります。デフォルトは 0 です。 | Double; Field |
to_azimuth_value_or_field (オプション) |
地平線解析を終了する方位(度)。解析は観測ポイントから開始され、[方位角の開始角度] から [方位角の終了角度] に達するまで、右方向に実行されます。[方位角の開始角度] より大きく、360 を超えない値を指定する必要があります。デフォルトは 360 です。 | Double; Field |
azimuth_increment_value_or_field (オプション) |
地平線解析を [方位角の開始角度] から [方位角の終了角度] まで実行するときに、水平線を評価する角度の間隔(度)。[方位角の開始角度] から [方位角の終了角度] を引いた値以下にする必要があります。デフォルトは 1 です。 | Double; Field |
max_horizon_radius (オプション) |
水平線を検索する観測位置からの最大距離。0 を指定すると、距離による制限を受けません。デフォルトは 0 です。 | Double |
segment_skyline (オプション) |
各観測ポイントからのスカイラインを表すラインを 1 つだけ生成する代わりに、出力を複数のラインに分割します。これらのラインはそれぞれ別のフィーチャを表すか、フィーチャ間の水平線を表します。シルエットを生成している場合、このパラメータは発散光を使用するかどうかを示します。太陽光の陰の場合は、一般的にこのパラメータを「NO」またはオフにします。
| Boolean |
scale_to_percent (オプション) |
スカイラインの各頂点の、元の対頂角(水平線からの角度、または仰角)または標高に対する割合を指定します。0 または 100 を入力した場合は縮尺が設定されません。デフォルトは 100 です。 | Double |
scale_according_to (オプション) |
スケーリングに使用する対象を、次の値で指定します。
| String |
scale_method (オプション) |
頂点の計算方法。
| String |
use_curvature (オプション) |
ファンクション サーフェスから尾根線を生成するときに、地球の曲率を考慮するかどうかを指定します。
| Boolean |
use_refraction (オプション) |
ファンクション サーフェスから尾根線を生成するときに、大気の屈折を考慮するかどうかを指定します。実際のサーフェスを指定していない場合、このチェックボックスをオンにすると(または、Python で「REFRACTION」を指定すると)、スカイラインの代わりにシルエットが作成されます。
| Boolean |
refraction_factor (オプション) |
大気の屈折を考慮する場合に適用するスカラー値。デフォルトは 0.13 です。 | Double |
pyramid_level_resolution (オプション) |
ファンクション サーフェスにテレインが指定されている場合、このパラメータはテレインに存在する解像度から設定されます。水平線を生成する目的で、解像度のいずれかが選択されます。デフォルト値は 0(最大解像度)です。 | Double |
create_silhouettes (オプション) |
出力フィーチャが、観測点から見えるシルエットを表すかどうかを指定します。
| Boolean |
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Skyline_3d("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the
Skyline 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
inPts = "observers.shp"
# Make sure output has a unique name
outFC = arcpy.CreateUniqueName("skyline_output.shp")
inSurface = "sample.gdb/featuredataset/terrain"
obstructionFCs = "buildings.shp; billboards.shp"
surfRad = "1000 meters"
surfElev = "100 meters"
LOD = "FULL_DETAIL"
fromAzim = 0
toAzim = 360
incAzim = 1
maxHorizRad = 0
segSky = "SEGMENT_SKYLINE"
scale = 100
scaleAcc = "ELEVATION"
scaleMethod = "SKYLINE_MAXIMUM"
# Execute Skyline
arcpy.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev,
obstructionFCs, LOD, fromAzim, toAzim, incAzim,
maxHorizRad, segSky, scale, scaleAcc, scaleMethod)
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)