[GRASS-user] r3.in.xyz
Moritz Lennert
mlennert at club.worldonline.be
Tue Jul 10 07:32:36 PDT 2018
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
More information about the grass-user
mailing list