ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Help
  • Sign Out
ArcGIS Desktop

ArcGIS Online

The mapping platform for your organization

ArcGIS Desktop

A complete professional GIS

ArcGIS Enterprise

GIS in your enterprise

ArcGIS Developers

Tools to build location-aware apps

ArcGIS Solutions

Free template maps and apps for your industry

ArcGIS Marketplace

Get apps and data for your organization

  • Documentation
  • Support
Esri
  • Sign In
user
  • My Profile
  • Sign Out

ArcMap

  • Home
  • Get Started
  • Map
  • Analyze
  • Manage Data
  • Tools
  • Extensions

Add Feature Class To Terrain

  • Summary
  • Usage
  • Syntax
  • Code sample
  • Environments
  • Licensing information

Summary

Adds one or more feature classes to a terrain dataset.

Usage

  • Input features must reside in the same feature dataset as the terrain dataset.

  • Terrain dataset must already have one or more pyramid levels defined.

  • Depending on the surface type associated with features added to a terrain, the terrain dataset may need to be rebuilt using Build Terrain. The terrain dataset's Properties dialog box in ArcCatalog and the terrain layer's Properties dialog box in ArcMap both provide an indication as to whether the dataset needs to be rebuilt.

  • Consider enabling the overview option for breakline and polygon surface feature types only if the features contain simplified geometry and are visually relevant for the anticipated display scale. For example, breaklines may not be visible enough to matter at an overview display, whereas a clip polygon would be useful. If the boundary feature is detailed, consider generalizing it and use the coarser representation for the overview. The detailed version should be used at display scales more suited for its resolution of detail.

  • For terrain datasets stored in an enterprise geodatabase:

    • The target terrain cannot be registered as versioned.
    • The input feature class cannot be registered as versioned.

Syntax

arcpy.ddd.AddFeatureClassToTerrain(in_terrain, in_features)
ParameterExplanationData Type
in_terrain

The terrain to which feature classes will be added. The terrain dataset must already have one or more pyramid levels created.

Terrain Layer
in_features
[[in_features, height_field, SF_type, group, min_resolution, max_resolution, overview, embed, embed_name, embed_fields, anchor],...]

Identifies features being added to the terrain. Each feature must reside in the same feature dataset as the terrain and have its role defined through the following properties:

  • Input Features —Name of the feature class being added to the terrain.
  • Height Field —Field containing the feature's height information. Any numeric field can be specified, and z-enabled features can also choose the geometry field. If the <none> option is chosen, z-values are interpolated from the surface.
  • Type —Surface feature type that defines how the features contributes to the terrain. Mass points denote features that contribute z-measurements; breaklines denote linear features with known z-measurements, and several polygon types. Breaklines and polygon-based feature types also have hard and soft qualifiers that define the interpolation behavior around the feature's edges when exporting to raster. Soft features exhibit gradual changes in slope, whereas hard features represent sharp discontinuities.
  • Group —Defines the group of each contributing feature. Unspecification of breaklines and polygon surface features representing the same geographic features at different levels of detail are intended for display at certain scale ranges. Data representing the same geographic features at different levels of detail can be grouped by assigning the same numeric value. For example, assigning two boundary features with a high and low level of detail to the same group would ensure there is no overlap in their associated display scale range.
  • Min/Max Resolution —Defines the range of pyramid resolutions at which the feature is enforced in the terrain. Mass points must use the smallest and largest range of values.
  • Overview —Indicates whether the feature is enforced at the coarsest representation of the terrain dataset. To maximize display performance, make sure that feature classes represented in the overview contain simplified geometry. Only valid for feature types other than mass points.
  • Embed —Setting this option to TRUE indicates the source features will be copied to a hidden feature class that will be referenced by and only available to the terrain. Embedded features will not be directly viewable, as they can only be accessed through terrain tools. Only valid for multipoint features.
  • Embed Name —Name of the embedded feature class. Only applies if the feature is being embedded.
  • Embed Fields —Specifies BLOB field attributes to be retained in the embedded feature class. These attributes can be used to symbolize the terrain. LAS attribution can be stored in BLOB fields of multipoint features through the LAS To Multipoint tool.
  • Anchor —Specifies whether the point feature class will be anchored through all terrain pyramid levels. Anchor points are never filtered or thinned away to ensure they persist in the terrain surface. This option only applies to single-point feature classes.
Value Table

Derived Output

NameExplanationData Type
derived_out_terrain

The updated terrain.

Terrain Layer

Code sample

AddFeatureClassToTerrain 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"
params = "terrain.gdb/terrainFDS/points2 SHAPE masspoints 2 0 10 true false "\
       "points_embed <None> false"
arcpy.AddFeatureClassToTerrain_3d("test.gdb/featuredataset/terrain", params)
AddFeatureClassToTerrain example 2 (stand-alone script)

The following sample demonstrates the use of this tool in a stand-alone Python script.

"""****************************************************************************
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")

Environments

  • Current Workspace
  • Auto Commit

Licensing information

  • Basic: Requires 3D Analyst
  • Standard: Requires 3D Analyst
  • Advanced: Requires 3D Analyst

Related topics

  • An overview of the Data Management toolset
  • Fundamentals of Surfaces
  • Surface formats
  • What is a terrain dataset?
  • Benefits of using terrain datasets
  • Building a terrain dataset with geoprocessing tools
  • Types of source data supported in terrain datasets
  • Data import and load tools for terrain datasets
  • Surface feature type (SFType)
  • Anchor points
  • Embedded feature classes
  • Pyramid resolution bounds
  • Groups

ArcGIS Desktop

  • Home
  • Documentation
  • Support

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

About Esri

  • About Us
  • Careers
  • Esri Blog
  • User Conference
  • Developer Summit
Esri
Tell us what you think.
Copyright © 2021 Esri. | Privacy | Legal