SlideShare a Scribd company logo
This and more at my website: https://sites.google.com/site/sorsbysj/
LinkedIn: https://www.linkedin.com/in/skylersorsby
Hypsometric curves in GRASS gis
Author: Skyler Sorsby
Geomorphic indices are powerful tools with which to gauge spatial change across a
landscape. Most of these indices are readily derived from topographic maps, whether in
paper or digital form. Hypsometry, in particular, quantifies the distribution of relief across
a given drainage basin. There are two primary metrics associated with hypsometry: the
hypsometric curve (HC) and the hypsometric integral (HI).The hypsometric integral is a
simple, scalar value representing the general relief of a basin. The hypsometric curve, in
comparison, takes elevations distributed across a drainage basin, plots them against
upslope contributing area, and produces a meaningful, distinct curve that can be
compared with those of other basins, like so:
Figure 1. Idealized hypsometric curves, illustrating a landscape
aging cycle.
Data of this type is easily extracted from Digital Elevation Models (DEMs) with the aid of
common hydrologic flow algorithms in a Geographic Information System (GIS). In this
document, I use GRASS to create a hypsometric curve, although the methodology can
be easily abstracted for use in any other GIS.
1) Load a DEM
Obtaining elevation data is a preliminary stage in any GIS-based topographic analysis.
Several good sources include the SRTM database (30 and 90-meter SAR data),
OpenTopography (lidar), and the National Map (all ranges of data resolution and type,
across the USA). Once the DEM is opened in a GIS, and in the correct projection,
you’re ready to start.
This and more at my website: https://sites.google.com/site/sorsbysj/
LinkedIn: https://www.linkedin.com/in/skylersorsby
2) Fill the DEM
DEM construction is a careful and involved procedure. Nonetheless, even the best DEM
has artificial error. ‘Pits’, a particular elevation artefact in which a given pixel is lower
than all adjacent pixels, interrupt most hydrological routines (which are necessary for
gathering hypsometric data). Since water flows down slopes, any pit artefacts will
mislead the algorithm and interrupt the true flow path. The solution to this problem is to
“fill” the pits, allowing modeled flow to proceed in its real downhill course. This function
is built into most hydrological toolkits. In GRASS, it’s called “r.fill.dir”. Use this tool to
make a depression-less map.
3) Run the hydrological flow algorithm
Like pit-filling algorithms, flow modeling routines are common to most GIS softwares. In
GRASS, this particular tool is called r.watershed. Its functionality far exceeds what we’ll
use it for in this workflow. As one of the more powerful algorithms in GRASS, it can map
out flow accumulation, direction of downslope flow, estimated locations of stream
channels, watershed basins, etc. The only output we care about for this particular
exercise, however, is the raster map of watershed boundaries.
In order to work across landscape scales, r.watershed incorporates a user-defined area
threshold for calculated basins: all basins will be larger than a set number of pixels. Here,
we can use that threshold to eliminate all the smaller
catchments that we do not wish to study, and trim the map
to primary drainages.
4) Use r.to.vect to make vector polygons (areas) of the
watersheds.
5) You’ll probably still find that the number of output
watersheds exceeds that which you wish to study. Right
click on the watershed vector you’ve just created, in the
table of contents, and open the attribute table. There,
select all catchments you wish to ignore, and delete them.
6) Using univariate raster statistics, find the maximum
and minimum elevation values in your DEM (which you’ve
hopefully clipped to contain only your study area). These
elevations will respectively have no upslope area and
maximum upslope area, and represent the two extremes
of your hypsometry plots. Subdivide these elevations
This and more at my website: https://sites.google.com/site/sorsbysj/
LinkedIn: https://www.linkedin.com/in/skylersorsby
equally, with sufficient sampling density to produce a
curve that exhibits changes (10 or so subdivisions is a
good place to start, Fig.1).
Here’s where raster algebra comes into play. If you have a DEM named ‘mapname’, for
example, the following syntax:
‘mapname’ > 1000
will yield a new, binary map of all elevations greater than 1000 (whether it’s in meters or
feet depends on your data). All pixels higher than 1000 receive a value of 1, and those
lower receive a value of zero. This effectively creates a mask of your study area, whose
shape is bounded by a minimum elevation you’ve chosen. Make binary maps for each
of your determined elevation subdivisions (Fig. 1). Name each raster map after the
elevation it’s greater than.
7) Use the v.rast.stats tool to survey
each binary map within the boundaries
of your catchment vector. For each run,
name the column after the
corresponding raster name. For
example, if you surveyed the raster
map where all pixels = 1 above 1500’,
name it f1500. Don’t begin the column
name with a number; GRASS can’t
understand that.
Now, you should have a shapefile
(vectorized from the r.watershed
output), with one row per catchment.
Each column should contain statistics
for the binary “elevation above” maps.
Each column title should somehow
contain, but not begin with, the
elevation value for the given binary
map.
The columns you’ll wind up keeping
contain the sums of all pixel values
within a given catchment. We don’t
care about minimum, mean, or
maximum raster values. Nor do we
care about the variance or the number
of pixels surveyed (pixels of zero value
still count, so n is the same for each
raster surveyed).
The sum, however, of all pixels within a
given catchment captures exactly what
we’re looking for. Add all the zero-value
Figure 2. Binary maps of upslope
pixels in a study area (Cleman Mtn,
WA).
3.
This and more at my website: https://sites.google.com/site/sorsbysj/
LinkedIn: https://www.linkedin.com/in/skylersorsby
pixels (those below the elevation subdivision), and you still get zero. Add all the pixels
with a value of one (those above the subdivision), and you effectively count the number
of upslope pixels (which approximates drainage area). Now, the data is ready for Excel.
8) Export the catchment vector as a csv file, for use in Excel.
*** See the appendix for a qualitative walkthrough of the next few steps***
9) Open Excel. Rename the column headers, in which you’ve concealed the elevation
subdivision value, to just the numeric elevation value. Delete all columns except the
ones that sum the pixels within the catchment boundaries. Remember, since elevations
below the benchmark are zero, and all elevations above are set to a value of one,
summing these values can tell you exactly how many pixels are upslope of each
elevation benchmark (a proxy for upslope drainage area).
10) Use the min() function to find the minimum value of each row (one row of elevation
values, many rows of upslope pixel values- one for each catchment). Put the minimum
values in a separate column.
11) Subtract the minimum value for each row from all elements those rows, using the $
sign to keep the cell containing minimum pixel count constant. This will yield a new set
of rows, with the elevations and pixel sums shifted to a minimum of zero.
12) Use the max() function to find the new maximum of each row. Do the same as
before, dividing each row by its maximum value.
13) Now, you should have one row of normalized (0-1 scale) elevations, and as many
rows of normalized drainage area (approximated by number of upslope pixels) as there
are catchments.
14) Plot normalized drainage area (x-axis) by normalized elevation (y-axis) for each
basin. The resulting graph is a comparison of the hypsometric curve for each basin (Fig.
3).
This and more at my website: https://sites.google.com/site/sorsbysj/
LinkedIn: https://www.linkedin.com/in/skylersorsby
Appendix: Example data tables
The GRASS attribute table (raw export to Excel):
Cat M500_sum … M600_sum … M700_sum … M800_sum … M900_sum
1 10,000 … 8,000 … 7,500 … 6,800 … 6,000
2 11,000 … 10,500 … 9,500 … 9,000 … 8,500
3 9,500 … 9,000 … 8,500 … 7,500 … 6,500
4 10,500 ... 9,500 … 8,000 … 6,000 … 5,000
After some cleanup in Excel:
Elevation 500 600 700 800 900 500
Upslope pix, Basin 1 10,000 8,000 7,500 6,800 6,000 6,000
Upslope pix, Basin 2 11,000 10,500 9,500 9,000 8,500 8,500
Upslope pix, Basin 3 9,500 9,000 8,500 7,500 6,500 6,500
Upslope pix, Basin 4 10,500 9,500 8,000 6,000 5,000 5,000
 Delete all except ‘SUM’ columns
 Change headers from a name to raw elevation
 Create a new column containing minimum values for each row (shown in red here).
