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

If the Input raster parameter value (in_raster in Python) is high resolution with a cell size of less than a few meters, or particularly noisy, consider using the Surface Parameters tool and its user-defined neighborhood distance option instead of the immediate 3 x 3 neighborhood of this tool. Using a larger neighborhood can minimize the effect of noisy surfaces. Using a larger neighborhood can also better represent landforms and surface characteristics when using high resolution 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

arcpy.3d.Curvature(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) | 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, you would 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 |

## Code sample

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)
```

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
# Execute Curvature
arcpy.Curvature_3d(inRaster, outRaster, 1.094)
```

## Environments

## Licensing information

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