Authors: Michel Wortmann, Louise Slater, Laurence Hawker, Yinxue Liu, Jeffrey Neal
Licensed under CC BY-NC 4.0
The Global River Topology (GRIT) is a vector-based, global river network that not only represents the tributary components of the global drainage network but also the distributary ones, including multi-thread rivers, canals and delta distributaries. It is also the first global hydrography (excl. Antarctica and Greenland) produced at 30m raster resolution. It is created by merging Landsat-based river mask (GRWL) with elevation-generated streams to ensure a homogeneous drainage density outside of the river mask (rivers narrower than approx. 30m). Crucially, it uses a new 30m digital terrain model (FABDEM, based on TanDEM-X) that shows greater accuracy over the traditionally used SRTM derivatives. After vectorisation and pruning, directionality is assigned by a combination of elevation, flow angle, heuristic and continuity approaches (based on RivGraph). The network topology (lines and nodes, upstream/downstream IDs) is available as layers and attribute information in the GeoPackage files (readable by QGIS/ArcMap/GDAL).
Regions
Vector files are provided in 6 continental regions with the following codes:
The domain polygons (GRITv04_domain_GLOBAL.gpkg.zip) provide 60 subcontinental catchment groups that are available as vector attributes. They allow for more fine-grained subsetting of data (e.g. with ogr2ogr --where).
Network segments
Lines between inlet, outlet, confluence and bifurcation nodes. Files have lines and nodes layers.
Attribute description of lines layer
| Name | Data type | Description |
|---|---|---|
| cat | integer | domain internal feature ID |
| global_id | integer | global river segment ID, same as FID |
| catchment_id | integer | global catchment ID |
| upstream_node_id | integer | global segment node ID at upstream end of line |
| downstream_node_id | integer | global segment node ID at downstream end of line |
| upstream_line_ids | text | comma-separated list of global river segment IDs connecting at upstream end of line |
| downstream_line_ids | text | comma-separated list of global river segment IDs connecting at downstream end of line |
| direction_algorithm | float | code of RivGraph method used to set the direction of line |
| width_adjusted | float | median river width in m without accounting for width of segments connecting upstream/downstream |
| length_adjusted | float | segment length in m without accounting for width of segments connecting upstream/downstream in m |
| is_mainstem | integer | 1 if widest segment of bifurcated flow or no bifurcation upstream, otherwise 0 |
| cycle | integer | >0 if segment is part of an unresolved cycle, 0 otherwise |
| length | float | segment length in m |
| azimuth | float | direction of line connecting upstream-downstream nodes in degrees from North |
| sinuousity | float | ratio of eucledian distance betwen upstream-downstream nodes and line length, i.e. 1 meaning a perfectly straight line |
| domain | text | catchment group ID, see domain index file |
Attribute description of nodes layer
| Name | Data type | Description |
|---|---|---|
| cat | integer | domain internal feature ID |
| global_id | integer | global river node ID, same as FID |
| catchment_id | integer | global catchment ID |
| upstream_line_ids | text | comma-separated list of global river segment IDs flowing into node |
| downstream_line_ids | text | comma-separated list of global river segment IDs flowing out of node |
| node_type | text | description of node, one of bifurcation, confluence, inlet, coastal_outlet, sink_outlet, grwl_change |
| grwl_value | integer | GRWL code at node |
| grwl_transition | text | GRWL codes of change at grwl_change nodes |
| cycle | integer | >0 if segment is part of an unresolved cycle, 0 otherwise |
| continuity_violated | integer | 1 if flow continuity is violated, otherwise 0 |
| domain | text | catchment group, see domain index file |
Network reaches
Segment lines split to not exceed 1km in length, i.e. these lines will be shorter than 1km and longer than 500m unless the segment is shorter. A simplified version with no vertices between nodes is also provided. Files have lines and nodes layers.
Attribute description of lines layer
| Name | Data type | Description |
|---|---|---|
| cat | integer | domain internal feature ID |
| segment_id | integer | global segment ID of reach |
| global_id | integer | global river reach ID, same as FID |
| catchment_id | integer | global catchment ID |
| upstream_node_id | integer | global reach node ID at upstream end of line |
| downstream_node_id | integer | global reach node ID at downstream end of line |
| upstream_line_ids | text | comma-separated list of global river reach IDs connecting at upstream end of line |
| downstream_line_ids | text | comma-separated list of global river reach IDs connecting at downstream end of line |
| length | float | length of reach in m |
| sinuousity | float | ratio of eucledian distance betwen upstream-downstream nodes and line length, i.e. 1 meaning a perfectly straight line |
| azimuth | float | direction of line connecting upstream-downstream nodes in degrees from North |
| domain | text | catchment group, see domain index file |
Attribute description of nodes layer
| Name | Data type | Description |
|---|---|---|
| cat | integer | domain internal feature ID |
| segment_node_id | integer | global ID of segment node at segment intersections, otherwise blank |
| n_segments | integer | number of segments attached to node |
| global_id | integer | global river reach node ID, same as FID |
| upstream_line_ids | text | comma-separated list of global river reach IDs flowing into node |
| downstream_line_ids | text | comma-separated list of global river reach IDs flowing out of node |
| domain | text | catchment group, see domain index file |
Catchments
Catchment outlines for entire river basins (network components, including coastal drainage areas), segments (aka. subbasins) and reaches.
Attribute description
| Name | Data type | Description |
|---|---|---|
| cat | integer | domain internal feature ID |
| global_id | integer | global catchment ID, same as global_id of segment/reach ID if is_coastal == 0 for respective catchments or the catchment_id for component_catchments, same as FID |
| area | float | catchment area in km2 |
| is_coastal | integer | 1 for coastal drainage areas, 0 otherwise |
| domain | text | catchment group, see domain index file |
Raster
Upstream drainage area, flow direction and other raster-based products are also available upon request.