I am working on modeling surface run-off due to a rain event (e.g., 5 year rain for a duration of 30 mins.) over an approx. area of 30 km2 for which I have a DEM and necessary soil as well as land-cover data (Manning's n values). I am going to implement Green-Ampt infiltration model in ArcGIS 10.2 (with Python scripting) and have already computed rasters like flow direction, slope, flow accumulation, stream network, stream length, etc. with hydrology tools.

At each time-step, I have an excess water depth raster and velocity raster (with slope raster from slope tool) at each cell with which I can calculate the discharge volume that is flowing out from a cell to its neighbor. Now, my problem is:

  1. For the next time-step I have to add those discharge volumes to the corresponding cells to ensure mass balance but how can I determine to which neighboring cell is the discharge flowing? I only know that ArcGIS is calculating the steepest gradient for each cell but how can I ascertain which out of 8 neighbors does that gradient correspond to?
  2. For a time step and a cell, how can I define a run-off water depth? Is it simply (outflow volume - inflow volume)/area of cell?
  • I'm not sure what your question is. As far as I understand, flow direction gives the direction of a flow within your 9-cell block; that is to determine the flow/accumalation of water from one cell to another. So in order to know where the water will discharge you should use your flow accumalation raster. What am I missing?
    – dof1985
    Mar 30 '15 at 20:36
  • 1. There should be a flow direction raster that was used to calculate your flow accumulation raster, that will tell you which way to go. 2. It's your model, if you want to do it that way that's fine, make sure you note that in your assumptions. You can come back and refine the model later to account for other factors. With complex situations one method that works is to simplify to the most basic parameters and then selectively refine with new parameters if you have time later - that saves over-complicating at the start. Mar 30 '15 at 21:39
  • @dof1985: thank you for your comment. What I am interested in is the depth of run-off that accumulates in each cells at each time-step. Flow accumulation raster shows where all the run-off eventually accumulates and not its distribution, then be it 1cm of rain or 1m. Can you explain me, how can I find distribution of a 10 mm rain over 20 km2 area in 2 mins time duration using flow accumulation raster? It is definitely not going to land in the lowest elevation point, travelling some 6-7 km distance in 2 mins. And how can I ensure mass balance using flow accumulation raster?
    – Shrestha
    Mar 30 '15 at 21:50
  • @MichaelMiles-Stimson: thank you for your comment. The flow direction raster value at a cell tells me in which direction the water is flowing and not to which cell ( id or x,y location which I can access with python). In other words, for any cell, how can I ascertain the volumes of inflow and its source cell (using python)?
    – Shrestha
    Mar 30 '15 at 22:09
  • 1
    It is simple maths, look at your flow direction and see if it's +1, 0 or -1 in the X and +1, 0 or -1 in the Y. The fun part is trying to write to individual pixels in python! Try GDAL in python, you can read all the rasters into a NumPy array (if you have enough memory) and index it directly then write the output. Mar 30 '15 at 22:37