INLAND CATCHMENTS
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.
/* ************************************************************************
grid
/* 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
&do
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
&end
/* Results
kill fp08
rename fp01 demplus
rename fp02 filplus
rename fp12 fdrplus
quit
&return