How Sink works

A sink is a cell or set of spatially connected cells whose flow direction cannot be assigned one of the eight valid values in a flow direction raster. This can occur when all neighboring cells are higher than the processing cell or when two cells flow into each other, creating a two-cell loop.

Sinks are considered to have undefined flow directions and are assigned a value that is the sum of their possible directions. For example, if the steepest drop and, therefore, flow direction are the same to both the right (1) and left (16), the value 17 would be assigned as the flow direction for that cell.

To create an accurate representation of flow direction and, therefore, accumulated flow, it is best to use a dataset that is free of sinks. A digital elevation model (DEM) that has been processed to remove all sinks is called a depressionless DEM.

Sinks in elevation data are most commonly due to errors in the data. These errors are often caused by sampling effects and the rounding of elevations to integer numbers. Naturally occurring sinks in elevation data with a cell size of 10 meters or larger are rare (Mark 1988), except in glacial or karst areas, and generally can be considered errors. As the cell size increases, the number of sinks in a dataset also often increases.

The identification and removal of sinks, when creating a depressionless DEM, is an iterative process. When a sink is filled, the boundaries of the filled area may create new sinks that need to be filled. The topics regarding the Zonal Fill tool help explain how to create a depressionless DEM.

It is sometimes useful to know the depth of a sink or group of sinks. This information can be used to determine an appropriate value to set for Z limit for the Fill tool or to understand the type of errors present in the data.

Profile view of a sink
Profile view of a sink


A procedure using geoprocessing tools to fill sinks follows:

  1. Use Sink to create a raster of sinks coded with depth.

    Input flow direction raster : flowdir

    Output raster : sinks

  2. Use Watershed to create a raster of the contributing area for each sink.

    Input flow direction raster : flowdir

    Input raster or feature pour point data : sinks

    Output raster : sink_areas

  3. Use Zonal Statistics with the minimum statistic to create a raster of the minimum elevation in the watershed of each sink.

    Input raster or feature zone data : sink_areas

    Zone field : Value

    Input value raster : elevation

    Output raster : sink_min

    Statistics type : MINIMUM

  4. Use Zonal Fill to create a raster of the maximum elevation in the watershed of each sink.

    Input zone raster : sink_areas

    Input weight raster : elevation

    Output raster : sink_max

  5. Use Minus to subtract the minimum value from the maximum value to find the depth.

    Input raster 1 : sink_max

    Input raster 2 : sink_min

    Output raster : sink_depth

This is the same procedure using Map Algebra in ArcPy:

sinks = Sink(flowdir
sink_areas = Watershed(flowdir, sinks)
sink_min = ZonalStatistics(sink_areas, "Value", elevation, "Minimum")
sink_max = ZonalFill(sink_areas, elevation)
sink_depth = Minus(sink_max, sink_min)


Mark, D. M. 1988. "Network Models in Geomorphology." Modelling Geomorphological Systems, ed. M. G. Anderson. New York: John Wiley. 73–97.

Related Topics