TIN の作成(Create TIN) (3D Analyst)
サマリ
TIN(不規則三角形網)データセットを作成します。
使用法
-
サーフェス モデリングに使用する TIN は、投影座標系を使用して作図するべきです。地理座標系はお勧めしません。XY 座標が角度単位で表現される場合に、ドローネ三角形分割は保証できないため、傾斜角、体積、見通し線などの距離ベースの計算が正しい結果とならない可能性があるからです。
-
[入力フィーチャクラス] パラメータの表示が見にくい場合は、ツールのダイアログ ボックスのサイズを変更します。
-
適切な操作性と表示パフォーマンスを維持するために、入力フィーチャからに TIN に読み込まれるノードの数を数百万に抑えるようにします。TIN がサポートするノードの最大数は、システムの空いている連続のメモリ領域によって異なります。32 ビットの Windows プラットフォームでの通常の動作環境では、実現可能な TIN の最大サイズは 1000 万~ 1500 万ノードです。より大きなデータセットは、テレインを使った表現が適しています。
構文
パラメータ | 説明 | データ タイプ |
out_tin |
出力 TIN データセット。 | TIN |
spatial_reference (オプション) |
出力 TIN の空間参照 | Coordinate System |
in_features [[in_feature_class, height_field, SF_type, tag_value],...] (オプション) | TIN に含めるフィーチャクラスに対する参照を追加します。フィーチャクラスごとに、サーフェスの定義にどのように使用されるかを示すプロパティを設定する必要があります。 in_feature_class:フィーチャが TIN にインポートされるフィーチャクラス height_field:フィーチャの標高値のソースを指定するフィールドフィーチャの属性テーブルにある任意の数値フィールドが使用できます。フィーチャが Z 値をサポートする場合、Shape.Z を選択するとフィーチャ ジオメトリを読み取ることができます。必要な高さがない場合、キーワード「<なし>」を指定して、標高がサーフェスから内挿される Z 値のないフィーチャを作成します。 SF_type:サーフェス フィーチャ タイプは、フィーチャからインポートされたジオメトリがサーフェスの三角網にどのように組み込まれるかを定義します。ハードまたはソフトの指定を持つオプションは、トライアングル サーフェスがラスタに変換される場合に、フィーチャ エッジが急激な勾配変化と緩慢な勾配変化のどちらを表すかを示します。次のキーワードが利用できます。
tag_value:サーフェス フィーチャ タイプを値の塗りつぶしに設定する場合に使用される、フィーチャクラスの属性テーブルからの整数フィールドタグ値の塗りつぶしは、境界が三角形分割にブレークラインとして適用されるトライアングル属性の基本形として使用されます。デフォルトでは「<なし>」に設定されます。 | Value Table |
constrained_delaunay (オプション) |
TIN のブレークラインで使用される三角形分割法を指定します。
| Boolean |
コードのサンプル
次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.CreateTin_3d("NewTIN", "Coordinate Systems/Projected Coordinate Systems/State Plane/NAD 1983 (Feet)/NAD 1983 StatePlane California II FIPS 0402 (Feet).prj", "points.shp Shape.Z masspoints", "constrained_delaunay")
次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。
'''****************************************************************************
Name: Define Data Boundary of LAS File
Description: This script demonstrates how to delineate data boundaries of
LAS files with irregularly clustered points. It is intended for
use as a script tool with one input LAS file.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
# Set local variables
inLas = arcpy.GetParameterAsText(0) #input LAS file
ptSpacing = arcpy.GetParameterAsText(1) # LAS point spacing
classCode = arcpy.GetParameterAsText(2) # List of integers
returnValue = arcpy.GetParameterAsText(3) # List of strings
outTin = arcpy.GetParameterAsText(4) # TIN created to delineate data area
outBoundary = arcpy.GetParameterAsText(5) # Polygon boundary file
try:
arcpy.CheckOutExtension("3D")
# Execute LASToMultipoint
arcpy.AddMessage("Creating multipoint features from LAS...")
lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code,
"ANY_RETURNS", "", sr, inFormat, zfactor)
# Execute CreateTin
arcpy.AddMessage("Creating TIN dataset...")
arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
.format(lasMP), "Delaunay")
# Execute CopyTin
arcpy.AddMessage("Copying TIN to delineate data boundary...")
arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
# Execute DelineateTinDataArea
arcpy.AddMessage("Delineating TIN boundary...")
maxEdge = ptSpacing * 4
arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
# Execute TinDomain
arcpy.AddMessage("Exporting data area to polygon boundary...")
arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
arcpy.AddMessage("Finished")
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)