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

ライセンス レベル:BasicStandardAdvanced

サマリ

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

使用法

構文

CreateTerrain_3d (in_feature_dataset, out_terrain_name, average_point_spacing, {max_overview_size}, {config_keyword}, {pyramid_type}, {windowsize_method}, {secondary_thinning_method}, {secondary_thinning_threshold})
パラメータ説明データ タイプ
in_feature_dataset

テレイン データセットの作成先となるフィーチャ データセットです。

Feature Dataset
out_terrain_name

出力テレイン データセットです。

String
average_point_spacing

テレインの構築に使用されたデータのポイント間の水平方向の平均(名目)距離です。写真測量、LIDAR、および SONAR 調査のために収集されたデータには、通常、既知の間隔があります。この値を使用する必要があります。この間隔がよくわからない場合は、推測で入力せずに、もう一度戻ってデータを確認してください。間隔は、フィーチャ データセットの座標系の横方向の単位で指定されます。

Double
max_overview_size
(オプション)

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

Long
config_keyword
(オプション)

ArcSDE のコンフィグレーション キーワードです。コンフィグレーション キーワードは、データベースの格納を最適化するのに使用します。通常、これはデータベース管理者が設定します。

String
pyramid_type
(オプション)

テレイン ピラミッドを構築するのに使用するポイントの間引き処理です。

  • WINDOWSIZE[ウィンドウ サイズ メソッド] パラメータで指定した基準を使用して、各ピラミッド レベルの特定のウィンドウ サイズで定義された領域のデータ ポイントを選択することによって、間引き処理を実行します。
  • ZTOLERANCEデータ ポイントの最大解像度を基準とする各ピラミッド レベルの垂直方向の精度を指定して、間引き処理を実行します。
String
windowsize_method
(オプション)

ウィンドウ サイズで定義される領域のポイントを選択するのに使用される基準です。このパラメータは、WINDOWSIZE が [ピラミッド タイプ] パラメータで指定される場合にのみ適用可能です。

  • ZMIN最小標高値を持つポイント
  • ZMAX最大標高値を持つポイント
  • ZMEANすべての値の平均値に最も近い標高値を持つポイント
  • ZMINMAX最小標高値と最大標高値を持つポイント
String
secondary_thinning_method
(オプション)

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

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

「ウィンドウ サイズ」フィルタの二次間引きを有効にするときに使用する垂直方向の閾値です。データの垂直精度以上の値を設定する必要があります。

Double

コードのサンプル

CreateTerrain(テレインの作成)の例 1(Python ウィンドウ)

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

import arcpy
from arcpy import env

arcpy.CheckOutExtension('3D')
env.workspace = 'C:/data'
arcpy.CreateTerrain_3d('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
import exceptions, sys, traceback
from arcpy import env

# 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:
    arcpy.CheckOutExtension("3D")
    # 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:
    # 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)
finally:
    arcpy.CheckInExtension("3D")

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: 次のものが必要 3D Analyst
ArcGIS for Desktop Standard: 次のものが必要 3D Analyst
ArcGIS for Desktop Advanced: 次のものが必要 3D Analyst
7/28/2014