Создать Terrain (Create Terrain) (3D Analyst)
Резюме
Создает новый набор данных terrain.
Использование
Набор данных terrain должен располагаться в наборе классов объектов.
-
Параметр Средний интервал между точками (Average Point Spacing) требует определения исходя из данных, которые добавляются в terrain. Значение может быть приблизительным, оно не должно быть точным. Если данные собираются из источников, имеющих значительно отличающиеся плотности, присвойте больший вес меньшим расстояниям при определении этого значения.
Интервал между точками используется для определения размер листа terrain, который применяется для оптимизации анализа данных и ускорения быстродействия. Каждый лист может содержать не более, чем 200000 точек высот источника.
Используйте Добавить пирамидный слой terrain, затем Добавить класс объекта в terrain и далее Построить terrain, чтобы закончить определение terrain и построить готовый к использованию набор данных terrain.
-
Инструменты геообработки для создания terrain приводятся в действие процедурами автоматизации данных в скриптах Python и ModelBuilder. Для интерактивного создания нового набора данных terrain можно выбрать Мастер построения terrain в ArcCatalog или в окне Каталога. Для запуска Мастера построения terrain щелкните правой кнопкой по набору пространственных данных и выберите Новый > Terrain.
Синтаксис
Параметр | Объяснение | Тип данных |
in_feature_dataset |
Набор классов объектов, в котором будет создан набор данных terrain. | Feature Dataset |
out_terrain_name |
Выходной набор данных terrain. | String |
average_point_spacing |
В построении terrain используется среднее или номинальное горизонтальное расстояние между точками данных. Для данных фотограмметрии, лидарной и сонарной съемок интервал между точками обычно известен. Cледует использовать именно это значение. Если вы сомневаетесь в значении интервала, следует проверить данные. Интервал дается в горизонтальных единицах измерения в координатной системе набора пространственных данных. | Double |
max_overview_size (дополнительно) |
Общий вид terrain дает представление о наборе данных terrain и схож с грубым эскизом изображения. Максимальный размер – это верхний лимит числа точек измерений, выбранных для создания обзора. | Long |
config_keyword (дополнительно) |
Ключевое слово конфигурации для ArcSDE. Ключевое слово конфигурации используется, чтобы оптимизировать хранение базы данных, и обычно настраивается администратором базы данных. | String |
pyramid_type (дополнительно) |
Метод прореживания данных используется для построения пирамид terrain.
| String |
windowsize_method (дополнительно) |
Критерий, используемый для отбора точек в области, определяется размером окна. Этот параметр применим только тогда, когда в качестве параметра Тип пирамидных слоев (Pyramid Type) указан WINDOWSIZE.
| String |
secondary_thinning_method (дополнительно) |
Указывает дополнительные опции прореживания, чтобы уменьшить число точек на плоской поверхности, при использовании пирамид типа Размер окна. Область расценивается как плоская, если высоты точек внутри нее находятся в указанном пользователем пределе Вторичный порог прореживания (Secondary Thinning Threshold). Этот эффект лучше всего провляется на уровнях пирамидных слоев с высоким разрешением, так как маленькие области более вероятно будут расценены как плоские, нежели большие.
| String |
secondary_thinning_threshold (дополнительно) |
Вертикальный предел используется для активации вторичного прореживания вместе с фильтром Размера окна. Это значение должно устанавливаться равным вертикальной точности данных или большим. | Double |
Пример кода
В следующем примере показано использование этого инструмента в окне 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)
В следующем примере показано использование этого инструмента в автономном скрипте 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")