I would like to use DEM to extract a river network but I don't want to use the polylines. Is it possible for me to extract polygon (or raster) rivers from DEM? I'm using both ArcGIS 10 and R. If possible, how reliable would the river width be?

  • Do you have the Spatial Analysis Extension?
    – Mapperz
    Jun 15, 2016 at 13:46
  • 3
    Wouldn't the result be heavily dependent on river morphology? Even if the DEM captures the thalweg, would you use that, the river banks (if any are evident), or the entire floodplain? And at what river stage would that be defined? Alternatively, if you want a raster representation of water courses, you could always extract polylines and select all intersecting cells--but maybe that's not what you want? Since you are concerned about obtaining reliable widths, have you considered running a hydrological model?
    – whuber
    Jun 15, 2016 at 14:26
  • You give no indication of where in the world you are doing this analysis? If it was in the UK you would simply use OS MasterMap. How about abandoning the DEM altogether and extract out the river from a satellite image such as Landsat? The minimum channel width would be 30m as that is the pixel width of Landsat. As @whuber points out this would also be affected by when the image was taken: low or high flow periods.
    – Hornbydd
    Jun 15, 2016 at 16:03
  • @Hornbydd, 30 meter data to identify streams? That's not going to catch much. BTW, we performed the approach described in my answer on 2m LiDAR-derived terrain.
    – Tom
    Jun 15, 2016 at 18:23
  • True 30m will miss many smaller streams but OP gives no indication of where in the world they are doing there analysis? The approach I suggested could work on rivers like the Amazon, Indus or Ganges. Lets see if they amend their question?
    – Hornbydd
    Jun 15, 2016 at 19:59

1 Answer 1


One approach that our amazing intern recently used, which turned out really well for us:

  1. Fill the DEM
  2. Calculate flow direction on the filled raster
  3. Accumulate the flow of the flow direction output
  4. Do a Con operation to set all cells with an accumulated flow over some threshold (that is meaningful for your geographic area and for your cell size) to be 1 and all other cells to 0/NoData. This will roughly identify your streams.
  5. Calculate the slope percent of the filled DEM
  6. Run a cost distance, with the output of step 4 as the input and the output of step 5 as the cost.

The output estimates the depth to water.

Field-checking of our result and comparing it to data like the NWI has shown that it was spot-on. The key is in estimating the minimum basin size for step 4. But if you get that off a bit, you can always just re-interpret the final output; e.g., do a global addition/subtraction of 1 or 2 until the water surfaces match known water bodies--but start just by adjusting the symbology.

Then, if you really want polygons, once you've got your thresholds set as you want, you can optionally do another con with the selected threshold (depending on what detail you want in the polygons), then export to polygon.

  • Thx for the answer! It almost did the work!
    – BBR
    Jun 22, 2016 at 3:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.