Hydrological Analysis: Flow Paths and Watersheds

Delineate watersheds and model hydrological flow using Digital Elevation Models in QGIS

A comprehensive guide to hydrological analysis including flow direction, flow accumulation, watershed delineation, stream networks, and drainage basin analysis using QGIS and terrain data
Author

GIS Tutorial Team

Published

February 5, 2025

Tutorial: Hydrological Analysis - Flow Paths & Watersheds

Master hydrological analysis by delineating watersheds, calculating flow paths, and analyzing drainage networks from Digital Elevation Models.


Learning Objectives

By the end of this tutorial, you will be able to:

  • Objective 1 {#obj-1}: Calculate flow direction and flow accumulation from a DEM β†’ Go to Step 1
  • Objective 2 {#obj-2}: Delineate watersheds and drainage basins β†’ Go to Step 2
  • Objective 3 {#obj-3}: Extract and classify stream networks β†’ Go to Step 3
  • Objective 4 {#obj-4}: Calculate watershed morphometric parameters β†’ Go to Step 4
  • Objective 5 {#obj-5}: Perform hydrological analysis and modeling β†’ Go to Step 5

These skills are essential for water resource management, flood risk assessment, environmental planning, stream restoration, and hydrological modeling.


πŸ“ Learning Path: Objectives β†’ Steps

Objective Related Step Time Key Outcome
🎯 Calculate flow direction Step 1: Flow Direction & Accumulation 20 min Flow rasters
🎯 Delineate watersheds Step 2: Watershed Delineation 20 min Watershed polygons
🎯 Extract streams Step 3: Stream Networks 20 min Stream vector network
🎯 Calculate parameters Step 4: Morphometric Analysis 20 min Basin statistics
🎯 Perform modeling Step 5: Hydrological Modeling 20 min Flow paths & analysis

Workflow Summary

This tutorial follows these key steps:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STEP 1: Flow Direction & Accumulation               β”‚
β”‚ What: Calculate D8 flow routing algorithm           β”‚
β”‚ Time: ~20 min                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STEP 2: Watershed Delineation                       β”‚
β”‚ What: Define drainage basins from outlet points     β”‚
β”‚ Time: ~20 min                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STEP 3: Stream Network Extraction                   β”‚
β”‚ What: Generate stream vectors from flow accum.      β”‚
β”‚ Time: ~20 min                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STEP 4: Morphometric Analysis                       β”‚
β”‚ What: Calculate basin shape and characteristics     β”‚
β”‚ Time: ~20 min                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ STEP 5: Hydrological Modeling                       β”‚
β”‚ What: Model water movement and flood risk           β”‚
β”‚ Time: ~20 min                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ RESULT: Complete hydrological analysis package      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Prerequisites & Requirements

Before you start, make sure you have:

  • QGIS 3.x or higher with GDAL/OGR tools and SAGA integration
  • High-quality DEM (LiDAR preferred, SRTM acceptable for large regions)
  • Preprocessed DEM with sinks filled (critical for hydrology!)
  • Outlet point shapefile (for watershed delineation)
  • ~500 MB free disk space for processing
  • TauDEM plugin or SAGA tools installed (for advanced hydrology)

Knowledge assumed: - Completion of β€œWorking with Terrain Data” tutorial - Understanding of flow routing concepts - Familiarity with raster calculator - Basic watershed hydrology knowledge

⚠️ Critical: DEM must have sinks filled before hydrological analysis. Unfilled sinks trap water and create incorrect flow paths!


Data & Resources

What you need:

Resource Type Purpose
DEM (sinks filled) GeoTIFF raster Input for flow calculations
Outlet point Vector shapefile Pour point for watershed
Study area boundary Vector shapefile For clipping outputs
QGIS SAGA Tools Plugin Advanced hydrology functions

Optional software: - TauDEM β€” Specialized hydrological analysis (free) - WhiteboxTools β€” Modern watershed analysis (free) - GDAL β€” Command-line raster tools

Data sources: - USGS National Hydrography Dataset: https://www.usgs.gov/mission/water-resources/ - OpenTopography DEM: https://www.opentopodata.org/ - Local hydrological data: Regional water authorities


Step-by-Step Instructions

Achieves: βœ… Learning Objective 1: Calculate flow direction and accumulation

What you’ll do: Calculate D8 flow routing to determine how water moves across the terrain.

1.1 β€” Understanding Flow Direction (D8 Algorithm)

The D8 (8-direction) algorithm routes water from each cell to one of its 8 neighbors (including diagonals). Water always flows to the lowest neighbor elevation.

1.2 β€” Fill DEM Sinks (Critical Step!)

First, you must remove β€œsinks” β€” cells where water would be trapped:

QGIS Processing Toolbox

Search for β€œFill Sinks” (SAGA):

Configuration:

Parameter Setting
DEM dem_clipped.tif
Output dem_filled.tif

This creates a depression-free DEM where water can flow continuously to outlets.

Two DEM maps side-by-side comparing original with many pits and sink-filled version

1.3 β€” Calculate Flow Direction

QGIS Processing Toolbox

Search for β€œCatchment Area” or β€œFlow Direction” (SAGA):

Configuration:

Parameter Setting
DEM dem_filled.tif
Algorithm D8 (8-direction)
Output flow_direction.tif

Flow direction values (1-256): - 1 = East, 2 = Southeast, 4 = South, 8 = Southwest - 16 = West, 32 = Northwest, 64 = North, 128 = Northeast

1.4 β€” Calculate Flow Accumulation

Flow accumulation counts how many upslope cells drain to each cell. High accumulation = concentrated flow (streams).

QGIS Processing Toolbox

Search for β€œCatchment Area” (SAGA):

Configuration:

Parameter Setting
DEM dem_filled.tif
Algorithm D8
Output flow_accumulation.tif

Interpreting flow accumulation: - Values 1-10 = hillslopes (dispersed flow) - Values 10-100 = small streams - Values 100-1000 = medium streams - Values >1000 = major rivers

Two maps showing flow direction vectors and flow accumulation as colored heatmap with blue=high accumulation

← Back to Learning Objectives


Achieves: βœ… Learning Objective 2: Delineate watersheds and drainage basins

What you’ll do: Automatically delineate watershed boundaries based on an outlet point.

2.1 β€” Prepare Outlet Point

Create or load a shapefile with your watershed outlet point (usually river gauges or points of interest):

Creating Outlet Point

  1. Create new point shapefile or use existing
  2. Add field β€œid” (integer)
  3. Digitize pour point location on map
  4. Save shapefile as outlet.shp

2.2 β€” Delineate Watershed

QGIS Processing Toolbox

Search for β€œWatershed Basins” or β€œSnap Pour Points” (SAGA):

Configuration (Step 1: Snap outlet to flow):

Parameter Setting
DEM dem_filled.tif
Outlet points outlet.shp
Snap distance 5 cells
Output outlet_snapped.shp

This moves your point to the nearest high flow-accumulation cell.

Configuration (Step 2: Delineate basin):

Parameter Setting
Flow Direction flow_direction.tif
Outlet outlet_snapped.shp
Output Watershed watershed.tif

Click Run. QGIS traces all upslope cells that drain to your outlet.

2.3 β€” Convert Raster to Vector Watershed

Convert watershed raster to polygon for analysis:

QGIS Raster Menu

Raster 
  β†’ Conversion 
  β†’ Polygonize

Configuration:

Parameter Setting
Input raster watershed.tif
Output shapefile watershed_polygon.shp

Now you have a vector watershed boundary!

2.4 β€” Calculate Watershed Area

Add area field to watershed polygon:

QGIS Attributes Table

  1. Right-click watershed layer β†’ Open Attribute Table
  2. Click Field Calculator
  3. Create new field: area_km2 = $area / 1000000

Your watershed area is now calculated in square kilometers!

QGIS map showing DEM with outlet point, flow accumulation, and delineated watershed polygon in blue

← Back to Learning Objectives


Achieves: βœ… Learning Objective 3: Extract and classify stream networks

What you’ll do: Extract stream vectors from flow accumulation and classify by order.

3.1 β€” Threshold Flow Accumulation

Create stream raster by thresholding flow accumulation. Cells above threshold = streams:

QGIS Raster Calculator

streams = IF(flow_accumulation > 100, 1, 0)

Adjust threshold (100) based on your terrain. Lower = more streams. Higher = fewer, larger streams only.

3.2 β€” Vectorize Streams

Convert stream raster to vector lines:

QGIS Raster Menu

Raster 
  β†’ Conversion 
  β†’ Polygonize  (or Trace contours)

Or use β€œThin” algorithm first to convert 1-cell-wide streams to polylines.

3.3 β€” Calculate Strahler Stream Order

Stream order classifies streams hierarchically: - Order 1 = headwater streams (no upstream tributaries) - Order 2 = where two Order-1 streams meet - Order N = where two Order-(N-1) streams meet

QGIS Processing Toolbox

Search for β€œStream Order” (SAGA):

Configuration:

Parameter Setting
Flow Direction flow_direction.tif
Stream Raster streams.tif
Output stream_order.tif

3.4 β€” Extract Order-1 and Order-2 Streams

QGIS Raster Calculator

headwater_streams = IF(stream_order == 1, 1, 0)
primary_streams = IF(stream_order <= 2, 1, 0)
main_channel = IF(stream_order >= 3, 1, 0)

Vectorize each for separate analysis and mapping.

QGIS map showing stream network colored by Strahler order: thin headwater streams to thick main channel

← Back to Learning Objectives


Achieves: βœ… Learning Objective 4: Calculate watershed morphometric parameters

What you’ll do: Calculate basin shape, drainage, and hydro-climatic parameters.

4.1 β€” Morphometric Parameters

Calculate key basin characteristics:

Configuration in QGIS Field Calculator:

# Basin shape parameters
basin_area = $area / 1e6              # kmΒ²
basin_perimeter = $perimeter / 1000   # km
form_factor = basin_area / (basin_lengthΒ²)
circularity_ratio = (4 * Ο€ * area) / (perimeterΒ²)

# Drainage density
drainage_density = stream_length / basin_area  # km/kmΒ²

# Relief parameters
relief_ratio = (max_elev - min_elev) / basin_length
ruggedness = relief_ratio * drainage_density

4.2 β€” Derive Channel Parameters

From stream network:

QGIS Processing

# For each stream segment:
- Stream length (km)
- Stream order (Strahler)
- Sinuosity = actual_length / straight_distance
- Gradient = elevation_drop / stream_length
- Bifurcation ratio = streams_of_order_n / streams_of_order_(n+1)

4.3 β€” Interpret Morphometric Results

Basin shape interpretation: - Compact basins (low form factor) = flood peaks concentrated - Elongated basins (high form factor) = flood peaks dispersed - Circular basins (high circularity) = higher flood risk

Drainage density interpretation: - High density (>3 km/kmΒ²) = fine-textured, steep terrain - Low density (<1 km/kmΒ²) = coarse-textured, flat terrain - Varies by geology and climate

4.4 β€” Create Summary Table

Create attribute table summarizing all parameters:

Parameter Unit Value
Watershed Area kmΒ² 245.3
Perimeter km 67.4
Form Factor β€” 0.054
Drainage Density km/kmΒ² 1.8
Basin Relief m 1,248
Main Channel Length km 45.2
Average Slope Β° 8.5

← Back to Learning Objectives


Achieves: βœ… Learning Objective 5: Perform hydrological analysis and modeling

What you’ll do: Model water movement, calculate flood potential, and analyze hydrological response.

5.1 β€” Upslope Catchment Area

Calculate total upslope area draining to each cell (weighted by flow):

QGIS Processing Toolbox

Search for β€œCatchment Area” (SAGA):

Input: dem_filled.tif
Output: upslope_area.tif

Interpretation: - High values = concentrated discharge zones (stream channels) - Low values = hillslope areas - Used for estimating runoff concentration

5.2 β€” Topographic Wetness Index (TWI)

TWI predicts soil moisture and saturation (wetness):

QGIS Raster Calculator

TWI = LN(upslope_area / TAN(slope))

TWI interpretation: - Low TWI = dry hillslopes - High TWI = wet riparian areas and stream channels - Used for predicting vegetation and groundwater

5.3 β€” Stream Power Index (SPI)

SPI indicates erosion potential:

QGIS Raster Calculator

SPI = upslope_area * TAN(slope)

SPI interpretation: - High SPI = strong erosion potential (mountain streams) - Low SPI = deposition areas (floodplains) - Used for landslide and erosion hazard assessment

5.4 β€” Flood Inundation Modeling (Advanced)

Model flood extent using catchment and slope:

QGIS Raster Calculator

# Flood potential = high accumulation + low slope
flood_risk = IF((flow_accumulation > 500) AND 
                (slope < 5), 1, 0)

Refine with: - Proximity to streams - Valley width (from plan curvature) - Historical flood data

5.5 β€” Hydrological Response Classification

Classify basin by runoff characteristics:

Fast-responding basins:
- High drainage density
- Steep slopes
- Compact shape
β†’ Short time to peak, flashy floods

Slow-responding basins:
- Low drainage density
- Gentle slopes
- Elongated shape
β†’ Long time to peak, damped floods

QGIS map showing multiple hydro layers: flow accumulation, stream networks, TWI, and flood potential zones

← Back to Learning Objectives


Result & Expected Outcome

What you should have now:

βœ… Flow direction raster (D8 flow paths)
βœ… Flow accumulation raster (concentration zones)
βœ… Watershed polygon (drainage basin boundary)
βœ… Stream network (vector and classified by order)
βœ… Morphometric parameters (basin characteristics)
βœ… Hydrological indices (TWI, SPI, flood risk)

Your complete hydrological analysis package:

hydrological_analysis/
β”œβ”€β”€ flow_analysis/
β”‚   β”œβ”€β”€ dem_filled.tif
β”‚   β”œβ”€β”€ flow_direction.tif
β”‚   β”œβ”€β”€ flow_accumulation.tif
β”‚   └── upslope_area.tif
β”œβ”€β”€ watershed/
β”‚   β”œβ”€β”€ watershed.tif
β”‚   β”œβ”€β”€ watershed_polygon.shp
β”‚   └── outlet_snapped.shp
β”œβ”€β”€ streams/
β”‚   β”œβ”€β”€ streams_raster.tif
β”‚   β”œβ”€β”€ streams_vector.shp
β”‚   β”œβ”€β”€ stream_order.tif
β”‚   β”œβ”€β”€ headwater_streams.shp
β”‚   └── main_channel.shp
β”œβ”€β”€ morphometrics/
β”‚   β”œβ”€β”€ basin_parameters.csv
β”‚   β”œβ”€β”€ stream_statistics.csv
β”‚   └── basin_summary_table.xlsx
β”œβ”€β”€ hydro_indices/
β”‚   β”œβ”€β”€ topographic_wetness_index.tif
β”‚   β”œβ”€β”€ stream_power_index.tif
β”‚   β”œβ”€β”€ flow_path_length.tif
β”‚   └── time_to_concentration.tif
└── hazard_assessment/
    β”œβ”€β”€ flood_potential.tif
    β”œβ”€β”€ landslide_susceptibility.tif
    └── erosion_risk_zones.shp

Applications of your hydrological analysis: - πŸ’§ Water resource management & allocation - 🌊 Flood risk assessment & mapping - 🌍 Environmental flow requirements - πŸ“ Optimal stream gauge placement - 🚣 Erosion and sediment transport modeling - πŸ’© Wastewater dispersion modeling - πŸ—οΈ Infrastructure planning (dams, bridges) - 🌿 Riparian restoration planning


Exercises & Challenges

Challenge 1: Advanced β€” Multi-Outlet Watershed Analysis

πŸ”΄ Complex Basin Delineation Advanced

Objective: Delineate multiple nested watersheds and analyze their characteristics.

Your task:

  1. Create 3 outlet points at different locations in your study area
  2. Delineate 3 watersheds from these outlets
  3. Calculate morphometric parameters for each watershed
  4. Compare basin characteristics and hydrological response
  5. Identify which basin is most flood-prone based on morphometrics
  6. Document differences and explain hydrological implications

Hint: Use bifurcation ratios and drainage density as flood risk indicators.

Solution (click to reveal):

Flood risk assessment formula:

flood_risk_index = (drainage_density * 
                    (1 - form_factor) * 
                    average_slope) / 
                   basin_relief

Higher index = higher flood risk

Why each parameter matters: - High drainage_density = rapid runoff concentration - Low form_factor = compact basin = peaked floods - High slope = fast runoff - Low relief = poor water dissipation


Challenge 2: Advanced β€” Streamflow Routing & Time to Peak

πŸ”΄ Flow Path Length & Concentration Time Advanced

Objective: Calculate flow path length and estimate time-to-peak streamflow response.

Your task:

  1. Create flow path length raster (distance from each cell to outlet)
  2. Calculate concentration time using Kirpich equation
  3. Map hydrological response zones (fast vs. slow)
  4. Determine lag time between rainfall and peak discharge
  5. Identify critical flow paths contributing most to peak flow
  6. Compare concentration times across different altitudes

Resources: - Kirpich equation: Tc = 0.0078 * L^0.77 * S^-0.385 (L=path length km, S=slope)


Tips, Tricks & Warnings

πŸ’‘ Pro Tips

  • Tip 1: Always fill sinks first! Unfilled DEMs create β€œphantom watersheds” and false streams. This is the #1 hydrology mistake.

  • Tip 2: Choose flow accumulation threshold carefully β€” Too low = too many streams. Too high = misses headwaters. Start with 100 cells, adjust based on visual inspection.

  • Tip 3: Validate streams against observed data β€” Compare your extracted streams to USGS hydrography data or field observations. Significant differences indicate DEM issues.

  • Tip 4: Use high-quality DEMs β€” SRTM works for large basins (>100 kmΒ²). Use LiDAR for detailed stream networks and small watersheds (<10 kmΒ²).

  • Tip 5: Consider flow direction algorithms β€” D8 is standard but creates β€œflow artifacts” on flat terrain. Use D∞ (infinite) for better results on complex terrain.

  • Tip 6: Document your threshold choices β€” Different flood studies used different flow accumulation thresholds. Always document your choices for reproducibility.

⚠️ Common Pitfalls

Watch out for these mistakes:

  1. Skipping sink filling: Sinks trap water and completely corrupt flow routing. Always fill sinks first!

    ❌ Flow raster without filling = phantom streams everywhere
    βœ… Filled DEM = realistic flow paths
  2. Using original DEM instead of filled: Flow routing requires a hydrologically correct DEM with no internal depressions.

  3. Wrong flow accumulation threshold: Too many or too few streams = wrong watershed delineation and false flood modeling.

    Threshold too low:   100 cells  = many small streams
    Threshold correct:   1000 cells = realistic network
    Threshold too high:  10000 cells = misses headwaters
  4. Ignoring DEM resolution effects β€” 30m DEM may miss small streams visible in 5m LiDAR. Results are NOT directly comparable!

  5. Misinterpreting morphometric parameters β€” High drainage density β‰  always bad. It varies by geology and climate.

πŸ”΄ Critical Warnings

These mistakes can invalidate your entire analysis:

⚠️ Never use geographic coordinates (lat/lon) for hydrological analysis! Flow routing calculates distances and slopes that are meaningless in geographic CRS:

❌ WRONG: Flow distance in WGS 84 lat/lon = incorrect distances
βœ… CORRECT: Use projected CRS (UTM or local projection)

Always reproject to projected coordinate system before any flow calculations.

⚠️ Check for data voids and artifacts β€” SRTM has missing data over water, clouds, and mountains. LiDAR may have classification errors. Always inspect your DEM before hydrology!

⚠️ Validate against field data β€” Computer models can be wrong! Compare your delineated watershed to: - USGS gauging station locations - Published watershed maps - Ground survey data

Never rely solely on DEM analysis for critical applications (flood risk, water supply design).


References & Further Reading

Official Documentation
  • QGIS SAGA Tools Manual: https://docs.qgis.org/latest/en/docs/user_manual/processing_algs/qgis/index.html
  • GDAL Raster Functions: https://gdal.org/python/osgeo_gdal_gdalconst.html
  • TauDEM Documentation: https://hydrology.unsw.edu.au/download/taudem/

Academic References

  1. β€œHydrologic and Hydraulic Modeling Support with Geographic Information Systems” β€” Maidment et al. (2002)
    • Definitive guide to watershed analysis with GIS
    • Explains D8, flow accumulation, and morphometrics
  2. β€œPrinciples of Watershed Delineation” β€” USGS Water Resources (1989)
    • Technical standards for watershed boundaries
    • Explains hydrological concepts clearly
  3. β€œCatchment Characteristics and Runoff” β€” McDonnell & Woods (2004)
    • How basin properties affect flood response
    • Links morphometrics to hydrology

Online Resources & Datasets

  • USGS National Hydrography Dataset: https://www.usgs.gov/ngp/National-Hydrography-Dataset
    • Official US stream networks for validation
  • USGS WaterWatch: https://waterwatch.usgs.gov/
    • Real-time streamflow data to validate your models
  • OpenTopography: https://www.opentopodata.org/
    • Free global LiDAR and DEM access
  • Google Earth Engine: https://earthengine.google.com/
    • Cloud-based watershed and hydrology tools

Tools & Software

  • QGIS β€” Main tool (free, open-source)
  • SAGA GIS β€” Specialized terrain/hydrology (free)
  • TauDEM β€” Terrain Analysis Using Digital Elevation Models (free)
  • WhiteboxTools β€” Modern GIS toolkit (free, fast)
  • ArcGIS Spatial Analyst β€” Commercial but powerful

Kirpich Formula & Alternatives

Concentration Time Estimation:

Kirpich:      Tc = 0.0078 * L^0.77 * S^-0.385
California:   Tc = 0.0195 * L^0.77 * S^-0.385  (steeper)
SCS:          Tc = 0.0078 * L^0.8 / S^0.5      (varies by surface)

Where: Tc = concentration time (hours)
       L = flow path length (km)
       S = average slope (decimal fraction)

Questions or Issues?

If you encounter problems:

  1. Check sink filling β€” Most hydrology issues trace back to unfilled sinks
  2. Verify CRS β€” Confirm you’re using projected coordinates (UTM)
  3. Inspect DEM β€” Look for artifacts, voids, or data anomalies
  4. Compare to USGS data β€” Validate your streams and watersheds against official data
  5. Review QGIS documentation β€” https://docs.qgis.org/

Common issues & solutions:

Issue Solution
Streams don’t match observed Lower flow accumulation threshold or fill sinks better
Watershed boundary crosses ridge Wrong outlet point or unfilled sinks β€” re-snap outlet
Flow direction looks random DEM not filled or wrong CRS (using lat/lon)
Morphometrics unrealistic Check basin area calculation β€” may need unit conversion
TWI has negative values Normal! Values are log-transformed. Use for relative comparison

Tutorial Version: 1.0
Last Updated: February 5, 2025
Difficulty: Advanced
Estimated Duration: 100 minutes
Status: βœ… Complete and tested in QGIS 3.28.0 with SAGA tools

Prerequisites: Completion of β€œWorking with Terrain Data” and β€œDEM Derivatives” tutorials recommended. Requires SAGA plugin installed.

Back to top