Curvature 

Release 9.3
Last modified September 7, 2011 
Print all topics in : "Surface (Spatial Analyst)" 
Calculates the curvature of a raster surface, optionally including profile and plan curvature.
Learn more about how Curvature works
Usage tips
Command line and Scripting
The primary output is the curvature of the surface on a cellbycell basis, as fitted through that cell and its eight surrounding neighbors. Curvature is the second derivative of the surface or the slope of the slope. 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 zero 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 zero 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 zero 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 over 100 z units, or 1/100 (z units). 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.
The following environment settings affect this tool:
Map Algebra
The primary output is the curvature of the surface on a cellbycell basis, as fitted through that cell and its eight surrounding neighbors. Curvature is the second derivative of the surface or the slope of the slope. 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 zero 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 zero 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 zero indicates the surface is flat.
Units of the curvature output raster, as well as the units for the optional {out_profile_curve} and {out_plan_curve} output rasters, are one over 100 zunits, or 1/100(zunits). 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.
The units of {out_slope} are degrees. Values can vary from 0 to 90.
Aspect is expressed in positive degrees from 0 to 359.9, measured clockwise from north. An aspect value of 1 indicates an area of undefined aspect (for example, flat). The direction of slope is defined by the value of aspect.
Learn more about how to specify the input raster dataset in the Map Algebra expression of Raster Calculator.
ArcObjects
The primary output is the curvature of the surface on a cellbycell basis, as fitted through that cell and its eight surrounding neighbors. Curvature is the second derivative of the surface or the slope of the slope. 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 zero 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 zero 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 zero indicates the surface is flat.
Units of the curvature output raster, as well as the units for the optional profile and plan output rasters, are one over 100 zunits, or 1/100(zunits). 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.
The output from the ArcObjects method is a raster object.
Command line syntax
An overview of the Command Line window
Curvature_sa <in_raster> <out_curvature_raster> {z_factor} {out_profile_curve_raster} {out_plan_curve_raster}
Parameter  Explanation  Data Type 
<in_raster> 
Input raster.

Composite Geodataset 
<out_curvature_raster> 
Output curvature raster dataset.

Raster Dataset 
{z_factor} 
Number of ground x,y units in one surface z unit. The zfactor adjusts the units of measure for the z units when they are different from the x,y units of the input surface. The zvalues of the input surface are multiplied by the zfactor when calculating the final output surface. If the x,y units and z units are in the same units of measure, the zfactor is 1. This is the default. If the x,y units and z units are in different units of measure, the zfactor must be set to the appropriate factor, or the results will be incorrect. For example, if your z units are feet and your x,y units are meters, you would use a zfactor of 0.3048 to convert your z units from feet to meters (1 foot = 0.3048 meter).

Double 
{out_profile_curve_raster} 
Output profile curve raster dataset. This is the curvature of the surface in the direction of slope.

Raster Dataset 
{out_plan_curve_raster} 
Output plan curve raster dataset. This is the curvature of the surface perpendicular to the slope direction.

Raster Dataset 
Curvature_sa C:/data/dem C:/data/curvature 3.28 C:/data/profile C:/data/plan
Scripting syntax
About getting started with writing geoprocessing scripts
Curvature_sa (in_raster, out_curvature_raster, z_factor, out_profile_curve_raster, out_plan_curve_raster)
Parameter  Explanation  Data Type 
in_raster (Required) 
Input raster.

Composite Geodataset 
out_curvature_raster (Required) 
Output curvature raster dataset.

Raster Dataset 
z_factor (Optional) 
Number of ground x,y units in one surface z unit. The zfactor adjusts the units of measure for the z units when they are different from the x,y units of the input surface. The zvalues of the input surface are multiplied by the zfactor when calculating the final output surface. If the x,y units and z units are in the same units of measure, the zfactor is 1. This is the default. If the x,y units and z units are in different units of measure, the zfactor must be set to the appropriate factor, or the results will be incorrect. For example, if your z units are feet and your x,y units are meters, you would use a zfactor of 0.3048 to convert your 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.

Raster Dataset 
out_plan_curve_raster (Optional) 
Output plan curve raster dataset. This is the curvature of the surface perpendicular to the slope direction.

Raster Dataset 
# Curvature_sample.py # Description: # Calculates curvature, optionally including profile and plan curvature. # Requirements: None # Author: ESRI # Date: Sept 6, 2005 # Import system modules import arcgisscripting # Create the Geoprocessor object gp = arcgisscripting.create() try: # Set local variables InRaster = "C:/data/dem" OutCurvatureRaster = "C:/data/curvature" InZFactor = "3.28" OutProfileCurveRaster = "C:/data/profile" OutPlanCurveRaster = "C:/data/plan" # Check out Spatial Analyst extension license gp.CheckOutExtension("Spatial") # Process: Curvature gp.Curvature_sa(InRaster, OutCurvatureRaster, InZFactor, OutProfileCurveRaster, OutPlanCurveRaster) except: # If an error occurred while running a tool, then print the messages. print gp.GetMessages()
Map Algebra syntax
Curvature(<grid>, {out_profile_curve}, {out_plan_curve}, {out_slope}, {out_aspect})
Parameter  Explanation 
<grid>  A raster representing a continuous surface. 
{out_profile_curve}  An optional output raster showing the rate of change of slope for each cell.
This is the curvature of the surface in the direction of slope. 
{out_plan_curve}  An optional output raster showing the curvature of the surface perpendicular to the slope direction, referred to as the planform curvature. 
{out_slope}  An optional output raster showing the rate of maximum change in zvalue from each cell.
This is the first derivative of the surface. 
{out_aspect}  An optional output raster showing the direction of the maximum rate of change in zvalue from each cell.
This is also referred to as the slope direction. 
curvature(ingrid) curvature(ingrid, helen_prof, helen_plan) curvature(ingrid, #, #, helen_slope, helen_aspect)
ArcObjects syntax
ISurfaceOp::Curvature (geoDataset As IGeoDataset, profile As Boolean, plan As Boolean) As IGeoDataset
Parameter  Explanation 
geoDataset  An input Raster, RasterDataset, RasterBand, or RasterDescriptor representing a continuous surface. 
profile  A Boolean that, if True, will create an output profile raster.
The profile raster shows the rate of change of slope for each cell. This is the curvature of the surface in the direction of slope. 
plan  A Boolean that, if True, will create an output plan raster.
The plan raster shows the curvature of the surface perpendicular to the slope direction, referred to as the planform curvature. 
' Create the RasterSurfaceOp object Dim pSurfaceOp As ISurfaceOp Set pSurfaceOp = New RasterSurfaceOp ' Declare the input raster object Dim pInputDataset As IGeoDataset ' Calls function to open a raster dataset from disk Set pInputDataset = OpenRasterDataset("D:\SpatialData", "inputraster") ' Declare the output raster object Dim pOutputRaster As IGeoDataset ' Calls the method Set pOutputRaster = pSurfaceOp.Curvature(pInputDataset, False, False)