I would like to calculate the volume of material lost from a scarp like the one shown in the following image:
Is there a way to do these calculations with open-source software such as GMT, QGIS and GRASS?
I would like to calculate the volume of material lost from a scarp like the one shown in the following image:
Is there a way to do these calculations with open-source software such as GMT, QGIS and GRASS?
I will try to address your question with GRASS.
Your problem has a first task that is a bit challenging already, which is to get the situation before the event you want to quantify. I think the best option is to produce a raster of the original situation. To produce it, I would use some countour lines to draw "by hand" the terrain as it was before the event, then with the help of r.surf.contour
fill a terrain model.
Once you have the two rasters, before and after, you ca produce a raster of the difference with r.mapcalc
(rasterDiff= rasterBefore - rasterAfter). I guess you will need appropiate masks to box your areas of interest.
You can have the volume by using the r.sum
of rasterDiff and multiplying the results by the cell size.
@Gery provided a working example offshore Nicaragua and I attempted to calculate the volume with my own description above using GRASS and bit QGIS.
| Projection: Latitude-Longitude
|
| N: 11:15:44.273502N S: 10:55:46.447629N Res: 0:00:02.76634 |
| E: 87:04:08.435069W W: 87:23:22.390832W Res: 0:00:02.80086 |
| Range of data: min = -4783.09 max = -760.2788 |`
Load the DTM and set the region to the input data
r.import input=mb.grd output=mb
g.region raster=mb
Digitalize the contourlines before the slide. I did the digitalization in QGIS and I saved the elevation values in field level
v.import input=Contour50_WGS84.shp layer=Contour50_WGS84 output=Contour50_WGS84
Digitalize the boundaries of the scarp to use it as a mask.
v.import input=mascara.shp layer=mascara output=mascara
Mask the area of interest and fill the null values
r.mask --overwrite vector=mascara
r.fillnulls input=mb output=mbfilled method=rst
Conversion of contour lines into raster lines and interpolation for the DTM prior the slide
v.to.rast input=Contour50_WGS84 type=line output=prescarp use=attr attribute_column=level
r.surf.contour input=prescarp output=prescarpfilled
Calculate the difference between the two rasters
r.mapcalc expression=scarpdepth = prescarpfilled - mbfilled
Calculate the average cell size and the sum of the scarpdepth
r.report map=MASK units=me
|-----------------------------------------------------------------------------|
| Category Information | square|
|#|description | meters|
|-----------------------------------------------------------------------------|
|1|Value 1. . . . . . . . . . . . . . . . . . . . . . . . . . . | 53,830,997|
|*|no data. . . . . . . . . . . . . . . . . . . . . . . . . . . |1,235,078,890|
|-----------------------------------------------------------------------------|
|TOTAL |1,288,909,887|
+-----------------------------------------------------------------------------+
r.univar map=scarpdepth
total null and non-null cells: 178396
total null cells: 170947
Of the non-null cells:
----------------------
n: 7449
minimum: -2.60534
maximum: 387.981
range: 390.586
mean: 206.303
mean of absolute values: 206.305
standard deviation: 76.9735
variance: 5924.92
variation coefficient: 37.3109 %
sum: 1536751.12633864
Then, with 7449 cells and an area of 53.8 km^2, the cell size is 7226 m^2/cell
I am trying to calculate the volume of ore that has been excavated in an open-pit mine, using QGIS and GRASS. I used the same method suggested here except for the step 7.
To calculate the volume of a raster, maybe you could use r.volume in GRASS. It does the same thing as explained here, but there are no intermediate results which are rounded up, so I think it is more precise!
I used the two methods to compare the results. I found that there could be tens of meters of difference up to ten-thousands of meters of difference, depending on how you round your results. So maybe it is worth using r.volume instead.
Hope that helps!