Skip to main content

Overview of Terrain Preprocessing Workflows

August 2019

tip

Download the PDF here

Introduction

Arc Hydro is a data model, toolset, and workflows developed over the years to support specific GIS implementations in water resources. The initial implementation of Arc Hydro was in 2002 with the data model, Arc Hydro book published by Esri Press, and initial set of about 30 tools. Since then, Arc Hydro has been used in many projects and in the process new tools and workflows have been developed. Arc Hydro tools now number in the 300s and continue to be expanded based on work on specific implementations.

This document describes key steps in Arc Hydro deranged, combined, and dendritic terrain preprocessing using Arc Hydro tools. The processing is organized into workflows based on the key geomorphologic characteristic of the terrain being processed. Approach taken in this document is to describe multiple use cases and which tools to use to generate "proper" results. Not all Arc Hydro terrain preprocessing tools are presented here, there are other tools that can be used in specific morphologies and processing requirements. The use cases presented here are the most commonly encountered ones.

While the screen captures are based on ArcMap product, this document is not focused on a specific version of ArcGIS or Arc Hydro - it is a set of generic recommendations that transcend specific versions.

Document history

Table 1. Document Revision History

VersionDescriptionDate
1First Version (DD)06/2012
2Major revisions (DD)03/2013
2.1Minor revisions (DD)01/2014
3Minor revisions, new "look", ArcGIS Pro reference (DD)08/2019

Solution Overview

Terrain preprocessing capabilities are implemented as many Arc Hydro tools organized in the "Terrain Preprocessing" toolset. Some of the basic tools described in this document are also present in the Arc Hydro Arc Map toolbar (but not in ArcGIS Pro Arc Hydro tools ribbon). When options are available, it is recommended that python version of the tools from the toolset is used.

Figure 1. Arc Hydro "Terrain Preprocessing" toolbox/toolset (Arc Hydro Tools Python).

The original set of tools discussed in this document have been part of Arc Hydro 10.x platform since version 10.2.0.68. and are in the Arc Hydro Tools Pro toolbox supporting ArcGIS Pro 2.3.3 and higher. There is no difference in behavior or functionality between all versions of the tools. This document uses screenshots from the ArcMap version of the tools.

Overview of Arc Hydro Terrain Preprocessing Workflows

Geomorphologic (use case) terminology:

  • Completely deranged terrain. Contains only sinks. Streams are not represented in Arc Hydro.

  • Completely dendritic terrain. There are no sinks in the system, only streams.

  • Combined dendritic/deranged terrain. There are streams and sinks in the system. Streams can be independent from the sinks and/or flow into them.

There can be additional steps in terrain preprocessing that are not explicitly discussed in this document such as sink prescreening or walling, or data development steps such as "Create Sinks for Line Structure" or "Create Synthetic Sinks". These techniques/tools do not impact the order and tool capabilities presented in this document. These operations can be inserted into presented workflows with minimal impact. The placement though needs to be correct to obtain proper effect (e.g. first fence and then burn if you want the fenced area to flow out, or first burn and then fence if you do not want the area to flow out).

Table 2. Overview of terrain processing use cases/workflows.

Deranged onlyCombinedDendritic only
DEM only (no stream or sink information)

Use case 1

Use case 2

Use case 4Use case 7
DEM and known sinksUse case 3
DEM and known streams and sinks

Use case 5

Use case 6

DEM and known streams

Use case 8

Use case 9

Note that the tools expect "clean" and consistent data. For example, streams that are to be burned in, must extend to the edge of the DEM or end in a sink, have to be snapped at confluences, and should be digitized in downstream direction.

The tools leverage existing Arc Hydro database design for feature identification and default layer naming. Due to the integrated nature of terrain preprocessing, the tools and data structures are designed to be closely tied together and executed in specific sequence.

Use Cases

Use case 1: Completely deranged terrain with unknown sink location and no filling of sinks

  1. Sink Evaluation.

  2. Create Sink Structures.

  3. Flow Direction.

  4. Adjust Flow Direction in Sinks.

  5. Sink Watershed Delineation.

  6. Append Coastal Catchments.

  7. Assign CatType Attribute to Catchment FC (optional).

