ArcGIS Pro

Creating a depressionless DEM

In this topic

A digital elevation model (DEM) free of sinks—a depressionless DEM—is the desired input to the flow direction process. The presence of sinks may result in an erroneous flow-direction raster. In some cases, there may be legitimate sinks in the data. It is important to understand the morphology of the area well enough to know what features may truly be sinks on the surface of the earth and which are merely errors in the data. The tools in the Hydrology toolset of the ArcGIS Spatial Analyst extension are useful in preparing a depressionless elevation surface.

Identifying sinks

Sinks can be located using the Sink tool. This tool requires a direction raster that is created by the Flow Direction tool. The result is a raster that identifies any existing sinks in the data. Depending on the results, you can fill the sinks, or you can use the output to help determine the fill limit. Sinks can be filled using the Fill tool. To use the output from Sink to determine the fill limit, refer to "Finding sink depth" in this topic (below).

Profile view of a sink

Filling sinks

The Fill tool uses a variety of Spatial Analyst tools, including several of the hydrologic analysis tools discussed earlier, to create a depressionless DEM. This tool requires an input surface, a fill limit, and an output raster. When a sink is filled, it is filled to its pour point, the minimum elevation along its watershed boundary.

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, which then need to be filled. For a large DEM or one with many sinks, this can take minutes to hours.

Finding sink depth

It is useful to know the depth of a sink or group of sinks. This information can be used to determine an appropriate z limit for the Fill tool, to understand the type of errors present in the data, and to determine if the sinks are legitimate morphological features. The following steps outline the general process to find sink depth:

Create a raster of sinks with values that identify their depth by running the Sink tool to locate sinks in the raster.

Use the Watershed tool to create a raster of the contributing area for each sink using the flow direction from the elevation raster and the output from the Sink tool as input for pour points.

With Map Algebra in Python, use the Zonal Statistics tool with the Minimum option to create a raster of the minimum elevation in the watershed of each sink:

sink_min = ZonalStatistics(sink_areas, "Value", elev_ras, "Minimum")

The sink_areas input is the output from the Watershed tool.

Create a raster containing the lowest elevation along the boundary of each watershed with the Zonal Fill tool (this corresponds to the elevation at which flow would leave the basin after filling to the rim):

sink_max = ZonalFill(sink_areas, elev_ras)

Use the Minus tool to subtract the minimum value from the maximum value to find the depth again:

sink_depth = Minus(sink_max, sink_min)

The above sequence can also be completed using the Sink, Watershed, Zonal Statistics, Zonal Fill, and Minus geoprocessing tools.