Surface Contour (3D Analyst)


Creates contour lines derived from a terrain, TIN, or LAS dataset surface.

Learn more about how Surface Contour works


TIN Contour illustration


  • The output feature class is 2D and contains an attribute with contour values.

  • Use the interval and base contour options to tailor the extent and resolution of the output feature class.

  • Use the out contour field data to convert the feature class to 3D.

  • In certain instances, the last valid contour line may not be produced when creating contours using TIN surfaces. This is an algorithmic limitation common to computer contouring software. To ensure that all valid contours are generated, add a very small negative value to the Base Contour field to slightly shift the data.

  • The Z factor parameter only affects results for rasters and TINs, not terrain datasets. When working with terrain datasets you can specify a contour interval that has the z factor built in to it. For example, if you want a one-foot contour interval and your terrain dataset surface is in meters, specify a contour interval of 0.3048. You can also convert the terrain dataset to a raster or TIN using either the Terrain To Raster or Terrain To TIN geoprocessing tools.


arcpy.3d.SurfaceContour(in_surface, out_feature_class, interval, {base_contour}, {contour_field}, {contour_field_precision}, {index_interval}, {index_interval_field}, {z_factor}, {pyramid_level_resolution})
ParameterExplanationData Type

The TIN, terrain, or LAS dataset surface to process.

LAS Dataset Layer; Terrain Layer; TIN Layer

The feature class that will be produced by this tool.

Feature Class

The interval between the contours.


Defines the starting Z value from which the contour interval is either added or subtracted to delineate contours. The default value is 0.0.


The field that stores the contour value associated with each line in the output feature class.


The precision of the contour field. Zero specifies an integer, and the numbers 1–9 indicate how many decimal places the field will contain. By default, the field will be an integer (0).


Index contours are commonly used as a cartographic aid for assisting in the visualization of contour lines. The index interval is typically five times larger than the contour interval. Use of this parameter adds an integer field defined by the index_interval_field to the attribute table of the output feature class, where a value of 1 denotes the index contours.


The name of the field used to identify index contours. This will only be used if the index_interval is defined. By default, the field name is Index.


The factor by which z-values will be multiplied. This is typically used to convert Z linear units to match XY linear units. The default is 1, which leaves elevation values unchanged. This parameter is disabled if the spatial reference of the input surface has a Z datum with a specified linear unit.


The z-tolerance or window-size resolution of the terrain pyramid level that will be used by this tool. The default is 0, or full resolution.


Code sample

SurfaceContour example 1 (Python window)

The following sample demonstrates the use of this tool in the Python window.

arcpy.env.workspace = "C:/data"
arcpy.SurfaceContour_3d("sample.gdb/featuredataset/terrain", "contour.shp", 10)
SurfaceContour example 2 (stand-alone script)

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

Name: SurfaceContour Example
Description: This script demonstrates how to use the
             SurfaceContour tool.


# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data"

# Set Local Variables
inSurface = "sample.gdb/featuredataset/terrain"
outContour = arcpy.CreateUniqueName("contour.shp")

#Execute SurfaceContour
arcpy.SurfaceContour_3d(inSurface, outContour, 10)

Licensing information

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

Related topics