Use case 2: Completely deranged terrain with unknown sink location and some filling of sinks (always needs filling when not keeping all sinks)

  1. Sink Evaluation.

  2. Selection of sinks process (this is NOT an Arc Hydro tool but rather a process). Any technique for selecting sinks can be used. The end result is a "polygon" feature class with polygon features defining sink polys to keep as sinks.

    1. Use Arc Hydro Sink Selection tool.

    2. Interactively pick polys.

    3. ...

  3. Create Sink Structures.

  4. Fill Sinks.

  5. Flow Direction.

  6. Adjust Flow Direction in Sinks.

  7. Sink Watershed Delineation.

  8. Append Coastal Catchments.

  9. Assign CatType Attribute to Catchment FC (optional).

Use case 3: Completely deranged terrain with known sink location and some filling of sinks (always needs filling when not keeping all sinks)

  1. Create Sink Structures.

  2. Level DEM.

  3. Fill Sinks.

  4. Flow Direction.

  5. Adjust Flow Direction in Sinks.

  6. Sink Watershed Delineation.

  7. Append Coastal Catchments.

  8. Assign CatType Attribute to Catchment FC (optional).

Use case 4: Combined dendritic/deranged terrain with unknown initial sink and stream locations

  1. Sink Evaluation.

  2. Selection of sinks process.

  3. Create Sink Structures.

  4. Fill Sinks.

  5. Flow Direction.

  6. Adjust Flow Direction in Sinks.

  7. Adjust Flow Direction in Lakes. This is an optional step if there are lakes that are being drained by the streams (these are NOT sink lakes).

  8. Sink Watershed Delineation.

  9. Flow Accumulation.

  10. Stream Definition.

  11. Stream Segmentation.

  12. Combine Stream Link and Sink Link.

  13. Drainage Line Processing.

  14. Catchment Grid Delineation.

  15. Catchment Polygon Processing.

  16. Adjoint Catchment Processing.

  17. Append Coastal Catchments.

  18. Assign CatType Attribute to Catchment FC (optional).

Use case 5: Combined dendritic/deranged terrain with known sink and stream locations (using synthetic streams)

  1. Create Drainage Line Structures.

  2. DEM Reconditioning.

  3. Create Sink Structures.

  4. Level DEM.

  5. Fill Sinks.

  6. Flow Direction.

  7. Adjust Flow Direction in Sinks.

  8. Adjust Flow Direction in Streams.

  9. Adjust Flow Direction in Lakes (optional).

  10. Sink Watershed Delineation.

  11. Flow Accumulation.

  12. Stream Definition.

  13. Stream Segmentation.

  14. Combine Stream Link and Sink Link

  15. Drainage Line Processing (use combined Stream/Sink Link Grid as input).

  16. Catchment Grid Delineation.

  17. Catchment Polygon Processing.

  18. Adjoint Catchment Processing.

  19. Append Coastal Catchments.

  20. Assign CatType Attribute to Catchment FC (optional).

Use case 6: Combined dendritic/deranged terrain with known sink and stream locations (using user specified streams)

  1. Create Drainage Line Structures.

  2. DEM Reconditioning.

  3. Create Sink Structures.

  4. Level DEM.

  5. Fill Sinks.

  6. Flow Direction.

  7. Adjust Flow Direction in Sinks.

  8. Adjust Flow Direction in Streams.

  9. Adjust Flow Direction in Lakes (optional).

  10. Sink Watershed Delineation.

  11. Combine Stream Link and Sink Link (make sure you specify optional Drainage Line feature class as input).

  12. Catchment Grid Delineation.

  13. Catchment Polygon Processing.

  14. Adjoint Catchment Processing.

  15. Append Coastal Catchments.

  16. Assign CatType Attribute to Catchment FC (optional).

