How to restore a scarp surface grid to calculate material loss

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?

• Erase contours inside them and triangulate what remains. Difference of DEMs will give you very rough idea of individual volumes. – FelixIP Oct 21 '17 at 23:10
• thanks, a first idea is to mask the scarp area and then triangulate that area, right? – Gery Oct 22 '17 at 15:02
• GRASS GIS offers a volume calculator in grass.osgeo.org/grass72/manuals/r.volume.html – markusN Oct 23 '17 at 6:30
• Do you have a before and after raster? – Fezter Oct 24 '17 at 5:18

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.

UPDATE

@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                        |` 1. Load the DTM and set the region to the input data

r.import input=mb.grd output=mb g.region raster=mb

2. 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

1. Digitalize the boundaries of the scarp to use it as a mask.

v.import input=mascara.shp layer=mascara output=mascara 1. Mask the area of interest and fill the null values

r.mask --overwrite vector=mascara r.fillnulls input=mb output=mbfilled method=rst

2. 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 1. Calculate the difference between the two rasters

r.mapcalc expression=scarpdepth = prescarpfilled - mbfilled 1. 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

1. The volume is +/-11 km^3 approximately (7,226 m^2 * 1,536,751 m)
• thanks for your answer, would you show a minimal working example please? – Gery Oct 24 '17 at 14:45
• @Gery, it is going to take a while to give it the required time, but it is still fun. Do you have a nice scarp to share? – Marco Oct 25 '17 at 7:09
• I think I have one, where can I upload it for you? – Gery Oct 26 '17 at 18:07
• I think pasetbin is a good place to share a working example. I have just pasted a small clip from the srtm_22_20.tif as a plain ascii file here pastebin.com/tzYPBDSE. Any public place, if it is not already public data, would be fine – Marco Oct 27 '17 at 8:50
• sorry it took me a while to share the grid with the nice scarp, please find it here: ufile.io/3i2ix – Gery Nov 2 '17 at 0:59

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!