Определение областей данных TIN (3D Analyst)
Резюме
Переопределяет область данных (зону интерполяции) поверхности TIN (Triangulated Irregular Network), на основании длины ребер ее треугольника.
Рисунок
Использование
-
В результате работы этого инструмента будет изменена исходная сеть TIN. Если изменять входные данные не требуется, создайте копию набора данных с помощью инструмента Копировать TIN (Copy TIN).
Перед началом классификации по длине ребра все треугольники маркируются как внутренние. Это позволяет отменить предыдущую классификацию области данных. Если результат, полученный после одной итерации, неудовлетворителен, можно запустить инструмент еще раз; при этом снова получать исходные данные не требуется.
Максимальные/минимальные значения длин ребер, полученные на основе характеристик вогнутости в исходных измерениях TIN, можно удалить из области корректных данных TIN с помощью данного инструмента. Треугольники, у которых хотя бы одно ребро больше, чем Максимальная длина ребра (Maximum Edge Length), маскируются как области NoData.
Примечание:Значение Максимальная длина ребра (Maximum Edge Length) лучше всего определять исходя из среднего интервала между узлами TIN в пределах областей, являющихся зонами корректных данных. Используйте значение, которое больше среднего интервала. Для успешного применения данного инструмента следует хорошо знать природу данных, использующихся для построения TIN.
-
Параметр Метод (Method) задает треугольники, которые будут обрабатываться.
Примечание:Если части данных о вогнутости относятся к внешним крайним точкам TIN, используйте опцию PERIMETER_ONLY.
Синтаксис
Параметр | Объяснение | Тип данных |
in_tin |
Входной TIN. | TIN Layer |
max_edge_length |
Двухмерное расстояние, определяющее максимальную длину ребра треугольника TIN в области данных TIN. Треугольники, для которых длина одного или нескольких ребер превышает указанное значение, будут считаться не входящими в зону интерполяции TIN, не будут отображаться на картах и не будут использоваться при анализе поверхности. | Double |
method (дополнительно) |
Метод определения границ области данных TIN.
| String |
Пример кода
В следующем примере показано использование этого инструмента в окне Python:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.DelineateTinDataArea_3d("elevation", 10, "PERIMETER_ONLY")
В следующем примере показано использование этого инструмента в автономном скрипте 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
import exceptions, sys, traceback
# 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:
arcpy.CheckOutExtension("3D")
# Execute LASToMultipoint
arcpy.AddMessage("Creating multipoint features from LAS...")
lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code,
"ANY_RETURNS", "", sr, inFormat, zfactor)
# Execute CreateTin
arcpy.AddMessage("Creating TIN dataset...")
arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
.format(lasMP), "Delaunay")
# Execute CopyTin
arcpy.AddMessage("Copying TIN to delineate data boundary...")
arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
# Execute DelineateTinDataArea
arcpy.AddMessage("Delineating TIN boundary...")
maxEdge = ptSpacing * 4
arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
# Execute TinDomain
arcpy.AddMessage("Exporting data area to polygon boundary...")
arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
arcpy.AddMessage("Finished")
arcpy.CheckInExtension("3D")
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)