2018-03-29 18:25:20 +00:00
|
|
|
# area_file: Geospatial file containing the area to measure
|
|
|
|
# points_file: Geospatial file containing the points defining the area
|
|
|
|
# dsm_file: GeoTIFF DEM containing the surface
|
|
|
|
# ------
|
|
|
|
# output: prints the volume to stdout
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
#Import raster ans vector
|
2018-03-29 18:25:20 +00:00
|
|
|
v.import input=${area_file} output=polygon_area --overwrite
|
|
|
|
v.import input=${points_file} output=polygon_points --overwrite
|
|
|
|
v.buffer -s --overwrite input=polygon_area type=area output=region distance=3 minordistance=3
|
2018-03-29 21:28:15 +00:00
|
|
|
r.external input=${dsm_file} output=dsm --overwrite
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
# Set Grass region to DSM resolution
|
2018-03-29 21:28:15 +00:00
|
|
|
g.region rast=dsm
|
2018-04-02 16:39:02 +00:00
|
|
|
# Set Grass region to vector bbox
|
2018-03-29 18:25:20 +00:00
|
|
|
g.region vector=region
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
# Create a mask to speed up computation
|
2018-03-29 21:28:15 +00:00
|
|
|
r.mask vect=region
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
# Transfer dsm raster data to vector
|
2018-03-29 18:25:20 +00:00
|
|
|
v.what.rast map=polygon_points raster=dsm column=height
|
|
|
|
v.to.rast input=polygon_area output=r_polygon_area use=val value=255 --overwrite
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
# Decimate DSM and generate interpolation of new terrain
|
2018-03-29 18:25:20 +00:00
|
|
|
#v.surf.rst --overwrite input=polygon_points zcolumn=height elevation=dsm_below_pile mask=r_polygon_area
|
|
|
|
v.surf.bspline --overwrite input=polygon_points column=height raster_output=dsm_below_pile lambda_i=100
|
|
|
|
|
2018-04-02 16:39:02 +00:00
|
|
|
# Compute difference between dsm and new dsm
|
2018-03-29 18:25:20 +00:00
|
|
|
r.mapcalc expression='pile_height_above_dsm=dsm-dsm_below_pile' --overwrite
|
2018-04-02 16:39:02 +00:00
|
|
|
# Volume output from difference
|
2018-03-29 18:25:20 +00:00
|
|
|
r.volume -f input=pile_height_above_dsm clump=r_polygon_area
|