Curvature (Spatial Analyst)

Summary

Calculates the curvature of a raster surface and, optionally, includes profile and plan curvature.

The Surface Parameters tool provides a newer implementation and enhanced functionality.

Learn more about how Curvature works

Usage

  • The Curvature tool fits a plane to the nine local cells, but a plane may not be a good descriptor of the landscape and may mask or exaggerate natural variations of interest. The Surface Parameters tool fits a surface to the neighborhood of cells instead of a plane, which provides a more natural fit to the terrain.

    The Curvature tool uses a 3 by 3 window of cells to compute the value, while the Surface Parameters tool allows window sizes from 3 by 3 to 15 by 15 cells. Larger window sizes are useful with high resolution elevation data to capture land surface processes at an appropriate scale. The Surface Parameters tool also provides an adaptive window option that evaluates the local variability of the terrain and identifies the largest appropriate neighborhood size for each cell. This can be useful with gradual homogeneous terrain interrupted by streams, roads, or sharp breaks in slope.

    The Surface Parameters tool includes three curvature types, which use updated formulas and create different results than the Curvature tool.

  • The primary output is the curvature of the surface on a cell-by-cell basis, as fitted through that cell and its eight surrounding neighbors. Two optional output curvature types are possible: the profile curvature is in the direction of the maximum slope, and the plan curvature is perpendicular to the direction of the maximum slope.

  • A positive curvature indicates the surface is upwardly convex at that cell. A negative curvature indicates the surface is upwardly concave at that cell. A value of 0 indicates the surface is flat.

  • In the profile output, a negative value indicates the surface is upwardly convex at that cell. A positive profile indicates the surface is upwardly concave at that cell. A value of 0 indicates the surface is flat.

  • In the plan output, a positive value indicates the surface is upwardly convex at that cell. A negative plan indicates the surface is upwardly concave at that cell. A value of 0 indicates the surface is flat.

  • Units of the curvature output raster, as well as the units for the optional output profile curve raster and output plan curve raster, are one hundredth (1/100) of a z-unit. The reasonably expected values of all three output rasters for a hilly area (moderate relief) can vary from -0.5 to 0.5; while for steep, rugged mountains (extreme relief), the values can vary between -4 and 4. Note that it is possible to exceed this range for certain raster surfaces.

  • When the input raster needs to be resampled, the bilinear technique will be used. An example of when an input raster may be resampled is when the output coordinate system, extent, or cell size is different from that of the input.

  • See Analysis environments and Spatial Analyst for additional details on the geoprocessing environments that apply to this tool.

Parameters

LabelExplanationData Type
Input raster

The input surface raster.

Raster Layer
Z factor
(Optional)

The number of ground x,y units in one surface z-unit.

The z-factor adjusts the units of measure for the z-units when they are different from the x,y units of the input surface. The z-values of the input surface are multiplied by the z-factor when calculating the final output surface.

If the x,y units and z-units are in the same units of measure, the z-factor is 1. This is the default.

If the x,y units and z-units are in different units of measure, the z-factor must be set to the appropriate factor or the results will be incorrect. For example, if the z-units are feet and the x,y units are meters, use a z-factor of 0.3048 to convert the z-units from feet to meters (1 foot = 0.3048 meter).

Double
Output profile curve raster
(Optional)

Output profile curve raster dataset.

This is the curvature of the surface in the direction of slope.

It will be floating-point type.

Raster Dataset
Output plan curve raster
(Optional)

Output plan curve raster dataset.

This is the curvature of the surface perpendicular to the slope direction.

It will be floating-point type.

Raster Dataset

Return Value

LabelExplanationData Type
Output curvature raster

The output curvature raster.

It will be floating-point type.

Raster

Curvature(in_raster, {z_factor}, {out_profile_curve_raster}, {out_plan_curve_raster})
NameExplanationData Type
in_raster

The input surface raster.

Raster Layer
z_factor
(Optional)

The number of ground x,y units in one surface z-unit.

The z-factor adjusts the units of measure for the z-units when they are different from the x,y units of the input surface. The z-values of the input surface are multiplied by the z-factor when calculating the final output surface.

If the x,y units and z-units are in the same units of measure, the z-factor is 1. This is the default.

If the x,y units and z-units are in different units of measure, the z-factor must be set to the appropriate factor or the results will be incorrect. For example, if the z-units are feet and the x,y units are meters, use a z-factor of 0.3048 to convert the z-units from feet to meters (1 foot = 0.3048 meter).

Double
out_profile_curve_raster
(Optional)

Output profile curve raster dataset.

This is the curvature of the surface in the direction of slope.

It will be floating-point type.

Raster Dataset
out_plan_curve_raster
(Optional)

Output plan curve raster dataset.

This is the curvature of the surface perpendicular to the slope direction.

It will be floating-point type.

Raster Dataset

Return Value

NameExplanationData Type
out_curvature_raster

The output curvature raster.

It will be floating-point type.

Raster

Code sample

Curvature example 1 (Python window)

This example creates a curvature raster from an input surface raster and also applies a z-factor.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCurve = Curvature("elevation", 1.094)
outCurve.save("C:/sapyexamples/output/outcurv01")
Curvature example 2 (stand-alone script)

This example creates a curvature raster from an input surface raster and also applies a z-factor.

# Name: Curvature_Ex_02.py
# Description: Calculates the curvature of a raster surface, 
#              optionally including profile and plan curvature.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

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

# Set local variables
inRaster = "elevation"
zFactor = 1.094

# Execute Curvature
outCurve = Curvature(inRaster, 1.094)

# Save the output 
outCurve.save("C:/sapyexamples/output/outcurv02")

Related topics