I am not a hydrologist but am providing GIS infrastructure to our hydrology department which actually doesn't use GIS very much yet. Therefore I am asking for some hydrology related insights.

Btw: We are using mainly ESRI ArcGIS but also other OpenSource GIS Software is possible to perform any of the described tasks.

Given some waterbodies alongside a large drainage system, I was asked if it is possible to aggregate (sum up) the water flow amount at every basin for the rivers upside the stream. That sounds like a pretty common task for me in hydrologial GIS Software. As I come mostly from transport networks, I was thinking of this as a directed graph, where water amounts act as edge weight, and aggregation is a simple dijkstra algorithm which sums up the weights. So I was thinking of scripting this task. But I wonder if there aren't ready to use tools for that.

  • I've implemented Dijkstra's algorithm on drainage, it's a fair bit of work. There are some open/free hydrology tools if you Google hard enough that should do what you're after as it sounds like a fairly basic hydrology request; it sounds like you want to incrementally accumulate, surely a flow accumulation raster will have the answer but on a cell by cell basis. resources.arcgis.com/en/help/main/10.1/index.html#//… – Michael Stimson Nov 9 '14 at 22:44
  • Yes you are right, it's flow accumulation but on the waterbodies as a accumulation unit. Nevertheless, as this is not my field of profession, these are very interesting insights so hopefully I can tell my colleauge about the advantages of using a GIS for his tasks. – Jürgen Zornig Nov 12 '14 at 13:57

Dijkstra might be unneeded because river networks (on a larger scale) have only 1 possible route.

If you're into databases, postgis might be your friend here. There's a nice example here from Paul Ramsey explaining on how to iterate through a river network:


Chrs, Tom

|improve this answer|||||
  • ok, I get the point, so when the waterbodies are chained somehow in the database (spatially or just relational) I can easily aggregate the sum in each waterbody (with a trigger for example). We have SQL Server btw. because ..well.. the IT dept. says so ;) ... but it should be also possible there like Paul describes it. Just for the sake of completeness: Is this task available in any specialized hydro GIS extensions (like Arc Hydro or any QGIS plugin)? – Jürgen Zornig Nov 10 '14 at 21:10
  • I'm not sure if SQL server can do the WITH RECURSIVE trick that Paul describes, but I don't see how a trigger would help here. Do you mean the data is changing over time? – tilt Nov 12 '14 at 10:26
  • You can use Common Table Expressions (CTE) for recursive calls in sql server which is pretty much the same thing. As I understood my colleague he is getting those waterbodies for different areas or also the same areas periodically from another institute and he just wants to calculate those aggregation sums for each waterbody and store it into one of the attributes. Solving this on the database side would mean that I create an trigger on insert and update to calculate this field for him. – Jürgen Zornig Nov 12 '14 at 13:53
  • It sounds very doable for a database setup, but I'm not sure if I understand all the steps that are to be taken. Could you elaborate on the use-case? Maybe add a schematic picture? – tilt Nov 13 '14 at 15:28

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.