I have a DEM extract of river and village centroid. How do i create an attribute table that shows which village is upstream of other or downstream to another.

Can someone guide me the correct tools in arcgis?

Also im not quit comfortable with programming.

  • 1
    How many villages are you dealing with?
    – cndnflyr
    Jun 7 '13 at 13:21
  • 1
    I have over 25000 villages right now.
    – user19033
    Jun 12 '13 at 10:39
  • Please merge your accounts, @weny: that will enable you to comment on and edit your original question.
    – whuber
    Jun 12 '13 at 11:32
  • Thanks for all the feedback. I'm still not able to find the exact answer. Here is the situation: 1. I have a DEM and with it, extracted a river raster using fill,flowdir and flowacc. 2. The village centroids are projected to this map. 3. Now what i really want is that- how can i know which village is upstream and downstream w.r.t the river/stream. The villages are not necessarily along the river but scattered all over. Does a 3D model works? Also will contours do anything good? 4. I want to create an attribute for this upstream and downstream villages.
    – user19033
    Jun 13 '13 at 11:56
  • Please edit your original question to include the new information, so that it will be more obvious. Also, please see whuber's comment about merging your accounts, since you'll need to use the original account to edit the question. Thanks.
    – user3461
    Jun 13 '13 at 14:05

first you need to use flow direction on the DEM, and then flow accumulation. Then you need to extract value by point from village points to flow acc' raster. The bigger the value is, the village is more at downstream, because he have more cells accumulating at his direction. In case of brances you need spatial join the villages points to the output of Stream order and then he knows numeric order to segments of a raster representing branches, or try the first process on every basin.

  • 2
    This is clever--and would likely be part of some effective solution--but we can't expect it always to give the correct answers. Consider a river with just two branches, say "E" and "W": your algorithm would determine that all points on branch "E" having less flow than points on branch "W" are upstream of those points on "W", but that's obviously wrong.
    – whuber
    Jun 12 '13 at 12:09
  • I see a further problem: What if village centroid is not inside the river but a bit away from the edge of the river? Then you will get a low flow accumulation even though the city is located far downstream.
    – Jens
    Jun 12 '13 at 12:55
  • @Jens That difficulty is readily overcome in various ways, such as snapping the centroid to the river or averaging the flow accumulation within a buffer of the city, etc.
    – whuber
    Jun 12 '13 at 13:42

An alternative approach: use Linear Referencing

You need a line feature class of the river (not a polygon feature class).

Convert line feature class to a route feature class. The route feature class has linear measures (black).

Use ArcGIS tool Locate Features Along Routes to calculate the linear measures of your cities (red).

enter image description here

(Sorry, I do know not how the problem with “branches” can be solved.)

  • 1
    That's likely part of the solution. Obviously, though, handling the branches is crucial. I believe any solution ultimately will need to create a network representation of the topology of those branches and apply an algorithm similar to the one described at gis.stackexchange.com/questions/11019/….
    – whuber
    Jun 12 '13 at 13:45

RivEX provides a suite of tools for measuring distances between points along a river network. It has tools for returning for each point all downstream points as you travel downstream towards the river mouth as well as returning the nearest up stream sites. The tables generated could then be summarised to return nearest next upstream/downstream site. More information can be found on the help page.

This kind of analysis could also be applied to barriers to fish migration along networks.

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.