How Surface Contour (3D Analyst) works
The Surface Contour tool uses an input terrain dataset or triangulated irregular network (TIN) to calculate contours that are written to an output feature class. The output is a 2D polyline feature class with contour heights assigned as attributes. An optional contour index field can be added that's used to differentiate index contours from regular contours.
Contours are generated directly from the terrain dataset or TIN within its zone of interpolation. Linear interpolation is used. With this interpolation, each triangle is treated as a plane. Portions of individual contours within a triangle are straight. Any change in direction occurs only when a contour passes from one triangle into another. This type of contouring produces engineering-quality contours, representing an exact linear interpretation of the surface model.
Linear interpolation is generally considered conservative and often represents the best estimate for analysis. The resulting contours are not smooth, though, and generally aren't used for aesthetic cartographic output. If smoother contours are desired, consider using either the Terrain To Raster or TIN To Raster conversion tool with the Natural Neighbors interpolant. Once a raster dataset has been created, use the Raster Contour tool to generate smoother contours.
The Base Contour parameter is used as a starting, or reference, contour from which all are derived, both positive and negative. The default Base Contour value is 0.0. If you enter a Contour Interval of 5.0, potential values are generated at 0, 5, 10, and up as well as 0, -5, -10, and down. What actual contours are made depends on the overlap of this interval pattern with that of the actual z-range of the input terrain dataset or TIN. If the Base Contour value is specified as 0.1, using the same interval of 5.0, the pattern becomes 0.1, 5.1, 10.1, and up as well as -4.9, -9.9, -14.9, and down.
An optional parameter that can be used to differentiate index contours from the others is Index Interval. Often, contour maps symbolize index contours with a heavier line symbol than regular contours because it makes the maps easier to read. Usually, index contours are every fifth contour. So if your Contour Interval is 5.0 and you want an index contour at every fifth contour, use an Index Interval value of 25. The Index Interval value needs to be evenly divisible by the Base Contour value. When specified, the Index Interval parameter creates an additional field in the output feature class. Index contours are assigned the value 1, while regular contours are assigned the value 0. The name of this field can be set using the Index Interval argument. By default, its name is Index.
The Contour Field Precision parameter is used to specify the number of decimals used in output contour height field. By default, the value is 0. If you specify a Contour Interval, or Base Contour, with decimals, you need to use this to preserve them in the output.
Values used for the Contour Interval, Base Contour, and Index Interval are given in output, Z factored, units. Heights of the input TIN or terrain dataset are multiplied by the Z Factor parameter before contouring takes place.
Occasionally, engineering-quality contours may appear to intersect. This can occur in saddle regions that lie exactly on a contour interval. While they may appear to intersect, they are actually just touching. This is a valid engineering-quality interpretation of the surface.