Available with Spatial Analyst license.

Available with 3D Analyst license.

## Summary

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

## Usage

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. 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 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.

## Syntax

Curvature_3d (in_raster, out_curvature_raster, {z_factor}, {out_profile_curve_raster}, {out_plan_curve_raster})

Parameter | Explanation | Data Type |

in_raster | The input surface raster. | Raster Layer |

out_curvature_raster | The output curvature raster. It will be floating-point type. | Raster Dataset |

z_factor (Optional) | 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 your z-units are feet and your x,y units are meters, you would use a z-factor 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. 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 |

## 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
env.workspace = "C:/data"
arcpy.Curvature_3d("elevation", "c:/output/outcurv01", 1.094)
```

##### 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_3d_Ex_02.py
# Description: Calculates the curvature of a raster surface,
# optionally including profile and plan curvature.
# Requirements: 3D Analyst Extension
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inRaster = "elevation"
outRaster = "C:/output/outcurv02"
zFactor = 1.094
# Check out the ArcGIS 3D Analyst extension license
arcpy.CheckOutExtension("3D")
# Execute Curvature
arcpy.Curvature_3d(inRaster, outRaster, 1.094)
```

## Environments

## Licensing information

- ArcGIS Desktop Basic: Requires 3D Analyst or Spatial Analyst
- ArcGIS Desktop Standard: Requires 3D Analyst or Spatial Analyst
- ArcGIS Desktop Advanced: Requires 3D Analyst or Spatial Analyst