Use case 7: Completely dendritic terrain with unknown stream locations

  1. Fill Sinks.

  2. Flow Direction.

  3. Flow Accumulation.

  4. Stream Definition.

  5. Stream Segmentation.

  6. Drainage Line Processing.

  7. Catchment Grid Delineation.

  8. Catchment Polygon Processing.

  9. Adjoint Catchment Processing.

  10. Append Coastal Catchments.

  11. Assign CatType Attribute to Catchment FC (optional).

Use case 8: Completely dendritic terrain with known stream locations (using synthetic streams)

  1. Fill Sinks.

  2. DEM Reconditioning.

  3. Fill Sinks (to get rid of the sinks potentially introduced by the DEM Reconditioning).

  4. Flow Direction.

  5. Flow Accumulation.

  6. Stream Definition.

  7. Stream Segmentation.

  8. Drainage Line Processing.

  9. Catchment Grid Delineation.

  10. Catchment Polygon Processing.

  11. Adjoint Catchment Processing.

  12. Append Coastal Catchments.

  13. Assign CatType Attribute to Catchment FC (optional).

Use case 9: Completely dendritic terrain with known stream locations (using user specified streams)

  1. Create Drainage Line Structures.

  2. Fill Sinks.

  3. DEM Reconditioning.

  4. Fill Sinks.

  5. Flow Direction.

  6. Adjust Flow Direction in Streams.

  7. Catchment Grid Delineation.

  8. Catchment Polygon Processing.

  9. Adjoint Catchment Processing.

  10. Append Coastal Catchments.

  11. Assign CatType Attribute to Catchment FC (optional).

Use case 10: Model builder implementation in Arc Hydro tools (Terrain Preprocessing Workflows toolset)

Several of the variants of the presented use cases are implemented in Arc Hydro "Terrain Preprocessing Workflows" toolset as Model Builder models. They are intended more as a starting point for your modification of the specific process required by your data than as a turn-key tool. The toolset content might vary with versions of the Arc Hydro tools.

Arc Hydro Tools.tbx

Figure 2. Toolbox/toolset organization structure for specific terrain preprocessing use cases (Arc Hydro Tools).

Table 3. Model builder model names for specific terrain preprocessing use cases in Arc Hydro "Terrain Preprocessing Workflows" toolset (Arc Hydro Tools.tbx).

Use CaseDescriptionModel Builder Name
2Completely deranged terrain with unknown sink location and some filling of sinks (always needs filling when not keeping all sinks)Basic Deranged Terrain Processing
4Combined dendritic/deranged terrain with unknown initial sink and stream locationsBasic Combined Terrain Processing
7Completely dendritic terrain with unknown stream locations. Starting point is the known filled DEM.Basic Dendritic Terrain Processing
7Completely dendritic terrain with unknown stream locations. Starting point are known flow direction and flow accumulation grids (typical situation for NHDPlus dataset).Basic Dendritic Terrain Processing - No Fdr & Fac
9Completely dendritic terrain with known stream locations (using user specified streams) and imposing known boundaries (walls).Dendritic Terrain Processing with Imposed Drainage Line and Wall

Arc Hydro Tools Python.tbx/Arc Hydro Tools Pro.tbx

Figure 3 - Toolbox/toolset organization structure for specific terrain preprocessing use cases (Arc Hydro Python/ProTools).

Table 4. Model builder model names for specific terrain preprocessing use cases in Arc Hydro "Terrain Preprocessing Workflows" toolset (Arc Hydro Tools Python.tbx/Arc Hydro Tools Pro.tbx).

Use CaseDescriptionModel Builder Name
1Completely deranged terrain with unknown sink location and no filling of sinksDeranged Terrain with Known Sink Location and Some Filling
2Completely deranged terrain with unknown sink location and some filling of sinks (always needs filling when not keeping all sinks)Basic Deranged Terrain Processing
3Completely deranged terrain with known sink location and some filling of sinksDeranged Terrain with Known Sink Location and Some Filling
4Combined dendritic/deranged terrain with unknown initial sink and stream locationsCombined Terrain with Unknown Sink and Stream Locations
7Completely dendritic terrain with unknown stream locations. Starting point is the known filled DEM.Basic Dendritic Terrain Processing
7Completely dendritic terrain with unknown stream locations. Starting point are known flow direction and flow accumulation grids (typical situation for NHDPlus dataset).Basic Dendritic Terrain - No Fdr & Fac
7Completely dendritic terrain with unknown stream locations. Starting point is the raw DEM.Dendritic Terrain with Unknown Stream Location
9Completely dendritic terrain with known stream locations (using user specified streams) and imposing known boundaries (walls).Dendritic Terrain Processing with Imposed Drainage Line and Wall