Next:
Elevation 0 100 200 300 400 400
Upslope pix, Basin 1 4,000 2,000 1,500 800 0 4,000
Upslope pix, Basin 2 2,500 2,000 1,000 500 0 2,500
Upslope pix, Basin 3 3,000 2,500 2,000 1,000 0 3,000
Upslope pix, Basin 4 5,500 4,500 3,000 1,000 0 5,500
 Subtract the minimum value from each row, effectively shifting the scale from zero to a new,
smaller maximum
 Create a new column that contains the maximum value for each row
Finally, divide each row by their respective maximum values, and plot each basin row vs. norm elevaion:
Elevation 0 ¼ ½ 3/4 1
Upslope pix, Basin 1 1 1/2 3/8 1/5 0
Upslope pix, Basin 2 1 4/5 2/5 1/5 0
Upslope pix, Basin 3 1 5/6 2/3 1/3 0
Upslope pix, Basin 4 1 9/11 6/11 2/11 0
Drainage
basins ID in
shapefile
Other, unneeded
statistics (delete in Excel)
I include the elevation in the column
header, but column names CAN’T start
with a number!

More Related Content

PPTX
MORPHOGENETIC REGIONS.pptx
PPTX
Scale of photograph (Aerial Photogrammetry)
PPTX
Components of Remote Sensing
PDF
Introduction to spatial interaction modelling
PPTX
Introduction to Maps
PDF
Morphometric analysis of vrishabhavathi watershed using remote sensing and gis
PPTX
MORPHOLOGY OF RURAL SETTLEMENTS
MORPHOGENETIC REGIONS.pptx
Scale of photograph (Aerial Photogrammetry)
Components of Remote Sensing
Introduction to spatial interaction modelling
Introduction to Maps
Morphometric analysis of vrishabhavathi watershed using remote sensing and gis
MORPHOLOGY OF RURAL SETTLEMENTS

