[GIS] Volume of water in basin with reference to incremental height of DAM

arc-hydroarcgis-10.0arcgis-desktoparcmapvolume

I have a DEM of my area.
I did watershed analysis with Arc Hydro.

I want to calculate "Volume of water in a basin with reference to incremental height of DAM"

Is there any method, tool to give output with info of at h1-v1, h2-v2,……hn-vn(at h-height , v-volume) in tabular or any other form, if we give input values of "min height" at which dam footing with "incremental height" and do calculations up to "max height".

Please let me know if any software/tool is doing above calculation?

Best Answer

If you have the 3D Analyst extension, use the Surface Volume tool.

It's possible to automate this calculation in Python to get volumes at different heights (from an incremental height change). (Note: this example is with version 9.3, but it isn't too difficult to convert it to arcpy version 10).

# ArcGIS version 9.3
import arcgisscripting
import re

# Edit this section
step_size = 10 # metres; reduce this if you want finer resolution
num_steps = 20 # increase this, if you need more steps
workspace = r'C:\Some\path\to\folder'
raster_file = 'mytopo.tif'

gp = arcgisscripting.create()
gp.CheckOutExtension ('3D')
gp.workspace = workspace

# Start from the minimum elevation
min_rast = gp.GetRasterProperties(raster_file, 'MINIMUM')

# Start CSV output of elevation/volume relationship
print('step, height, elev, volume')
for step in range(num_steps):
    height = float(step*step_size)
    elev = min_rast + height
    gp.SurfaceVolume_3d(raster_file, '', 'BELOW', elev)
    result = gp.GetMessages()
    volume = float(re.findall(r'Volume= *([\d\.]+)', result)[0])
    print(', '.join([repr(x) for x in [step + 1, height, elev, volume]]))

produces this CSV output:

step, height, elev, volume
1, 0.0, 195.72373962402344, 0.0
2, 10.0, 205.72373962402344, 89383.136320076999
3, 20.0, 215.72373962402344, 537710.29799682996
4, 30.0, 225.72373962402344, 1616009.8535998999
5, 40.0, 235.72373962402344, 4022313.9784607999
6, 50.0, 245.72373962402344, 10139496.423829
7, 60.0, 255.72373962402344, 22423139.656699002
8, 70.0, 265.72373962402344, 125592027.17357001
9, 80.0, 275.72373962402344, 601472924.93704998
10, 90.0, 285.72373962402344, 1454118895.066
11, 100.0, 295.72373962402344, 2659321774.0138998
12, 110.0, 305.72373962402344, 4271651250.0858998
13, 120.0, 315.72373962402344, 6145982306.6198997
14, 130.0, 325.72373962402344, 8248103003.7566004
15, 140.0, 335.72373962402344, 10540914755.195
16, 150.0, 345.72373962402344, 13094286080.875
17, 160.0, 355.72373962402344, 15855580342.691999
18, 170.0, 365.72373962402344, 18894132090.799
19, 180.0, 375.72373962402344, 22168466487.139
20, 190.0, 385.72373962402344, 25702467387.048