r.manning
Converts land cover raster to Manning's roughness coefficient raster.
r.manning input=name output=name landcover=string [source=string] [method=string] [rules=name] [seed=integer] [--overwrite] [--verbose] [--quiet] [--qq] [--ui]
Example:
r.manning input=name output=name landcover=nlcd
grass.script.run_command("r.manning", input, output, landcover, source="kalyanapu", method="medium", rules=None, seed=None, overwrite=None, verbose=None, quiet=None, superquiet=None)
Example:
gs.run_command("r.manning", input="name", output="name", landcover="nlcd")
grass.tools.Tools.r_manning(input, output, landcover, source="kalyanapu", method="medium", rules=None, seed=None, overwrite=None, verbose=None, quiet=None, superquiet=None)
Example:
tools = Tools()
tools.r_manning(input="name", output="name", landcover="nlcd")
This grass.tools API is experimental in version 8.5 and expected to be stable in version 8.6.
Parameters
input=name [required]
Name of input land cover raster map
output=name [required]
Name of output Manning's n raster map
landcover=string [required]
Land cover classification system
Allowed values: nlcd, worldcover, custom
nlcd: National Land Cover Database (NLCD)
worldcover: ESA WorldCover
custom: custom created land cover
source=string
Land cover-specific source of Manning's n coefficients
Allowed values: kalyanapu, hecras
Default: kalyanapu
kalyanapu: Kalyanapu et al. 2009 (shallow overland flow, NLCD only)
hecras: HEC-RAS 2D Manual for NLCD (deep flow, NLCD only)
method=string
Roughness output type
Allowed values: low, medium, high, random
Default: medium
low: Lower bound estimate
medium: Typical conditions
high: Upper bound estimate
random: Uniform random distribution
rules=name
Path to custom rules file (CSV with columns: code,n)
seed=integer
Seed value for the random number generator
Using the same seed ensures identical results, while a randomly generated seed produces different outcomes in each run.
--overwrite
Allow output files to overwrite existing files
--help
Print usage summary
--verbose
Verbose module output
--quiet
Quiet module output
--qq
Very quiet module output
--ui
Force launching GUI dialog
input : str, required
Name of input land cover raster map
Used as: input, raster, name
output : str, required
Name of output Manning's n raster map
Used as: output, raster, name
landcover : str, required
Land cover classification system
Allowed values: nlcd, worldcover, custom
nlcd: National Land Cover Database (NLCD)
worldcover: ESA WorldCover
custom: custom created land cover
source : str, optional
Land cover-specific source of Manning's n coefficients
Allowed values: kalyanapu, hecras
kalyanapu: Kalyanapu et al. 2009 (shallow overland flow, NLCD only)
hecras: HEC-RAS 2D Manual for NLCD (deep flow, NLCD only)
Default: kalyanapu
method : str, optional
Roughness output type
Allowed values: low, medium, high, random
low: Lower bound estimate
medium: Typical conditions
high: Upper bound estimate
random: Uniform random distribution
Default: medium
rules : str, optional
Path to custom rules file (CSV with columns: code,n)
Used as: input, file, name
seed : int, optional
Seed value for the random number generator
Using the same seed ensures identical results, while a randomly generated seed produces different outcomes in each run.
overwrite : bool, optional
Allow output files to overwrite existing files
Default: None
verbose : bool, optional
Verbose module output
Default: None
quiet : bool, optional
Quiet module output
Default: None
superquiet : bool, optional
Very quiet module output
Default: None
input : str | np.ndarray, required
Name of input land cover raster map
Used as: input, raster, name
output : str | type(np.ndarray) | type(np.array) | type(gs.array.array), required
Name of output Manning's n raster map
Used as: output, raster, name
landcover : str, required
Land cover classification system
Allowed values: nlcd, worldcover, custom
nlcd: National Land Cover Database (NLCD)
worldcover: ESA WorldCover
custom: custom created land cover
source : str, optional
Land cover-specific source of Manning's n coefficients
Allowed values: kalyanapu, hecras
kalyanapu: Kalyanapu et al. 2009 (shallow overland flow, NLCD only)
hecras: HEC-RAS 2D Manual for NLCD (deep flow, NLCD only)
Default: kalyanapu
method : str, optional
Roughness output type
Allowed values: low, medium, high, random
low: Lower bound estimate
medium: Typical conditions
high: Upper bound estimate
random: Uniform random distribution
Default: medium
rules : str | io.StringIO, optional
Path to custom rules file (CSV with columns: code,n)
Used as: input, file, name
seed : int, optional
Seed value for the random number generator
Using the same seed ensures identical results, while a randomly generated seed produces different outcomes in each run.
overwrite : bool, optional
Allow output files to overwrite existing files
Default: None
verbose : bool, optional
Verbose module output
Default: None
quiet : bool, optional
Quiet module output
Default: None
superquiet : bool, optional
Very quiet module output
Default: None
Returns:
result : grass.tools.support.ToolResult | np.ndarray | tuple[np.ndarray] | None
If the tool produces text as standard output, a ToolResult object will be returned. Otherwise, None will be returned. If an array type (e.g., np.ndarray) is used for one of the raster outputs, the result will be an array and will have the shape corresponding to the computational region. If an array type is used for more than one raster output, the result will be a tuple of arrays.
Raises:
grass.tools.ToolError: When the tool ended with an error.
DESCRIPTION
r.manning converts a land cover raster to a Manning's roughness coefficient raster for use in hydraulic and hydrological modeling.
Manning's roughness coefficient (Manning's n) quantifies the resistance to flow over a surface and is a key parameter in hydraulic simulations such as flood modeling, overland flow, and channel flow calculations.
The input parameter specifies the land cover raster map. The tool supports two standard land cover classification systems specified by landcover: NLCD (National Land Cover Database) used in the United States, and ESA WorldCover used globally.
Manning's coefficients for ESA WorldCover are based on values used by QGIS Manning's Roughness Generator plugin by Azzam. For NLCD, the source parameter selects the source of Manning's n coefficients.
- kalyanapu: Values from Kalyanapu et al. (2009), suitable for shallow overland flow modeling (flow depths in mm to cm range). Available for NLCD only. This is the default for NLCD.
- hecras: Values from the HEC-RAS 2D User's Manual, suitable for deep flow and floodplain modeling (flow depths > 0.3 m). Available for NLCD.
The method parameter controls which roughness estimate to use:
- low: Lower bound estimate (minimal surface resistance)
- medium: Typical conditions (default)
- high: Upper bound estimate (maximum surface resistance)
- random: Uniform random value between low and high bounds
For custom land cover classifications, use landcover=custom with a rules file in CSV format.
NOTES
Source of values
Kalyanapu et al. (2009) does not include ranges for Manning's n values. These were estimated using 0.75/1.33 multipliers on the original single values to reflect ranges from Chow (1959). These multipliers were also used to estimate default values from ranges in the HEC-RAS 2D User's Manual.
Kalyanapu et al. (2009) does not include NLCD value for cultivated crops, this tool uses conventional tillage from McCuen (2005).
Custom rules file
For custom land cover classifications, provide a CSV file with the rules parameter. Two formats are supported:
Single value (used for all methods):
# code,n
1,0.035
2,0.120
3,0.050
Three values (low, medium, high):
# code,n_low,n_medium,n_high
1,0.025,0.035,0.045
2,0.080,0.120,0.160
3,0.040,0.050,0.060
Lines starting with # are treated as comments.
Uncertainty Analysis
Manning's n values are inherently uncertain due to spatial and temporal variability in vegetation density, surface conditions, and flow characteristics. The method=random option generates spatially uniform random values between low and high bounds for each land cover class, which can be used for Monte Carlo uncertainty analysis.
EXAMPLES
Basic usage with NLCD land cover
Import NLCD into North Carolina sample dataset and convert it to Manning's n using Kalyanapu values for shallow overland flow:
r.manning input=nlcd_landcover output=mannings_n \
landcover=nlcd source=kalyanapu

