サマリ
新しいテレイン データセットを作成します。
使用法
[平均ポイント間隔] パラメーターの値には、テレインで使用されるデータの適切な近似値が反映されている必要があります。それは、この値が、データ解析と表示パフォーマンスの最適化に使用されるテレインの内部タイルのサイズを定義するのに使用されるためです。各タイルは近似させて、含むソースの標高ポイントが 200,000 を超えないようにします。収集されたデータの密度が場所によって大幅に異なる場合は、より小さな間隔を値として使用します。
テレインを完成させるには、[テレイン ピラミッド レベルの追加 (Add Terrain Pyramid Level)] を使用してピラミッド定義を指定し、[テレインにフィーチャクラスを追加 (Add Feature Class To Terrain)] を使用してサーフェスに適用するデータ ソースを参照し、最後に [テレインの構築 (Build Terrain)] を使用してテレインの構築を完了します。
テレインを構築するジオプロセシング ツールは、Python スクリプトと ModelBuilder でのデータ処理を自動化することを想定しています。対話的に新しいテレインを作成する場合は、ArcCatalog または [カタログ] ウィンドウでテレイン ウィザード を使用することを検討してください。テレイン ウィザードにアクセスし、フィーチャ データセットを右クリックして、[新規作成] > [テレイン] の順にクリックします。
構文
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 (オプション) | エンタープライズ データベースのテレインのストレージを最適化するためのコンフィグレーション キーワードです。 | String |
pyramid_type (オプション) | テレイン ピラミッドを構築するのに使用するポイントの間引き処理です。
| String |
windowsize_method (オプション) | ウィンドウ サイズで定義される領域のポイントを選択するのに使用される基準です。このパラメーターは、pyramid_type パラメーターで WINDOWSIZE を指定した場合にのみ適用されます。
| String |
secondary_thinning_method (オプション) | 間引き処理の追加オプションを指定して、ウィンドウ サイズのピラミッドが使用されているときに平坦なエリアで使用されるポイントの数を減らします。エリアのポイントの高さが [追加間引き処理の閾値] パラメーターに指定された値内にある場合、そのエリアは平坦であると見なされます。その効果は、ピラミッド レベルの解像度が高いほど明白になります。より小さなエリアは、より大きなエリアよりも平坦である可能性が高いためです。
| String |
secondary_thinning_threshold (オプション) | WINDOWSIZE フィルターの二次間引きを有効にするときに使用する垂直方向の閾値です。データの垂直精度以上の値を設定する必要があります。 | 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