Skip To Content

Interpolate Shape


Creates 3D features by interpolating z-values from a surface.

Learn more about how Interpolate Shape works


Interpolate Shape illustration


  • When using natural neighbors interpolation, consider specifying a sampling distance that's equal to or above half of the average point spacing of the data points in the surface.

  • When using the Interpolate Vertices Only option, features with vertices that fall outside the data area of the surface will not be part of the output.


InterpolateShape_3d (in_surface, in_feature_class, out_feature_class, {sample_distance}, {z_factor}, {method}, {vertices_only}, {pyramid_level_resolution})
ParameterExplanationData Type

The surface to use for interpolating z-values.

LAS Dataset Layer; Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer

The input features to process.

Feature Layer

The feature class that will be produced by this tool.

Feature Class

The spacing at which z-values will be interpolated. By default, this is a raster dataset's cell size or a triangulated surface's natural densification.


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.


Interpolation method used to determine elevation values for the output features. The available options depend on the surface type being used:

  • BILINEARAn interpolation method exclusive to the raster surface which determines cell values from the four nearest cells. This is the only option available for a raster surface.
  • LINEAR Default interpolation method for TIN, terrain, and LAS dataset. Obtains elevation from the plane defined by the triangle that contains the XY location of a query point.
  • NATURAL_NEIGHBORS Obtains elevation by applying area-based weights to the natural neighbors of a query point.
  • CONFLATE_ZMIN Obtains elevation from the smallest Z value found among the natural neighbors of a query point.
  • CONFLATE_ZMAX Obtains elevation from the largest Z value found among the natural neighbors of a query point.
  • CONFLATE_NEAREST Obtains elevation from the nearest value among the natural neighbors of a query point.
  • CONFLATE_CLOSEST_TO_MEAN Obtains elevation from the Z value that is closest to the average of all the natural neighbors of a query point.

Specifies whether the interpolation will only occur along the vertices of an input feature, thereby ignoring the sample distance option.

  • DENSIFYInterpolates using the sampling distance. This is the default.
  • VERTICES_ONLYInterpolates along the vertices.

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

InterpolateShape example 1 (Python window)

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

arcpy.env.workspace = "C:/data"
arcpy.InterpolateShape_3d("my_tin", "roads.shp", "roads_interp.shp")
InterpolateShape example 2 (stand-alone script)

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

Name: InterpolateShape Example
Description: This script demonstrates how to use InterpolateShape
             on all 2D features in a target workspace.
# Import system modules
import arcpy

# Set local variables
inWorkspace = arcpy.GetParameterAsText(0)
surface = arcpy.GetParameterAsText(1)

    # Set default workspace
    arcpy.env.workspace = inWorkspace
    # Create list of feature classes in target workspace
    fcList = arcpy.ListFeatureClasses()
    if fcList:
        for fc in fcList:
            desc = arcpy.Describe(fc)
            # Find 2D features
            if not desc.hasZ:
                # Set Local Variables
                outFC = "{0}_3D.shp".format(desc.basename)
                method = "BILINEAR"
                # Execute InterpolateShape
                arcpy.ddd.InterpolateShape(surface, fc, outFC, 
                                           10, 1, method, True)
                print("{0} is not a 2D feature.".format(fc))
        print("No feature classes were found in {0}.".format(env.workspace))
except arcpy.ExecuteError:
except Exception as err:

Licensing information

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

Related topics