[GIS] Correcting Errors in Height Above Nearest Drainage (HAND) model

arcgis-desktophandhydrologyzonal statistics

I have used this tread
Spatial Analysis – Calculate a cells elevation (height) above the nearest stream cell
to create a HAND map in ArcGIS. First I used the hydrology toolset to fill in sink in the SRTM DEM, the generated the flow direction, flow accumulation,and the drainage networks. I then computed the Zonal Statistics using the drainge network and the filled DEM as the data input. Then I used the Euclidean Allocation tool to calculates, for each cell, the zone of the closest source location in Euclidean distance. I subtracted the resulted map from the filled DEM and I obtained the the HAND (Height Above Nearest Drainage)map of the area.

enter image description here

the map is shown below. However, negative values appears in the legend which should no be the case. Can anyone suggest how I can rectify this?

Best Answer

Its possible the negatives are the result of real depressions, so it wouldn't be wrong to just reset any negative values to 0, IMO. Map up the location of the negatives and compare with your input DEM and a decent satellite image before you make a decision.


That aside, the key thing with HAND is that it traces a flowpath downhill to the nearest stream cell and then calculates the elevation difference. Avoiding a Euclidean calculation is the whole point.

It took me a while to track down the actual software that Renno et al used for HAND since they didn't bother quoting it in their paper ( >:-( ). Its a bit clunky, but it does the job. Start with the TerraHidro 0.5 console app from http://www.dpi.inpe.br/terrahidro/doku.php and follow the instructions to get d8 grid, contributing area, and flow accumulation rasters using a hydrologically corrected DEM, e.g.

th d8 input_dem.tif output_d8.tif
th d8ca output_d8.tif contareagrid.tif
th d8drainage contareagrid.tif drainagegrid_100.tif 100

then get Terraview 4.2.2 from http://www.dpi.inpe.br/terraview/php/dow.php?body=DowFiles and TerraHidro 0.4.2 from http://wiki.dpi.inpe.br/doku.php?id=download and install them sequentially. Now:

  • Open TerraHidro (this opens TerraView with the plugin enabled)
  • Go to File > Open Database and follow the prompts to create a new Access database (I know, I know, but its simple...)
  • Go to File > Import Raster and follow the prompts to import the SRTM DEM-H, the D8 flow grid and the drainage grid
  • Click on the Hydrological Tools button, which is in the upper right corner and has a tiny M on it
  • Tab rightwards across the top to find HAND. Follow the prompts to get an output layer
  • Outputs can be exported by right-clicking on the theme.

I'm recommending TerraHidro 0.5 for generating the inputs because it can handle larger datasets and is miles faster. It just doesn't have a HAND command.

You can get a very similar output to 'official' HAND by chaining r.stream.extract and r.stream.distance in GRASS 7. The bonus is that you can use dInf, not just d8 if you want, but it does produce some negatives, just as your procedure has.