I generated river networks (raster format) from a DEM and I also want to select the neighboring cells of the river networks from the original DEM, if the neighboring cells have a lower or equal elevation. Is there any way to achieve this with ArcGis 10?

enter image description here

In this plot, a branch of river network (the blue line) crosses cells no.2, no.5 and no.8. Let's pick no.5 as example. All the cells except 5 itself are neighboring cells of no.5. I want to filter cells that has an elevation no higher than cell no.5 from the neighboring cells. Assuming that the number on the plot denotes elevation, the cells I need would be cells no.1, no.3 and no.4.

  • What do you mean by neighboring cells? Unless you are in a lake the next downstream cell would typically have a lower elevation. Water flows downhill! So every cell along the river network would be selected. Are you talking about to the left and right of the channel pixel? Sounds like you are trying to identify perched rivers? Please amend your question, may be with a picture of what you want?
    – Hornbydd
    Commented Jun 22, 2016 at 14:02
  • @Hornbydd hi, the question is edited
    – BBR
    Commented Jun 23, 2016 at 9:17

2 Answers 2


Well this is one way of doing it, I'm sure there is a smarter raster way of processing it?

  1. Assuming your data is not the entire Amazon basin (!) turn your elevation into a point dataset, so each point has a unique ID and the elevation.
  2. In your image you depict your river network as a vector line, use that to select the points that are the points along your river (in your example these would be the 2,5 and 8 points). Create a new
    field and label those up as unique river IDs. Export that data.
  3. Loop through these exported river points and use a select by location on the elevation points selecting points within a distance of x meters to select up your adjacent points.
  4. Now remove from that selection any points with an elevation greater than your currently processing point.
  5. Optionally if you need this in a raster format convert the selection back into a raster.

You could automate all this in model builder but will probably be faster in python.

  • I was halfway through this method, and got stuck with cursor. But then I totally abandoned the thought.. I will try this later! thx
    – BBR
    Commented Jul 6, 2016 at 12:16

This thread may help you. Which talks of using Euclidean distance and Con tool to select a particular cell based on a conditionality.

Conditional reclassification of a raster

you may try using Euclidean distance to select the neighbouring cell based on the condition of a boundary of river network and the elevation difference.

  • Thx for the thread, Euclidean distance gives a great insight but still need help...
    – BBR
    Commented Jun 23, 2016 at 9:19
  • @Hornbydd only concern with selection process is river network will be having different elevation at different locations. May be downstream elevation levels not applicable to upstream elevation condition. So to select these adjoining cells based on local heights, its necessary to use a zonal/local kind of filter or a euclidean distance measure condition tool.
    – Chetan
    Commented Jun 24, 2016 at 11:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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