Hi François,

On 10/07/18 04:40, Francois Chartier wrote:
Hi Moritz,

The idea is a bit novel.  I am working with over 20000 Boreholes (BH) with soil information (silt, sand, gravel, Tills, and everything in between etc.).  These are not distinct geological contacts with recognizable stratigraphies that can be correlated, ex: this top of gravel corresponds to this top of gravel in this BH etc.  The model domain is approximately 40 km by 40 km and extends from ground surface (DEM) to top of bedrock (surface from geological survey), and thickness varies from approx. 15 m to 100 m. As it would take years to correlate all the soil contact elevations, I am approaching the problem from a different angle.  The dataset consists of XYZ and Property (top of soil deposit) at each borehole location (XY).  Along the vertical axis of the borehole, there are multiple top of soil deposits overlying on top of each other depending on the depth of the BH and location. In between each top of soil there are no data points in the database, however, in the real world there is a soil property.  Therefore if i am interpolating only the top of soil data, the interpolation method will do a gradual change between the top (n) of that soil deposit and its bottom which is also the top of the next underlying soil deposit (n-1). In order to avoid this, I would like to ensure that the 'weight' of that soil deposit thickness in the interpolation is considered. Whether the interpolation modules in Grass GIS can (first option)do this interpolation by considering that the property extends to the next underlying deposit,


IIUC what you mean, r.to.rast3elev does exactly that: It does not do any interpolation. Each input map ('input' parameter) corresponds to a soil type. Each elevation map ('elevation' parameter) corresponds to either the top or the bottom level of that type. Using the -u or -l flag, you can ask r.to.rast3elev to fill the volume above or below your elevations with the value of the map.

In other words, if you have


r.mapcalc "soil1 = 1"
r.mapcalc "soil2 = 2"
r.mapcalc "soil3 = 3"

and you have 2D elevation maps resulting from the interpolation of the top elevation of the respective soils: elev1, elev2, elev3

You can run:

r.to.rast3elev -l input=soil1,soil2,soil3 elevation=elev1,elev2,elev3 output=soils_3D

You should get something like this:


-----------top elevation soil1-------
1111111111111111111111111111111111111
1111111111111111111111111111111111111
1111111111111111111111111111111111111
-----------top elevation soil2-------
2222222222222222222222222222222222222
2222222222222222222222222222222222222
2222222222222222222222222222222222222
-----------top elevation soil3-------
3333333333333333333333333333333333333
3333333333333333333333333333333333333
3333333333333333333333333333333333333
3333333333333333333333333333333333333

Obviously with elevations varying in space.

There are issues if you have inversions in the order of soil layers, i.e. if you have something like this:

111111111111112222222222222222
111111111111112222222222222222
222222222222221111111111111111
222222222222221111111111111111

AFAIK, the only way to solve this is to cut up your area into tiles of homogeneous order.

Moritz
_______________________________________________
grass-user mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-user

Reply via email to