Summary
Creates a triangulated irregular network (TIN) dataset.
Usage
-
Avoid creating a TIN using a geographic coordinate system, as the Delaunay triangulation rule cannot be effectively enforced when the XY units are expressed in spherical coordinates.
-
The surface feature type defines how the input features will contribute to the definition of the triangulated surface.
- Point features can be specified as mass points, which provide data nodes whose Z values are used in the triangulation of the surface.
- Line features can be specified as mass points and breaklines, which represent locations along a surface with linear discontinuities in slope, such as ridge lines, shore lines, pavement edges, building footprints, and so on.
- Polygon features can also be specified as mass points and breaklines, along with clip features that define the data area, replace features that define regions with constant Z values (e.g. water bodies), and erase features that indicate interior areas where data does not exist.
-
The maximum number of nodes supported by a TIN depends primarily on the free, contiguous memory resources available on the computer. Consider limiting the total number of nodes to under 6 million to maintain responsive display performance and overall usability. Larger triangulated surfaces are best managed using a multi-resolution terrain dataset.
-
Set the TIN storage version environment setting to PRE_10.0 if the TIN being created will be used in versions of ArcGIS Desktop earlier than 10.0.
Syntax
arcpy.ddd.CreateTin(out_tin, {spatial_reference}, {in_features}, {constrained_delaunay})
Parameter | Explanation | Data Type |
out_tin | The TIN dataset that will be generated. | TIN |
spatial_reference (Optional) | The spatial reference of the output TIN should be set to a projected coordinate system. Geographic coordinate systems are not recommended because Delaunay triangulation cannot be guaranteed when the XY coordinates are expressed in angular units, which could have an adverse impact on the accuracy of distance-based calculations, such as slope, volume, and line of sight. | Coordinate System |
in_features [[in_features, height_field, SF_type, tag_value],...] (Optional) | The input features and their related properties that will contribute to the definition of the TIN.
| Value Table |
constrained_delaunay (Optional) | Specifies the triangulation technique used along the breaklines of the TIN.
| Boolean |
Code sample
CreateTin example 1 (Python window)
The following sample demonstrates the use of this tool in the Python window.
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.CreateTin_3d("NewTIN", "Coordinate Systems/Projected Coordinate Systems/State Plane/NAD 1983 (Feet)/NAD 1983 StatePlane California II FIPS 0402 (Feet).prj", "points.shp Shape.Z masspoints", "constrained_delaunay")
CreateTin example 2 (stand-alone script)
The following sample demonstrates the use of this tool in a stand-alone Python script.
'''****************************************************************************
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)
Environments
Licensing information
- Basic: Requires 3D Analyst
- Standard: Requires 3D Analyst
- Advanced: Requires 3D Analyst