Figure: Manning's n values for 2024 NLCD using Kalyanapu et al.
Deep flow modeling
Use HEC-RAS values for flood modeling:
r.manning input=nlcd_landcover output=mannings_n \
landcover=nlcd source=hecras
ESA WorldCover for global applications
r.manning input=worldcover output=mannings_n \
landcover=worldcover
Conservative high roughness estimate
r.manning input=nlcd_landcover output=mannings_n \
landcover=nlcd source=kalyanapu method=high
Stochastic Manning's n values
Generate random Manning's n values for stochastic simulation:
from grass.tools import Tools
tools = Tools()
for i in range(100):
tools.r_manning(
input="nlcd_landcover",
output=f"mannings_n_{i}",
landcover="nlcd",
source="kalyanapu",
method="random",
seed=i,
)
Integration with r.sim.water
Use the output with GRASS hydrological simulation:
r.manning input=nlcd_landcover output=mannings_n \
landcover=nlcd source=kalyanapu
r.sim.water elevation=dem dx=dx dy=dy \
man=mannings_n depth=water_depth
REFERENCES
-
HEC-RAS 2D User's Manual, Version 6.6. U.S. Army Corps of Engineers, Hydrologic Engineering Center. https://www.hec.usace.army.mil/software/hec-ras/documentation.aspx
-
Kalyanapu, A. J., Burian, S. J., and McPherson, T. N. (2009). Effect of land use-based surface roughness on hydrologic model output. Journal of Spatial Hydrology, 9(2), 51-71. https://scholarsarchive.byu.edu/josh/vol9/iss2/2/
-
McCuen, R. H. (2005). Hydrologic Analysis and Design (3rd ed.). Pearson Prentice Hall.
-
Chow, V. T. (1959). Open-Channel Hydraulics. McGraw-Hill.
-
Azzam, A. QGIS Manning's Roughness Generator plugin. https://github.com/mabdazzam/mannings_roughness_generator
SEE ALSO
AUTHORS
Anna Petrasova, NCSU Center for Geospatial Analytics
SOURCE CODE
Available at: r.manning source code
(history)
Latest change: Thursday Mar 12 16:41:53 2026 in commit 3ddc671