What's hot (20)

PDF
Physiographic divisions of India
PPTX
GEOGRAPHY OF EASTERN GHATS
PPT
Remote Sensing & GIS.ppt
PPTX
Raster data model
PDF
Ground water fluctuations in Northwestern Bangladesh (Over last 30 years) Imp...
PPTX
Indian river system
PPTX
Digital Elevation Model (DEM)
PPTX
Dichotomy and Dualism
PPT
Catchment area
PPTX
Hominid evolution
PDF
Digital image processing
PPT
King's model-Geomorhology Chapter
PPTX
Assessment of Water Supply–Demand for a Watershed using WEAP Model
PDF
Iirs Role of Remote sensing and GIS in Ground water studies
PPTX
Toposheet indexing .
PDF
spatial resolutionin remote sensing
PPTX
Hydrogeology of jammu and kashmir
DOCX
Digital Elevation Model, Its derivatives and applications
PPSX
Drainage pattern and types
PPTX
concepts of Geomorphology by Thornbury
Physiographic divisions of India
GEOGRAPHY OF EASTERN GHATS
Remote Sensing & GIS.ppt
Raster data model
Ground water fluctuations in Northwestern Bangladesh (Over last 30 years) Imp...
Indian river system
Digital Elevation Model (DEM)
Dichotomy and Dualism
Catchment area
Hominid evolution
Digital image processing
King's model-Geomorhology Chapter
Assessment of Water Supply–Demand for a Watershed using WEAP Model
Iirs Role of Remote sensing and GIS in Ground water studies
Toposheet indexing .
spatial resolutionin remote sensing
Hydrogeology of jammu and kashmir
Digital Elevation Model, Its derivatives and applications
Drainage pattern and types
concepts of Geomorphology by Thornbury
Ad

Similar to Derive hypsometric curves in GRASS GIS (20)

