Surface Volume (3D Analyst)

Summary

Calculates the area and volume of the region between a surface and a reference plane.

Illustration

Reference Plane Above; Plane Height intersects surface
Reference Plane Below; Plane Height intersects surface

Usage

  • Apply a Z Factor to ensure the accuracy of volume calculations when the surface Z values are expressed in a different unit of measure than the XY units. Using a Z Factor will not modify the original data. The tool will automatically determine the appropriate Z-factor when the XY and Z coordinate systems are defined.

  • The output text file will store the full path to the surface, the parameters used to generate results, and the calculated area and volume measurements. If the same output file is specified in multiple runs of the tool, the pre-existing records are maintained and the results are appended to the table.

    DatasetPlane HeightReferenceZ FactorArea 2DArea 3DVolume

    C:\data\tin

    100.00

    Above

    1

    15984467.82

    16354331.40

    1886012931.05

    C:\data\raster.tif

    250.5

    Below

    3.28084

    0

    0

    0

    C:\data.gdb\fd\terrain

    1250

    Above

    0.3048

    1854238.36

    1970550.88

    1099221466.89

  • If the region for which surface area and volumetric calculations are desired is defined by a non-rectangular extent, consider creating a polygon to delineate the boundary of the area of interest, then use the Polygon Volume tool to determine the calculations for the region between the plane defined by the polygon and a given surface.

  • A raster surface is evaluated using the extent of the center point of each cell, as opposed to the extent of the entire cell area. The resulting analysis will decrease the data area of the raster by half a cell relative to the data area displayed for the raster.

Syntax

arcpy.3d.SurfaceVolume(in_surface, {out_text_file}, {reference_plane}, {base_z}, {z_factor}, {pyramid_level_resolution})
ParameterExplanationData Type
in_surface

The raster, TIN, or terrain surface to process.

Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer
out_text_file
(Optional)

A comma-delimited ASCII text file containing the area and volume calculations. If the file already exists, the new results will be appended to the file.

File
reference_plane
(Optional)

The direction from the reference plane for which to calculate the results.

  • ABOVEVolume and area calculations will represent the region of space between the specified plane height and the portions of the surface that are above the plane. This is the default.
  • BELOWVolume and area calculations will represent the region of space between the specified plane height and portions of the surface that are below the plane.
String
base_z
(Optional)

The Z value of the plane that will be used to calculate area and volume.

Double
z_factor
(Optional)

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.

Double
pyramid_level_resolution
(Optional)

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.

Double

Code sample

SurfaceVolume example 1 (Python window)

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

arcpy.env.workspace = "C:/data"
arcpy.SurfaceVolume_3d("sample.gdb/featuredataset/terrain", "surf_vol.txt", 
                       reference_plane="ABOVE", base_z=300, z_factor=3.24, 
                       pyramid_level_resolution=5)
SurfaceVolume example 2 (stand-alone script)

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

'''****************************************************************************
Name: Surface Volume Example
Description: This script demonstrates how to use the
             Surface Volume tool.

****************************************************************************'''
# Import system modules
import arcpy

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

# Set Local Variables
inSurface = "elevation_tin"

# Execute SurfaceVolume
result = arcpy.SurfaceVolume_3d(inSurface, "", "ABOVE", "300", "1", "5")
print(result.getMessages())

Licensing information

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

Related topics