テレインの作成 (Create Terrain) (3D Analyst)

サマリー

テレイン データセットを作成します。

使用法

  • [平均ポイント間隔] パラメーター値には、テレインで使用されるデータの適切な近似値が反映されている必要があります。それは、この値が、データ解析と表示パフォーマンスの最適化に使用されるテレインの内部タイルのサイズを定義するのに使用されるためです。 各タイルは近似させて、含むソースの標高ポイントが 200,000 を超えないようにします。 収集されたデータの密度が場所によって大幅に異なる場合は、より小さな間隔を値として使用します。

  • このツールを実行した後、[テレイン ピラミッド レベルの追加 (Add Terrain Pyramid Level)] を使用してピラミッド定義を指定し、[テレインにフィーチャクラスを追加 (Add Feature Class To Terrain)] を使用してサーフェスに適用するデータ ソースを参照し、[テレインの構築 (Build Terrain)] を使用して (この順番で) テレインの構築を完了します。

パラメーター

ラベル説明データ タイプ
入力フィーチャ データセット

テレイン データセットを格納するフィーチャ データセットです。

Feature Dataset
出力テレイン

テレイン データセットの名前です。

String
平均ポイント間隔

テレインのモデル化に使用されるデータのポイント間の水平方向の平均距離です。 写真測量、LIDAR、およびソナー調査など、センサーをベースとした計測値には通常、既知の間隔があり、これを使用します。 間隔には、フィーチャ データセットの座標系の水平方向の単位を使用します。

Double
最大オーバービュー サイズ
(オプション)

テレインのオーバービューは、画像のサムネイルの概念に似ています。 テレインのオーバービューは、テレイン データセットの最も解像度の低い表現であり、最大サイズは、オーバービューを作成するためにサンプリングされる計測ポイント数の上限です。

Long
コンフィグレーション キーワード
(オプション)

エンタープライズ データベースのテレインのストレージを最適化するために使用されるコンフィグレーション キーワードです。

String
ピラミッド タイプ
(オプション)

テレイン ピラミッドの構築に使用するポイントの間引き方法を指定します。

  • ウィンドウ サイズ[ウィンドウ サイズ方法] パラメーター値を使用して、各ピラミッド レベルの特定のウィンドウ サイズで定義された領域のデータ ポイントが選択されます。 これがデフォルトです。
  • Z 許容値データ ポイントの最大解像度を基準とする各ピラミッド レベルの鉛直方向の精度が指定されます。
String
ウィンドウ サイズ方法
(オプション)

ウィンドウ サイズで定義される領域のポイントを選択する方法を指定します。 このパラメーターは、[ウィンドウ サイズ][ピラミッド タイプ] パラメーターに指定されている場合にのみ適用されます。

  • 最小 Z最小標高値を持つポイントが選択されます。 これがデフォルトです。
  • 最大 Z最大標高値を持つポイントが選択されます。
  • 平均に最も近い Zすべての値の平均値に最も近い標高値を持つポイントが選択されます。
  • 最小および最大 Z最小標高値と最大標高値を持つポイントが選択されます。
String
二次間引き方法
(オプション)

ウィンドウ サイズのピラミッドが使用されているときに平坦なエリアで使用されるポイントの数を減らすために実行される追加の間引きを指定します。 エリアのポイントの高さが [二次間引き処理の閾値] パラメーター値内にある場合、そのエリアは平坦であると見なされます。 その効果は、ピラミッド レベルの解像度が高いほど明白になります。より小さなエリアは、より大きなエリアよりも平坦である可能性が高いためです。

  • なし二次間引き処理を実行しません。 これがデフォルトです。
  • 軽度直線的な不連続性(たとえば、建物の側面や森林の境界)を維持するために、軽度の間引きを行います。 この方法は、地表ポイントと地表以外のポイントの両方を含む LIDAR にお勧めします。 間引きされるポイントは最も少なくなります。
  • 中程度中程度の間引きを行うことで、パフォーマンスと精度のバランスをとります。 この方法は、軽度の間引きほど詳細は保持されませんが、全体的に多くのポイントを除外しつつ、近い結果を生成します。
  • 強度強度の間引きを行うことで、最も多くのポイントを削除しますが、鮮明に描写されたフィーチャが保持される可能性は低くなります。 傾斜がなだらかに変化する傾向のあるサーフェスに、使用を限定します。 たとえば、強度の間引きは、地表 LIDAR や水深測量に効果的です。
String
二次間引き処理の閾値
(オプション)

[ピラミッド タイプ] パラメーターが [ウィンドウ サイズ] に設定されている場合に、フィルターの二次間引きを有効にするときに使用する鉛直方向の閾値です。 データの鉛直精度以上の値を設定します。

Double
三角形分割法
(オプション)

TIN サーフェスを構築するためのドローネ三角形分割法の規則に準拠するためにセグメントを密集化することによって、ブレークライン フィーチャがテレイン サーフェスに組み込まれるかどうかを指定します。

