Proposal:Waterways classification

From OpenStreetMap Wiki
Jump to navigation Jump to search
Waterways classification
Proposal status: Abandoned (inactive)
Proposed by: kocio
Tagging: order:*=*
Applies to: wayrelation
Definition: Classification of waterways using "stream order" systems

Draft started: 2017-08-09
RFC start: 2017-08-09


This is a proposition to start tagging waterways (especially rivers) classification with already used in cartography/GIS "stream order" system. This system is used to indicate the level of waterways branching and has at least few known subsystems:

  • classic stream order (also called Hack's stream order or Gravelius' stream order),
  • Strahler stream order (also Strahler number or Horton–Strahler number),
  • Shreve stream order (with Hodgkinson et al.)

They all use positive whole numbers, however there are different algorithms and purposes (according to Wikipedia):

  • Classic system - if the waterway goes to sea, is numbered as "1", its tributaries are numbered as "2", next level tributaries are numbered as "3" and so on. Suitable for general cartographic purposes, connected to a river name.
  • Strahler system - starting with "1" from the sources. If two waterways of the same order merge, the resulting waterway is given a number that is one higher. If two waterway with different orders merge, the resulting waterway is given the higher of the two numbers. It's designed for the morphology of a catchment and forms the basis of important hydrographical indicators of its structure, such as bifurcation ratio, drainage density and frequency, it's also usable for small-scale structures.
  • Shreve system - starting with "1" from the sources, but waterways numbers are simply added when merging. It's preferred in hydrodynamics: it sums the number of sources in each catchment above a stream gauge or outflow, and correlates roughly to the discharge volumes and pollution levels.

Other possible approaches

Other systems are possible, like synthetic, complex categories based on OSM road types definitions - for example:

  • "big river - in developed countries a waterway of national or international importance, with elements of river engineering, typically used for transport or as a source of hydropower. Usually runs through some large towns."
  • "medium river - a waterway of regional importance, with possibility of river engineering. Usually runs through some small towns."
  • "small river - a waterway of local importance, bigger than stream, where typically only canoes and small boats can go and no river engineering was done. Usually runs through the rural areas."

but they are outside of the scope of this proposition and would be complementary to this system, because branching does not tell the whole story about how important given waterway is.

See for example Proposed features/Rivers Classification.


OSM has only one way of general categorization waterways - streams and rivers (other than canals, drains and other well defined entities). It's very handy at the small scale, but at the large scale all the rivers are basically the same in our database. It should be possible to have general categories like we do with roads network, so we could for example render world map with only the most important rivers.

We have a CEMT=* system defined outside of the OSM, but it's only for waterways in Europe.


Small river that goes straight to the sea with no tributaries (going to the sea is "1" in classic, not having tributaries is "1" in both Strahler and Shreve systems):

  • name=River1 + waterway=river + order:classic=1 + order:strahler=1 + order:shreve=1

Multi-segment river relation which is tributary to another river, which goes directly to the sea (1 incremented with +1):

  • name=River2 + type=waterway + waterway=river + order:classic=2

Segment of the river (until next merging) that is merging two tributaries with Shreve numbers "1" and "2" (sum of 1 and 2):

  • name=River3 + waterway=river + order:shreve=3

Segment of the river (until next merging) that is merging two tributaries with Strahler numbers "1" and "2" (maximal value of 1 and 2, because they are different):

  • name=River4 + waterway=river + order:strahler=2

Segment of the river (until next merging) that is merging two tributaries with Strahler numbers "2" and "2" (2 incremented with +1, because they are the same):

  • name=River5 + waterway=river + order:strahler=3



  • order=* itself is excluded from using with waterways, since it's not clear which of many different ranking system it's related to

Other important tags:

  • distance=* - other partial feature which tells how important given waterway is

Applies to

  • way - streams and small rivers, segments of bigger rivers
  • relation - bigger rivers


Rendering rivers on the large scale should omit small and medium rivers. Branching schema allows to show given level of waterway network, without filtering with any schema the map is cluttered.

* - less important 1. tier rivers could be ruled out by small distance=* number or using other features

Features/Pages affected

External discussions

See also the article "Stream classification techniques":


Please comment on the discussion page.