TIN の作成 (Create TIN) (3D Analyst)

概要

TIN (Triangulated Irregular Networks) データセットを作成します。

使用法

  • XY 単位が球面座標系で表されている場合、ドローネ三角形分割法のルールを有効に適用できないため、地理座標系を使用して TIN を作成するのは避けてください。

  • サーフェス フィーチャ タイプは、入力フィーチャがトライアングル サーフェスの定義にどのように寄与するかを定義します。

    • ポイント フィーチャを標高点として指定すると、サーフェスの三角形分割に使用される Z 値を持つデータ ノードを提供できます。
    • ライン フィーチャを標高点およびブレークラインとして指定すると、稜線、海岸線、舗装端などの、傾斜に不連続線を含むサーフェスに沿った位置を表現することができます。
    • また、ポリゴン フィーチャを、データ エリアを定義するクリップ フィーチャとともに、標高点およびブレークラインとして指定すると、一定の Z 値を持つ領域 (水域など) を定義するフィーチャに置き換えたり、データが存在しない内部エリアを示すフィーチャを消去することができます。
  • TIN がサポートするノードの最大数は、主に、コンピューターの利用可能な空いている連続のメモリ領域によって変わります。素早い表示パフォーマンスと全体的な操作性を維持するために、ノードの総数を 600 万個以下に制限することを検討してください。これよりも大きいトライアングル サーフェスは、多重解像度のテレイン データセットを使用すると最適に管理されます。

  • 作成された TIN をバージョン 10.0 よりも前の ArcGIS Desktop で使用する場合は、TIN 格納バージョン環境設定を PRE_10.0 に設定します。

構文

arcpy.3d.CreateTin(out_tin, {spatial_reference}, {in_features}, {constrained_delaunay})
パラメーター説明データ タイプ
out_tin

生成される TIN データセット。

TIN
spatial_reference
(オプション)

出力 TIN の空間参照は、投影座標系に設定する必要があります。地理座標系はお勧めしません。XY 座標が角度単位で表現される場合に、ドローネ三角形分割は保証できないため、傾斜角、体積、見通し線などの距離ベースの計算の精度に悪影響を及ぼす可能性があるためです。

Coordinate System
in_features
[[in_features, height_field, SF_type, tag_value],...]
(オプション)

TIN の定義に寄与する入力フィーチャおよびそれらに関連するプロパティ。

  • in_features - TIN にインポートされるジオメトリを持つフィーチャ。
  • 高さフィールド - 入力フィーチャの標高ソース。フィーチャの属性テーブルにある任意の数値フィールドが指定できます。3D フィーチャの Z 値には Shape.Z、ジオメトリに格納されている M 値には Shape.M が指定できます。<None> キーワードを選択すると、フィーチャの標高が周囲のサーフェスから内挿されます。
  • sf_type - TIN サーフェスの定義での入力フィーチャの役割。有効なオプションは、入力フィーチャのジオメトリによって変わります。ポイント フィーチャとマルチポイント フィーチャを Mass_Points として定義できます。これにより、標高値が TIN データ ノードとして格納されるようになります。Mass_Points または Hard_Line を指定することによって、ライン フィーチャを Soft_Line またはブレークラインとして指定できます。ポリゴン フィーチャは、Hard_Clip または Soft_Clip を指定することによって内挿の境界を表し、Hard_Erase または Soft_Erase を選択することによってデータを含まない内部領域を表し、Hard_Replace または Soft_Replace を指定することによって一定の高さのエリアを表します。また、ポリゴンは、Hardvalue_Fill または Softvalue_Fill を指定することによって、整数属性値の割り当てに使用することもできます。
  • tag_field - 入力フィーチャの属性テーブル内の整数フィールドから生成された数値属性。この属性の値を使用して、属性の基本形式を TIN のデータ エレメントに割り当てることができます。<None> を指定すると、タグ値が割り当てられません。
Value Table
constrained_delaunay
(オプション)

TIN のブレークラインで使用される三角形分割法を指定します。

  • DELAUNAYTIN はドローネ基準に適合する三角形を使用します。この場合、ブレークラインの各セグメントが高密度化されて複数の三角形エッジが生成されることがあります。これがデフォルトです。
  • CONSTRAINED_DELAUNAYTIN は制限付きドローネ三角形分割法を使用します。これを使用すると、各セグメントは単一のエッジとして追加されます。ドローネ三角形分割法の規則は、ブレークライン以外の場所に適用され、それは高密度化されません。
Boolean

コードのサンプル

CreateTIN (TIN の作成) の例 1 (Python ウィンドウ)

次のサンプルは、Python ウィンドウでこのツールを使用する方法を示しています。

arcpy.env.workspace = "C:/data"
arcpy.CreateTin_3d("NewTIN", "NAD 1983 StatePlane California II FIPS 0402 (Feet).prj", 
                   "points.shp Shape.Z masspoints", "constrained_delaunay")
CreateTIN (TIN の作成) の例 2 (スタンドアロン スクリプト)

次のサンプルは、スタンドアロン 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

# 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:
    # Execute LASToMultipoint
    lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
    arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code, 
                             "ANY_RETURNS", "", sr, inFormat, zfactor)
    # Execute CreateTin
    arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
                       .format(lasMP), "Delaunay")
    # Execute CopyTin
    arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
    # Execute DelineateTinDataArea
    maxEdge = ptSpacing * 4
    arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
    # Execute TinDomain
    arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
        
except arcpy.ExecuteError:
    print(arcpy.GetMessages())
except Exception as err:
    print(err)

ライセンス情報

  • Basic: 次のものが必要 3D Analyst
  • Standard: 次のものが必要 3D Analyst
  • Advanced: 次のものが必要 3D Analyst

関連トピック