PDF
Create swath profiles in GRASS GIS
PDF
Exercise advanced gis_and_hydrology
PDF
Calculation of sinuosity in GRASS GIS
PDF
Ex32018.pdf
PDF
PDF
05 Geographic scripting in uDig - halfway between user and developer
PPTX
How to combine interpolation and regression graphs in R
PDF
2015 Recycle Rush2
PDF
Isam2_v1_2
PDF
Programming a Seismic Program Articl.pdf
PDF
Fusing Transformations of Strict Scala Collections with Views
PDF
Flood plain mapping
PDF
Tarea1
PDF
PART 5: RASTER DATA
PPTX
CIV1900 Matlab - Plotting & Coursework
PDF
How big-is-your-graph
DOCX
ITS 630 – Residency Project Circuit City was an American c.docx
PPTX
Introduction to Data Visualization for Agriculture and Allied Sciences using ...
PDF
Terrain AnalysisBackgroundAircraft frequently rely on terrain el.pdf
PDF
Presentation of Linear Regression with Multiple Variable-4.pdf
Create swath profiles in GRASS GIS
Exercise advanced gis_and_hydrology
Calculation of sinuosity in GRASS GIS
Ex32018.pdf
05 Geographic scripting in uDig - halfway between user and developer
How to combine interpolation and regression graphs in R
2015 Recycle Rush2
Isam2_v1_2
Programming a Seismic Program Articl.pdf
Fusing Transformations of Strict Scala Collections with Views
Flood plain mapping
Tarea1
PART 5: RASTER DATA
CIV1900 Matlab - Plotting & Coursework
How big-is-your-graph
ITS 630 – Residency Project Circuit City was an American c.docx
Introduction to Data Visualization for Agriculture and Allied Sciences using ...
Terrain AnalysisBackgroundAircraft frequently rely on terrain el.pdf
Presentation of Linear Regression with Multiple Variable-4.pdf
Ad

Recently uploaded (20)

PPTX
cpcsea ppt.pptxssssssssssssssjjdjdndndddd
PPT
The World of Physical Science, • Labs: Safety Simulation, Measurement Practice
PDF
Placing the Near-Earth Object Impact Probability in Context
PPT
protein biochemistry.ppt for university classes
PPTX
7. General Toxicologyfor clinical phrmacy.pptx
PDF
An interstellar mission to test astrophysical black holes
PPTX
Taita Taveta Laboratory Technician Workshop Presentation.pptx
PPTX
Derivatives of integument scales, beaks, horns,.pptx
PPTX
The KM-GBF monitoring framework – status & key messages.pptx
PPTX
Introduction to Fisheries Biotechnology_Lesson 1.pptx
PPTX
Comparative Structure of Integument in Vertebrates.pptx
PPTX
Classification Systems_TAXONOMY_SCIENCE8.pptx
PPTX
DRUG THERAPY FOR SHOCK gjjjgfhhhhh.pptx.
PPTX
2. Earth - The Living Planet earth and life
PPTX
2. Earth - The Living Planet Module 2ELS
PDF
The scientific heritage No 166 (166) (2025)
PPTX
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
PPTX
ANEMIA WITH LEUKOPENIA MDS 07_25.pptx htggtftgt fredrctvg
PDF
HPLC-PPT.docx high performance liquid chromatography
PPTX
neck nodes and dissection types and lymph nodes levels
cpcsea ppt.pptxssssssssssssssjjdjdndndddd
The World of Physical Science, • Labs: Safety Simulation, Measurement Practice
Placing the Near-Earth Object Impact Probability in Context
protein biochemistry.ppt for university classes
7. General Toxicologyfor clinical phrmacy.pptx
An interstellar mission to test astrophysical black holes
Taita Taveta Laboratory Technician Workshop Presentation.pptx
Derivatives of integument scales, beaks, horns,.pptx
The KM-GBF monitoring framework – status & key messages.pptx
Introduction to Fisheries Biotechnology_Lesson 1.pptx
Comparative Structure of Integument in Vertebrates.pptx
Classification Systems_TAXONOMY_SCIENCE8.pptx
DRUG THERAPY FOR SHOCK gjjjgfhhhhh.pptx.
2. Earth - The Living Planet earth and life
2. Earth - The Living Planet Module 2ELS
The scientific heritage No 166 (166) (2025)
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
ANEMIA WITH LEUKOPENIA MDS 07_25.pptx htggtftgt fredrctvg
HPLC-PPT.docx high performance liquid chromatography
neck nodes and dissection types and lymph nodes levels

