Francisco Olivera

Graduate Research Assistant

CRWR J.J.Pickle Research Center

April, 1995

Inland catchments constitute closed hydrologic systems, that do not drain to the ocean as most of the watersheds. In inland catchments water drains towards an inland pour point located within the basin, and not on the basin border as usually occurs. The analysis of inland catchments with Arc/Info-GRID is not straight forward, and requires a good understanding of the GRID conceptual hydrologic model. Hydrologic analysis with GRID is based on Digital Elevation Models (DEM's) of the terrain, from which all the topographically-determined characteristics of the terrain are obtained.

When performing hydrologic analysis with GRID, the very first stepconsists in determining the flow direction with the FLOWDIRECTION function. The FLOWDIRECTION function has the DEM as argument, and determines the direction water takes when flowing due to gravity, i.e. direction of stepest descent. However, the flow-direction can not be determined for cells that are lower than their surrounding neighbor cells. In such a case, FLOWDIRECTION flags the lower cells with an error value, which affects all cells flowing towards them. The existance of lower cells is explained by DEM errors (which might be small for most practical purposes but critical for hydrologic modeling) or by inland catchments (in which the lowest cell constitutes a pour point). The purpose of the program presented here is to identify which of the lower cells are DEM errors and which correspond to inland catchments. The terrain pits generated by DEM errors are corrected by filling the DEM with the FILL function. The FILL function raises the elevation of the terrain in the pit zone until the water is able to flow out of it.

The terrain pits generated by inland catchments are flaged by assigning NODATA to their pour points, i.e. the lowest point of the pit.

The methodology used by the program to spot inland catchments consists in filling the DEM and comparing the area and depth of the filled zones with certain user-defined threshold values. All filled zones that satisfy the criteria are then treated as inland catchments and NODATA is assigned to their lowest cells in the original DEM. This process is repeated until no more inland catchments are detected. Once all the inland catchment pour points have been assigned NODATA, the DEM can be filled to correct DEM errors.ÿ


/* ************************************************************************

/* Program: fp.aml

/* Author: Francisco Olivera

/* Date: April 16, 1995

/* CRWR J.J.Pickle Research Center


/* Input: dem <digital elevation model - grid>

/* area <screen input - real variable>

/* depth <screen input - real variable>

/* Output: demplus <corrected digital elevation model - grid>

/* filplus <corrected filled digital elevation model - grid>

/* fdrplus <corrected flow direction - grid>

/* Promt: arc promt


/* This aml corrects the DEM by assigning NODATA to the sink cells.

/* Sink cells are the bottom cells of those fillings with area and

/* depth greater than threshold values specified by the user.

/* ************************************************************************


/* Screen input

&sv area = [response 'Minimum inland catchment area']

&sv depth = [response 'Minimum inland catchment depth']

/* ************************************************************************

/* Write your DEM name in the next line

fp01 = <your DEM path/name>

/* ************************************************************************

/* Loop start

&label loopstart

/* Filling the DEM

fill fp01 fp02 # # fp12

/* Calculating the filled depths

fp03 = fp02 - fp01

/* Assigning the value 1 to all the filled cells and 2 elsewhere

fp04 = con(fp03 > 0, 1, 2)

/* Assigning a label number to each to each pit (filled zone)

fp05 = regiongroup(fp04, #, eight)

kill fp04 all

/* Determining the area of each pit

fp06 = zonalarea(fp05)

/* Determining the depth of each pit

fp07 = zonalmax(fp05, fp03)

kill fp03 all

/* Assigning a label to each inland catchment and the value 0 elsewhere

fp08 = con(fp06 > %area% and fp07 > %depth%, fp05, 0)

kill fp05 all

kill fp06 all

kill fp07 all

/* Loop test

&describe fp08

&if %grd$zmax% > 0 &then


kill fp02 all

kill fp12 all

/* Assigning the lowest elevation to all cells of each inland catchment

fp09 = zonalmin(fp08, fp01)

/* Assigning the value 0 to the lowest cell of each inland catchment

/* and 1 elsewhere

fp10 = con(fp09 == fp01 and fp08 <> 0, 0, 1)

kill fp08 all

kill fp09 all

/* Assigning NODATA to the lowest cell of each inland catchment

rename fp01 fp11

fp01 = fp11 / fp10

kill fp10

kill fp11

/* Loop end

&goto loopstart


/* Results

kill fp08

rename fp01 demplus

rename fp02 filplus

rename fp12 fdrplus



Go to AML Listing

Quick Connect to 3" DEM Web Site