ドローネ三角形分割法は、ブレークライン フィーチャを密集化して、TIN ベースのサーフェスを解析するときに通常不適切な結果を生成する細長い三角形の作成を回避する方法で、ブレークライン フィーチャ周囲のポイントに対処します。 また、Natural Neighbor 内挿法とティーセン (ボロノイ) ポリゴンの生成は、ドローネ三角形分割法への適合に対してのみ実行できます。

制限付きドローネ三角形分割法はブレークライン フィーチャを密集化せず、ブレークライン セグメントをエッジとして TIN サーフェスに組み込みます。 三角形分割によって変更されない (つまり、複数のエッジに分割されない) ことが保証されるエッジを明示的に定義する必要があるときには、このオプションを検討します。

  • ドローネブレークラインを密集化して、周囲のポイントに対処するドローネ三角形を構築します。 これがデフォルトです。
  • 制限付きドローネブレークラインを密集化しません。
String

派生した出力

ラベル説明データ タイプ
出力テレイン

新しいテレイン データセット。

Terrain

arcpy.ddd.CreateTerrain(in_feature_dataset, out_terrain_name, average_point_spacing, {max_overview_size}, {config_keyword}, {pyramid_type}, {windowsize_method}, {secondary_thinning_method}, {secondary_thinning_threshold}, {triangulation_method})
名前説明データ タイプ
in_feature_dataset

テレイン データセットを格納するフィーチャ データセットです。

Feature Dataset
out_terrain_name

テレイン データセットの名前です。

String
average_point_spacing

テレインのモデル化に使用されるデータのポイント間の水平方向の平均距離です。 写真測量、LIDAR、およびソナー調査など、センサーをベースとした計測値には通常、既知の間隔があり、これを使用します。 間隔には、フィーチャ データセットの座標系の水平方向の単位を使用します。

Double
max_overview_size
(オプション)

テレインのオーバービューは、画像のサムネイルの概念に似ています。 テレインのオーバービューは、テレイン データセットの最も解像度の低い表現であり、最大サイズは、オーバービューを作成するためにサンプリングされる計測ポイント数の上限です。

Long
config_keyword
(オプション)

エンタープライズ データベースのテレインのストレージを最適化するために使用されるコンフィグレーション キーワードです。

String
pyramid_type
(オプション)

テレイン ピラミッドの構築に使用するポイントの間引き方法を指定します。

  • WINDOWSIZEwindowsize_method パラメーター値を使用して、各ピラミッド レベルの特定のウィンドウ サイズで定義された領域のデータ ポイントが選択されます。 これがデフォルトです。
  • ZTOLERANCEデータ ポイントの最大解像度を基準とする各ピラミッド レベルの鉛直方向の精度が指定されます。
String
windowsize_method
(オプション)

ウィンドウ サイズで定義される領域のポイントを選択する方法を指定します。 このパラメーターは、pyramid_type パラメーターに WINDOWSIZE を指定した場合にのみ適用されます。

  • ZMIN最小標高値を持つポイントが選択されます。 これがデフォルトです。
  • ZMAX最大標高値を持つポイントが選択されます。
  • ZMEANすべての値の平均値に最も近い標高値を持つポイントが選択されます。
  • ZMINMAX最小標高値と最大標高値を持つポイントが選択されます。
String
secondary_thinning_method
(オプション)

ウィンドウ サイズのピラミッドが使用されているときに平坦なエリアで使用されるポイントの数を減らすために実行される追加の間引きを指定します。 エリアのポイントの高さが secondary_thinning_threshold パラメーター値内にある場合、そのエリアは平坦であると見なされます。 その効果は、ピラミッド レベルの解像度が高いほど明白になります。より小さなエリアは、より大きなエリアよりも平坦である可能性が高いためです。

  • NONE二次間引き処理を実行しません。 これがデフォルトです。
  • MILD直線的な不連続性(たとえば、建物の側面や森林の境界)を維持するために、軽度の間引きを行います。 この方法は、地表ポイントと地表以外のポイントの両方を含む LIDAR にお勧めします。 間引きされるポイントは最も少なくなります。
  • MODERATE中程度の間引きを行うことで、パフォーマンスと精度のバランスをとります。 この方法は、軽度の間引きほど詳細は保持されませんが、全体的に多くのポイントを除外しつつ、近い結果を生成します。
  • STRONG強度の間引きを行うことで、最も多くのポイントを削除しますが、鮮明に描写されたフィーチャが保持される可能性は低くなります。 傾斜がなだらかに変化する傾向のあるサーフェスに、使用を限定します。 たとえば、強度の間引きは、地表 LIDAR や水深測量に効果的です。
String
secondary_thinning_threshold
(オプション)

pyramid_type パラメーターが WINDOWSIZE に設定されている場合に、フィルターの二次間引きを有効にするときに使用する鉛直方向の閾値です。 データの鉛直精度以上の値を設定します。

Double
triangulation_method
(オプション)

TIN サーフェスを構築するためのドローネ三角形分割法の規則に準拠するためにセグメントを密集化することによって、ブレークライン フィーチャがテレイン サーフェスに組み込まれるかどうかを指定します。