Selected Arc Hydro Terrain Preprocessing Functions

This is a list of Arc Hydro preprocessing functions identified through use cases 1-9. There are other preprocessing functions that are not presented here but might be needed for implementation of additional capabilities.

Table 5. Overview of functions used per use case/workflow.

DerangedCombinedDendritic
Function \ Use CaseUC1UC2UC3UC4UC5UC6UC7UC8UC9
Sink EvaluationXXX
Create Sink StructuresXXXXXX
Flow DirectionXXXXXXXXX
Adjust Flow Direction in SinksXXXXXX
Sink Watershed DelineationXXXXXX
Append Coastal CatchmentsXXXXXXXXX
Assign CatType Attribute to Catchment FCXXXXXXXXX
Fill SinksXXXXXXXX
Level DEMXXX
Flow AccumulationXXXX
Stream DefinitionXXXX
Stream SegmentationXXXX
Combine Stream Link and Sink LinkXXX
Drainage Line ProcessingXXXX
Adjust Flow Direction in LakesXXX
Catchment Grid DelineationXXXXXX
Catchment Polygon ProcessingXXXXXX
Adjoint Catchment ProcessingXXXXXX
Create Drainage Line Structures from Stream GridXXX
DEM ReconditioningXXXX
Adjust Flow Direction in StreamsXXX

Indirectly called Arc Hydro functions

The above-mentioned preprocessing functions call some additional Arc Hydro functions:

  1. Assign HydroID

  2. Generate From/To Nodes for Lines

  3. Find Next Downstream Line

Function input and output