Derive hypsometric curves in GRASS GIS

  • 1. This and more at my website: https://sites.google.com/site/sorsbysj/ LinkedIn: https://www.linkedin.com/in/skylersorsby Hypsometric curves in GRASS gis Author: Skyler Sorsby Geomorphic indices are powerful tools with which to gauge spatial change across a landscape. Most of these indices are readily derived from topographic maps, whether in paper or digital form. Hypsometry, in particular, quantifies the distribution of relief across a given drainage basin. There are two primary metrics associated with hypsometry: the hypsometric curve (HC) and the hypsometric integral (HI).The hypsometric integral is a simple, scalar value representing the general relief of a basin. The hypsometric curve, in comparison, takes elevations distributed across a drainage basin, plots them against upslope contributing area, and produces a meaningful, distinct curve that can be compared with those of other basins, like so: Figure 1. Idealized hypsometric curves, illustrating a landscape aging cycle. Data of this type is easily extracted from Digital Elevation Models (DEMs) with the aid of common hydrologic flow algorithms in a Geographic Information System (GIS). In this document, I use GRASS to create a hypsometric curve, although the methodology can be easily abstracted for use in any other GIS. 1) Load a DEM Obtaining elevation data is a preliminary stage in any GIS-based topographic analysis. Several good sources include the SRTM database (30 and 90-meter SAR data), OpenTopography (lidar), and the National Map (all ranges of data resolution and type, across the USA). Once the DEM is opened in a GIS, and in the correct projection, you’re ready to start.
  • 2. This and more at my website: https://sites.google.com/site/sorsbysj/ LinkedIn: https://www.linkedin.com/in/skylersorsby 2) Fill the DEM DEM construction is a careful and involved procedure. Nonetheless, even the best DEM has artificial error. ‘Pits’, a particular elevation artefact in which a given pixel is lower than all adjacent pixels, interrupt most hydrological routines (which are necessary for gathering hypsometric data). Since water flows down slopes, any pit artefacts will mislead the algorithm and interrupt the true flow path. The solution to this problem is to “fill” the pits, allowing modeled flow to proceed in its real downhill course. This function is built into most hydrological toolkits. In GRASS, it’s called “r.fill.dir”. Use this tool to make a depression-less map. 3) Run the hydrological flow algorithm Like pit-filling algorithms, flow modeling routines are common to most GIS softwares. In GRASS, this particular tool is called r.watershed. Its functionality far exceeds what we’ll use it for in this workflow. As one of the more powerful algorithms in GRASS, it can map out flow accumulation, direction of downslope flow, estimated locations of stream channels, watershed basins, etc. The only output we care about for this particular exercise, however, is the raster map of watershed boundaries. In order to work across landscape scales, r.watershed incorporates a user-defined area threshold for calculated basins: all basins will be larger than a set number of pixels. Here, we can use that threshold to eliminate all the smaller catchments that we do not wish to study, and trim the map to primary drainages. 4) Use r.to.vect to make vector polygons (areas) of the watersheds. 5) You’ll probably still find that the number of output watersheds exceeds that which you wish to study. Right click on the watershed vector you’ve just created, in the table of contents, and open the attribute table. There, select all catchments you wish to ignore, and delete them. 6) Using univariate raster statistics, find the maximum and minimum elevation values in your DEM (which you’ve hopefully clipped to contain only your study area). These elevations will respectively have no upslope area and maximum upslope area, and represent the two extremes of your hypsometry plots. Subdivide these elevations
  • 3. This and more at my website: https://sites.google.com/site/sorsbysj/ LinkedIn: https://www.linkedin.com/in/skylersorsby equally, with sufficient sampling density to produce a curve that exhibits changes (10 or so subdivisions is a good place to start, Fig.1). Here’s where raster algebra comes into play. If you have a DEM named ‘mapname’, for example, the following syntax: ‘mapname’ > 1000 will yield a new, binary map of all elevations greater than 1000 (whether it’s in meters or feet depends on your data). All pixels higher than 1000 receive a value of 1, and those lower receive a value of zero. This effectively creates a mask of your study area, whose shape is bounded by a minimum elevation you’ve chosen. Make binary maps for each of your determined elevation subdivisions (Fig. 1). Name each raster map after the elevation it’s greater than. 7) Use the v.rast.stats tool to survey each binary map within the boundaries of your catchment vector. For each run, name the column after the corresponding raster name. For example, if you surveyed the raster map where all pixels = 1 above 1500’, name it f1500. Don’t begin the column name with a number; GRASS can’t understand that. Now, you should have a shapefile (vectorized from the r.watershed output), with one row per catchment. Each column should contain statistics for the binary “elevation above” maps. Each column title should somehow contain, but not begin with, the elevation value for the given binary map. The columns you’ll wind up keeping contain the sums of all pixel values within a given catchment. We don’t care about minimum, mean, or maximum raster values. Nor do we care about the variance or the number of pixels surveyed (pixels of zero value still count, so n is the same for each raster surveyed). The sum, however, of all pixels within a given catchment captures exactly what we’re looking for. Add all the zero-value Figure 2. Binary maps of upslope pixels in a study area (Cleman Mtn, WA). 3.
  • 4. This and more at my website: https://sites.google.com/site/sorsbysj/ LinkedIn: https://www.linkedin.com/in/skylersorsby pixels (those below the elevation subdivision), and you still get zero. Add all the pixels with a value of one (those above the subdivision), and you effectively count the number of upslope pixels (which approximates drainage area). Now, the data is ready for Excel. 8) Export the catchment vector as a csv file, for use in Excel. *** See the appendix for a qualitative walkthrough of the next few steps*** 9) Open Excel. Rename the column headers, in which you’ve concealed the elevation subdivision value, to just the numeric elevation value. Delete all columns except the ones that sum the pixels within the catchment boundaries. Remember, since elevations below the benchmark are zero, and all elevations above are set to a value of one, summing these values can tell you exactly how many pixels are upslope of each elevation benchmark (a proxy for upslope drainage area). 10) Use the min() function to find the minimum value of each row (one row of elevation values, many rows of upslope pixel values- one for each catchment). Put the minimum values in a separate column. 11) Subtract the minimum value for each row from all elements those rows, using the $ sign to keep the cell containing minimum pixel count constant. This will yield a new set of rows, with the elevations and pixel sums shifted to a minimum of zero. 12) Use the max() function to find the new maximum of each row. Do the same as before, dividing each row by its maximum value. 13) Now, you should have one row of normalized (0-1 scale) elevations, and as many rows of normalized drainage area (approximated by number of upslope pixels) as there are catchments. 14) Plot normalized drainage area (x-axis) by normalized elevation (y-axis) for each basin. The resulting graph is a comparison of the hypsometric curve for each basin (Fig. 3).
  • 5. This and more at my website: https://sites.google.com/site/sorsbysj/ LinkedIn: https://www.linkedin.com/in/skylersorsby Appendix: Example data tables The GRASS attribute table (raw export to Excel): Cat M500_sum … M600_sum … M700_sum … M800_sum … M900_sum 1 10,000 … 8,000 … 7,500 … 6,800 … 6,000 2 11,000 … 10,500 … 9,500 … 9,000 … 8,500 3 9,500 … 9,000 … 8,500 … 7,500 … 6,500 4 10,500 ... 9,500 … 8,000 … 6,000 … 5,000 After some cleanup in Excel: Elevation 500 600 700 800 900 500 Upslope pix, Basin 1 10,000 8,000 7,500 6,800 6,000 6,000 Upslope pix, Basin 2 11,000 10,500 9,500 9,000 8,500 8,500 Upslope pix, Basin 3 9,500 9,000 8,500 7,500 6,500 6,500 Upslope pix, Basin 4 10,500 9,500 8,000 6,000 5,000 5,000  Delete all except ‘SUM’ columns  Change headers from a name to raw elevation  Create a new column containing minimum values for each row (shown in red here). Next: Elevation 0 100 200 300 400 400 Upslope pix, Basin 1 4,000 2,000 1,500 800 0 4,000 Upslope pix, Basin 2 2,500 2,000 1,000 500 0 2,500 Upslope pix, Basin 3 3,000 2,500 2,000 1,000 0 3,000 Upslope pix, Basin 4 5,500 4,500 3,000 1,000 0 5,500  Subtract the minimum value from each row, effectively shifting the scale from zero to a new, smaller maximum  Create a new column that contains the maximum value for each row Finally, divide each row by their respective maximum values, and plot each basin row vs. norm elevaion: Elevation 0 ¼ ½ 3/4 1 Upslope pix, Basin 1 1 1/2 3/8 1/5 0 Upslope pix, Basin 2 1 4/5 2/5 1/5 0 Upslope pix, Basin 3 1 5/6 2/3 1/3 0 Upslope pix, Basin 4 1 9/11 6/11 2/11 0 Drainage basins ID in shapefile Other, unneeded statistics (delete in Excel) I include the elevation in the column header, but column names CAN’T start with a number!