Create TIN (3D Analyst)
Summary
Creates a TIN dataset.
Usage
-
TINs used for surface modeling should be constructed using projected coordinate systems. Geographic coordinate systems are not recommended. Functions such as slope, volume, and line-of-sight can produce misleading or incorrect results when XY units are expressed in angular measures (for example, decimal degrees).
-
When using the dialog box, you can resize the Input Feature Class properties dialog box to increase its width in case the default column width is too small.
-
The maximum number of nodes supported by a TIN varies relative to free, contiguous, memory resources on the system. Ten to fifteen million nodes generally represent the largest size achievable under normal operating conditions on 32-bit Windows platforms. However, consider capping the number of nodes at a few million to maintain adequate usability and display performance. Larger datasets are best represented using a terrain.
Syntax
Parameter | Explanation | Data Type |
out_tin |
The output TIN dataset. | TIN |
spatial_reference (Optional) |
The spatial reference of the output TIN. | Coordinate System |
in_features [[in_feature_class, height_field, SF_type, tag_value],...] (Optional) | Add references to one or more feature classes that will be included in the TIN. For each feature class you'll need to set properties that indicate how it's used to define the surface. in_feature_class: The feature class whose features will be imported into the TIN. height_field: The field that specifies the source of elevation values for the features. Any numeric field in the feature's attribute table can be used. If the feature supports z-values, the feature geometry can be read by selecting the Shape.Z option. If no height is desired, specify the keyword <None> to create Z-less features whose elevation would be interpolated from the surface. SF_type: The surface feature type defines how the geometry imported from the features are incorporated into the triangulation for the surface. Options with hard or soft designation refer to whether the feature edges represent distinct breaks in slope or a gradual change when the triangulated surface gets converted to a raster. The following keywords are available:
tag_value: The integer field from the attribute table of the feature class that will be used when the surface feature type is set to a value fill option. Tag fill is used as a basic form of triangle attribution whose boundaries are enforced in the triangulation as breaklines. The default option is set to <none>. | Value Table |
constrained_delaunay (Optional) | Specifies the triangulation technique used along the breaklines of the TIN.
| Boolean |
Code Sample
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")
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)