Bankfull and Mean-flow Channel Geometry for CONUS

← Back to the map and downloads

About the dataset

This dataset provides machine-learning estimates of bankfull width, bankfull depth, mean-flow width, and mean-flow depth for river reaches of the National Hydrography Dataset Plus Version 2.1 (NHDPlusV2.1) across the conterminous United States (CONUS), and for the USGS stream gages located on those reaches.

Channel dimensions like these are needed for flood inundation mapping, channel routing, and hydrologic and hydraulic modeling, but they are measured at only a small fraction of rivers. This dataset fills that gap with consistent estimates for about 2.6 million reaches.

How it was made

  1. Training data. Channel and flow measurements from the USGS HYDRoSWOT dataset, collected at more than 10,000 stream gages, were cleaned and quality-controlled. Bankfull and mean-flow observations were then identified at each gage.
  2. Models. For each of the four variables, two model types were built: one using discharge measured at the gages, and one using the mean annual flow from NHDPlusV2.1, which is available for every reach. Each was trained with Multi-Linear Regression, Random Forest Regression, and eXtreme Gradient Boosting Regression (XGBoost).
  3. Independent evaluation. Mean-flow estimates were checked against US Army Corps of Engineers eHydro surveys, and bankfull estimates against regional survey data from 11 published sources.
  4. Application. The XGBoost model based on NHDPlusV2.1 mean annual flow was applied to NHDPlusV2.1 reaches across CONUS to produce this dataset.

Full details are in the paper (see How to cite), and the code is in the research repository.

What you get

ColumnDescriptionUnits
bnk_widthBankfull widthm
bnk_depthBankfull depthm
mf_widthMean-flow widthm
mf_depthMean-flow depthm

River reaches also include their comid, reachcode, state, huc2, huc8, stream_order, and total drainage area tot_da_sqkm (km²). USGS gages also include site_no, station_nm, the comid of the reach they are on, reachcode, state, HUC codes, drainage area da_sqkm (km²), lat, and lon.

The service covers all 2,691,339 NHDPlusV2.1 reaches in the release (2,642,259 of them have predictions) and 28,164 USGS gages.

How to access it

This website

On the main page, choose river reaches or USGS gages, pick an area (a HUC8 watershed, a state, a HUC2 region, a list of IDs, an area you draw on the map, or a shapefile you upload), choose a format, and download.

FormatContentsRecords per download
CSVValues only, no line shapesup to 500,000
GeoJSONValues plus reach lines or gage pointsup to 50,000
ShapefileValues plus reach lines or gage points (zipped)up to 50,000

Python

The HydroGeomKit package gets the data straight into pandas or GeoPandas: pip install "git+https://github.com/Reizrb/HydroGeom", then get_channel_geometry(huc8="03160112").

Any language

Send requests to the API from R, the command line, or any other tool. See the interactive API documentation and the HydroGeom repository for examples.

The full dataset

To download everything at once, use Zenodo or HydroShare.

Good to know

How to cite

If you use this dataset, please cite the paper and the dataset:

Zarrabi, R., McDermott, R., Erfani, S. M. H., & Cohen, S. (2025). Bankfull and mean-flow channel geometry estimation through machine learning algorithms across the CONtiguous United States (CONUS). Water Resources Research, 61(2). https://doi.org/10.1029/2024WR037997

The data are licensed under CC-BY-4.0, and the code under the MIT license.

Questions or requests

If you have questions about the dataset, find a problem, or would like a new feature or download option, please contact Reihaneh Zarrabi:

rzarrabi@crimson.ua.edu