This section presents inputs and outputs for each listed preprocessing function. For detailed description consult each tool's help.

  1. Sink Evaluation:

    1. Input: Raw DEM

    2. Output: Sink Polygon Feature Class

    3. Output: Sink Drainage Area

    4. Input (optional): Z Factor

  1. Create Sink Structures. This generates DEM-compliant sink elements. HydroID, FeatureID, SinkID, IsSink fields (and potentially others) need to be managed. The input sink polygon FC can have selected set that will be "obeyed":

    1. Input: Raw DEM

    2. Input: Sink Polygon (this can be user digitized deranged polygon or result from "Sink Evaluation" function)

    3. Output: Sink Polygon (jagged poly based on the input polys and selected set. IsSink = 1)

    4. Output: Sink Polygon Grid (what we call now Sink Link Grid)

    5. Output: Sink Point Feature Class

    6. Output: Sink Point Grid

    7. Input (optional): Stream Feature Class (use the TO_NODE of the stream as the sink if the stream ends in the sink poly)

    8. Input (optional): Draft Sink Point Feature Class (use those points as sinks if they fall into the sink poly)

    9. Input (optional): Use Input DEM as Mask

  1. Flow Direction:

    1. Input: DEM

    2. Output: Flow Direction Grid

    3. Input (optional): External Wall Polygon

  1. Adjust Flow Direction in Sinks:

    1. Input: Flow Direction Grid

    2. Input: Sink Point Grid

    3. Input: Sink Polygon Grid

    4. Output: Flow Direction Grid (adjusted)

  1. Sink Watershed Delineation:

    1. Input: Flow Direction Grid

    2. Input: Sink Point Grid

    3. Input: Sink Point Feature Class

    4. Output: Sink Watershed Grid

    5. Output: Sink Watershed Polygon

  1. Append Coastal Catchments. This is an optional step that should be done for larger DEM with large portion of coastal areas - areas defined as not draining into the "streams". This function defines coastal catchments and appends them to the catchment feature class.

    1. Input: DEM Grid

    2. Input: Catchment Grid

    3. Input/Output: Catchment Feature Class

  1. Assign CatType Attribute. This is an optional step. This function assigns CatType attribute to catchment features.

    1. Input/Output: Catchment Feature Class

    2. Input (optional): Drainage Line Feature Class

    3. Input (optional): Sink Point Feature Class

  1. Fill Sinks:

    1. Input: Raw DEM

    2. Output: Filled DEM

    3. Input (optional): Fill Threshold (depth)

    4. Input (optional): Deranged Polygon (sink polygon form "Create Sink Structures")

    5. Input (optional): Use IsSink Field

  2. Level DEM:

    1. Input: Raw DEM

    2. Input: Lake Polygon (in this case sink polygon from "Create Sink Structures" function)

    3. Output: Level DEM

    4. Input (optional): Fill Elevation Field (for this workflow, this is a mandatory field that should contain a "deep burn" elevation (depth))

    5. Input (optional): Fill elevation Offset in Linear Units

  1. Flow Accumulation:

    1. Input: Flow Direction Grid

    2. Output: Flow Accumulation Grid

  1. Stream Definition:

    1. Input: Flow Accumulation Grid

    2. Input: Number of Cells to Define Stream (or area in km2)

    3. Output: Stream Grid

  1. Stream Segmentation:

    1. Input: Stream Grid

    2. Input: Flow Direction Grid

    3. Output: Stream Link Grid

    4. Input (optional): Sink Watershed Grid

    5. Input (optional): Sink Link Grid

  2. Combine Stream Link and Sink Link:

    1. Input: Stream Link Grid

    2. Input: Sink Link Grid (this should be sink point grid)

    3. Output: Link Grid (combined)

    4. Input (optional): Drainage Line Feature Class

  1. Drainage Line Processing:

    1. Input: Stream Link Grid (in this case link grid with streams and sinks)

    2. Input: Flow Direction Grid

    3. Output: Drainage Line Feature Class

    4. Output: Drainage Line Flow Split Table

  1. Adjust Flow Direction in Lakes. This is an optional step if there are lakes that are being drained by the streams (these are NOT sink lakes; sink lake fdr adjustment was done in step 6):

    1. Input: Flow Direction Grid

    2. Input: Lake Polygon Feature Class (note that these are "lake" polygons that are NOT sink lakes)

    3. Input: Stream grid (in this case drainage line grid created by "Crate Drainage Line Structures" function)

    4. Output: Lake Adjusted Flow Direction Grid

  2. Catchment Grid Delineation:

    1. Input: Flow Direction Grid

    2. Input: Link Grid (in this case Link Grid from previous step)

    3. Output: Catchment Grid

  3. Catchment Polygon Processing:

    1. Input: Catchment Grid

    2. Output: Catchment Feature Class

  1. Adjoint Catchment Processing:

    1. Input: Drainage Line Feature Class

    2. Input: Catchment Feature Class

    3. Output: Adjoint Catchment Feature Class

    4. Output: Catchment Flow Split Table

  1. Create Drainage Line Structures:

    1. Input: Raw DEM

    2. Input: Stream Feature Class

    3. Output: Stream Flow Direction Grid

    4. Output: Stream Link Grid

    5. Output: Drainage Line Feature Class

    6. Output: Drainage Line Flow Split Table

    7. Output Edit Point Feature Class

    8. Option: Clean Right Angles

    9. Option: Use Raster Extent

    10. Option: Input Divergence Flag Field

    11. Option: Minimum Stream Length

  1. DEM Reconditioning:

    1. Input: Raw DEM

    2. Input: Stream Link Grid

    3. Input: Number of Cells for Stream Buffer

    4. Input: Smooth Drop in Z Units

    5. Input: Sharp Drop in Z Units

    6. Output: AGREE DEM

    7. Option: Raise Negative Values

  1. Adjust Flow Direction in Streams:

    1. Input: Flow Direction Grid

    2. Input: Stream Flow Direction Grid

    3. Output: Adjusted Flow Direction Grid