ドローネ三角形分割法は、ブレークライン フィーチャを密集化して、TIN ベースのサーフェスを解析するときに通常不適切な結果を生成する細長い三角形の作成を回避する方法で、ブレークライン フィーチャ周囲のポイントに対処します。 また、Natural Neighbor 内挿法とティーセン (ボロノイ) ポリゴンの生成は、ドローネ三角形分割法への適合に対してのみ実行できます。

制限付きドローネ三角形分割法はブレークライン フィーチャを密集化せず、ブレークライン セグメントをエッジとして TIN サーフェスに組み込みます。 三角形分割によって変更されない (つまり、複数のエッジに分割されない) ことが保証されるエッジを明示的に定義する必要があるときには、このオプションを検討します。

  • DELAUNAYブレークラインを密集化して、周囲のポイントに対処するドローネ三角形を構築します。 これがデフォルトです。
  • CONSTRAINED_DELAUNAYブレークラインを密集化しません。
String

派生した出力

名前説明データ タイプ
derived_out_terrain

新しいテレイン データセット。

Terrain

コードのサンプル

CreateTerrain の例 1 (Python ウィンドウ)

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

arcpy.env.workspace = 'C:/data'
arcpy.ddd.CreateTerrain('source.gdb/Redlands', 'Redlands_terrain',  5,
                      50000, '', 'WINDOWSIZE', 'ZMIN', 'NONE', 1)
CreateTerrain の例 2 (スタンドアロン スクリプト)

次のサンプルは、スタンドアロン Python スクリプトでこのツールを使用する方法を示しています。

"""****************************************************************************
Name: Create Terrain from TIN
Description: This script demonstrates how to create a terrain dataset using
             features extracted from a TIN. It is particularly useful in
             situations where the source data used in the TIN is not available,
             and the amount of data stored in the TIN proves to be too large
             for the TIN. The terrain's scalability will allow improved
             display performance and faster analysis. The script is designed
             to work as a script tool with 5 input arguments.
****************************************************************************"""
# Import system modules
import arcpy

# Set local variables
tin = arcpy.GetParameterAsText(0) # TIN used to create terrain
gdbLocation = arcpy.GetParameterAsText(1) # Folder that will store terran GDB
gdbName = arcpy.GetParameterAsText(2) # Name of terrain GDB
fdName = arcpy.GetParameterAsText(3) # Name of feature dataset
terrainName = arcpy.GetParameterAsText(4) # Name of terrain

try:
    # Create the file gdb that will store the feature dataset
    arcpy.management.CreateFileGDB(gdbLocation, gdbName)
    gdb = '{0}/{1}'.format(gdbLocation, gdbName)
    # Obtain spatial reference from TIN
    SR = arcpy.Describe(tin).spatialReference
    # Create the feature dataset that will store the terrain
    arcpy.management.CreateFeatureDataset(gdb, fdName, SR)
    fd = '{0}/{1}'.format(gdb, fdName)
    # Export TIN elements to feature classes for terrain
    arcpy.AddMessage("Exporting TIN footprint to define terrain boundary...")
    boundary = "{0}/boundary".format(fd)
    # Execute TinDomain
    arcpy.ddd.TinDomain(tin, tinDomain, 'POLYGON')
    arcpy.AddMessage("Exporting TIN breaklines...")
    breaklines = "{0}/breaklines".format(fd)
    # Execute TinLine
    arcpy.ddd.TinLine(tin, breaklines, "Code")
    arcpy.AddMessage("Exporting TIN nodes...")
    masspoints = "{0}/masspoints".format(fd)
    # Execute TinNode
    arcpy.ddd.TinNode(sourceTIN, TIN_nodes)
    arcpy.AddMessage("Creating terrain dataset...")
    terrain = "terrain_from_tin"
    # Execute CreateTerrain
    arcpy.ddd.CreateTerrain(fd, terrainName, 10, 50000, "",
                            "WINDOWSIZE", "ZMEAN", "NONE", 1)
    arcpy.AddMessage("Adding terrain pyramid levels...")
    terrain = "{0}/{1}".format(fd, terrainName)
    pyramids = ["20 5000", "25 10000", "35 25000", "50 50000"]
    # Execute AddTerrainPyramidLevel
    arcpy.ddd.AddTerrainPyramidLevel(terrain, "", pyramids)
    arcpy.AddMessage("Adding features to terrain...")
    inFeatures = "{0} Shape softclip 1 0 10 true false boundary_embed <None> "\
             "false; {1} Shape masspoints 1 0 50 true false points_embed "\
             "<None> false; {2} Shape softline 1 0 25 false false lines_embed "\
             "<None> false".format(boundary, masspoints, breaklines)
    # Execute AddFeatureClassToTerrain
    arcpy.ddd.AddFeatureClassToTerrain(terrain, inFeatures)
    arcpy.AddMessage("Building terrain...")
    # Execute BuildTerrain
    arcpy.ddd.BuildTerrain(terrain, "NO_UPDATE_EXTENT")
    arcpy.GetMessages()

except arcpy.ExecuteError:
    print(arcpy.GetMessages())
except Exception as err:
    print(err)

関連トピック