[GRASS-user] r3.in.xyz

Hi,

I am working with a data set that consists of borehole logs with a Top of a layer (layer 1) and the top of the underlying layer (layer 2) (which is also the bottom of the overlying layer 1). Everything in between the elevation of top of layer 1 and top of layer 2 correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist everywhere (pinches out). Above the Layer the property is different; in other words the property only starts below the Top of layer 1 until the underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and working with a very large data set (i cannot link every top of layers together), my first approach was to create a each Layer property for every elevation slice along each Borehole axis, interpolating soil properties at every elevation between Boreholes.

I read on another forum that r3.in.xyz can interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2, the property corresponds to the Overlying top layer 1, and

  • that the property is continuous until the next underlying layer 3 - can someone confirm this?

To provide a bit of background, borehole data bases, identify the top of layer as encountered when drilling downwards, and provide the elevation of the next layer (pick); in between the soil property is the same, however there is no data points. When interpolating, while there is no data point in between the two geological picks, the property should still have weight in the interpolation process.

Thank You

Francois

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with a Top of a layer (layer 1) and the top of the underlying layer (layer 2) (which is also the bottom of the overlying layer 1). Everything in between the elevation of top of layer 1 and top of layer 2 correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist everywhere (pinches out). Above the Layer the property is different; in other words the property only starts below the Top of layer 1 until the underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and working with a very large data set (i cannot link every top of layers together), my first approach was to create a each Layer property for every elevation slice along each Borehole axis, interpolating soil properties at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz> can interpolate in 3D without a Property at every elevation slice,

  * while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  * that the property is continuous until the next underlying layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the top of layer as encountered when drilling downwards, and provide the elevation of the next layer (pick); in between the soil property is the same, however there is no data points. When interpolating, while there is no data point in between the two geological picks, the property should still have weight in the interpolation process.

I don't think r3.in.xyz is what you need. This module aggregates 3D point data into voxels.

You probably want to use something like r.to.rast3. This would mean interpolating each layer separately into 2D elevation maps and then assemble them into 3D using r.to.rast3.

Moritz

So therefore, my approach of generating a soil property at each elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally. I. Cant remember the module name i am using but i am generating the 3d raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert, <mlennert@club.worldonline.be> wrote:

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with a Top
of a layer (layer 1) and the top of the underlying layer (layer 2)
(which is also the bottom of the overlying layer 1). Everything in
between the elevation of top of layer 1 and top of layer 2 correspond to
a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist everywhere
(pinches out). Above the Layer the property is different; in other
words the property only starts below the Top of layer 1 until the
underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and working
with a very large data set (i cannot link every top of layers together),
my first approach was to create a each Layer property for every
elevation slice along each Borehole axis, interpolating soil properties
at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz> can
interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  • that the property is continuous until the next underlying layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the top of
layer as encountered when drilling downwards, and provide the elevation
of the next layer (pick); in between the soil property is the same,
however there is no data points. When interpolating, while there is no
data point in between the two geological picks, the property should
still have weight in the interpolation process.

I don’t think r3.in.xyz is what you need. This module aggregates 3D
point data into voxels.

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Moritz

On Wed, Jun 27, 2018 at 4:32 PM, Francois Chartier
<fra.chartier@gmail.com> wrote:

So therefore, my approach of generating a soil property at each elevation
and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally. I. Cant
remember the module name i am using but i am generating the 3d raster from
the 3d data points directly.

I guess it is v.vol.rst.

Here is a 3D overview:
https://grasswiki.osgeo.org/wiki/Help_with_3D

(edits are welcome!)

Markus

That is correct. The same questions apply for v vol rst.

On Wed, Jun 27, 2018, 14:29 Markus Neteler, <neteler@osgeo.org> wrote:

On Wed, Jun 27, 2018 at 4:32 PM, Francois Chartier
<fra.chartier@gmail.com> wrote:

So therefore, my approach of generating a soil property at each elevation
and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally. I. Cant
remember the module name i am using but i am generating the 3d raster from
the 3d data points directly.

I guess it is v.vol.rst.

Here is a 3D overview:
https://grasswiki.osgeo.org/wiki/Help_with_3D

(edits are welcome!)

Markus

On 27/06/18 16:32, Francois Chartier wrote:

So therefore, my approach of generating a soil property at each elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally.

Not sure what you mean by constraining the interpolation horizontally.

You can create a 2D elevation map by interpolating all your height information of layer 1 (for example using v.surf.rst). Then you create a second elevation map interpolating the layer 2 height information, etc.

Moritz

I. Cant remember the module name i am using but i am generating the 3d raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert, <mlennert@club.worldonline.be <mailto:mlennert@club.worldonline.be>> wrote:

    On 27/06/18 03:59, Francois Chartier wrote:
     > Hi,
     >
     > I am working with a data set that consists of borehole logs with
    a Top
     > of a layer (layer 1) and the top of the underlying layer (layer 2)
     > (which is also the bottom of the overlying layer 1). Everything in
     > between the elevation of top of layer 1 and top of layer 2
    correspond to
     > a Layer 1 property.
     >
     > The thickness of Layer 1 varies and this layer may not exist
    everywhere
     > (pinches out). Above the Layer the property is different; in other
     > words the property only starts below the Top of layer 1 until the
     > underlying Top of the next layer.
     > Not sure of the capabilities of the interpolation in Grass and
    working
     > with a very large data set (i cannot link every top of layers
    together),
     > my first approach was to create a each Layer property for every
     > elevation slice along each Borehole axis, interpolating soil
    properties
     > at every elevation between Boreholes.
     >
     > I read on another forum that r3.in.xyz <http://r3.in.xyz>
    <http://r3.in.xyz> can
     > interpolate in 3D without a Property at every elevation slice,
     >
     > * while respecting the condition that above the Top of the layer 2,
     > the property corresponds to the Overlying top layer 1, and
     > * that the property is continuous until the next underlying
    layer 3 -
     > can someone confirm this?
     >
     > To provide a bit of background, borehole data bases, identify the
    top of
     > layer as encountered when drilling downwards, and provide the
    elevation
     > of the next layer (pick); in between the soil property is the same,
     > however there is no data points. When interpolating, while there
    is no
     > data point in between the two geological picks, the property should
     > still have weight in the interpolation process.
     >

    I don't think r3.in.xyz <http://r3.in.xyz> is what you need. This
    module aggregates 3D
    point data into voxels.

    You probably want to use something like r.to.rast3. This would mean
    interpolating each layer separately into 2D elevation maps and then
    assemble them into 3D using r.to.rast3.

    Moritz

Is it possible to define a horizontal constraints so that more weight is given on the interpolation of the property horizontally rather than vertically.
Similarly in kriging we can define a semi variogram with an orientation in 2d, and i would like to know if it can be done in 3d.
Also what about the question regarding the elevations between the top and bottom of the soil formation. Is there a possibilty for v vol rst to consider data points in between top and bottom.

···

On Jun 28, 2018 03:40, “Moritz Lennert” <mlennert@club.worldonline.be> wrote:

On 27/06/18 16:32, Francois Chartier wrote:

So therefore, my approach of generating a soil property at each
elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally.

Not sure what you mean by constraining the interpolation horizontally.

You can create a 2D elevation map by interpolating all your height
information of layer 1 (for example using v.surf.rst). Then you create a
second elevation map interpolating the layer 2 height information, etc.

Moritz

I.
Cant remember the module name i am using but i am generating the 3d
raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert,

<mlennert@club.worldonline.be mailto:[mlennert@club.worldonline.be](mailto:mlennert@club.worldonline.be)> wrote:

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with
a Top
of a layer (layer 1) and the top of the underlying layer (layer 2)
(which is also the bottom of the overlying layer 1). Everything in
between the elevation of top of layer 1 and top of layer 2
correspond to
a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere
(pinches out). Above the Layer the property is different; in other
words the property only starts below the Top of layer 1 until the
underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and
working
with a very large data set (i cannot link every top of layers
together),
my first approach was to create a each Layer property for every
elevation slice along each Borehole axis, interpolating soil
properties
at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz>
<http://r3.in.xyz> can
interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  • that the property is continuous until the next underlying
    layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the
top of
layer as encountered when drilling downwards, and provide the
elevation
of the next layer (pick); in between the soil property is the same,
however there is no data points. When interpolating, while there
is no
data point in between the two geological picks, the property should
still have weight in the interpolation process.

I don’t think r3.in.xyz <http://r3.in.xyz> is what you need. This

module aggregates 3D
point data into voxels.

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Moritz

Hi, I’m not following this discussion fully, but don’t you need just r.to.rast3elev followed by some raster algebra with ifs (r3.mapcalc)?

https://grass.osgeo.org/grass74/manuals/r.to.rast3elev.html

https://grass.osgeo.org/grass74/manuals/r3.mapcalc.html

Best,
Vaclav

···

On Thu, Jun 28, 2018 at 12:18 PM, Francois Chartier <fra.chartier@gmail.com> wrote:

Is it possible to define a horizontal constraints so that more weight is given on the interpolation of the property horizontally rather than vertically.
Similarly in kriging we can define a semi variogram with an orientation in 2d, and i would like to know if it can be done in 3d.
Also what about the question regarding the elevations between the top and bottom of the soil formation. Is there a possibilty for v vol rst to consider data points in between top and bottom.


grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user

On Jun 28, 2018 03:40, “Moritz Lennert” <mlennert@club.worldonline.be> wrote:

On 27/06/18 16:32, Francois Chartier wrote:

So therefore, my approach of generating a soil property at each
elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally.

Not sure what you mean by constraining the interpolation horizontally.

You can create a 2D elevation map by interpolating all your height
information of layer 1 (for example using v.surf.rst). Then you create a
second elevation map interpolating the layer 2 height information, etc.

Moritz

I.
Cant remember the module name i am using but i am generating the 3d
raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert,

<mlennert@club.worldonline.be mailto:[mlennert@club.worldonline.be](mailto:mlennert@club.worldonline.be)> wrote:

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with
a Top
of a layer (layer 1) and the top of the underlying layer (layer 2)
(which is also the bottom of the overlying layer 1). Everything in
between the elevation of top of layer 1 and top of layer 2
correspond to
a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere
(pinches out). Above the Layer the property is different; in other
words the property only starts below the Top of layer 1 until the
underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and
working
with a very large data set (i cannot link every top of layers
together),
my first approach was to create a each Layer property for every
elevation slice along each Borehole axis, interpolating soil
properties
at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz>
<http://r3.in.xyz> can
interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  • that the property is continuous until the next underlying
    layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the
top of
layer as encountered when drilling downwards, and provide the
elevation
of the next layer (pick); in between the soil property is the same,
however there is no data points. When interpolating, while there
is no
data point in between the two geological picks, the property should
still have weight in the interpolation process.

I don’t think r3.in.xyz <http://r3.in.xyz> is what you need. This

module aggregates 3D
point data into voxels.

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Moritz

Hi,

I am reposting the initial question:

“I am working with a data set that consists of borehole logs with a Top of a layer (layer 1) and the top of the underlying layer (layer 2) (which is also the bottom of the overlying layer 1). Everything in between the elevation of top of layer 1 and top of layer 2 correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist everywhere (pinches out). Above the Layer the property is different; in other words the property only starts below the Top of layer 1 until the underlying Top of the next layer.

Not sure of the capabilities of the interpolation in Grass and working with a very large data set (i cannot link every top of layers together), my first approach was to create a each Layer property for every elevation slice along each Borehole axis, interpolating soil properties at every elevation between Boreholes.

The key question is can v.vol.rst (changed this from r3.in.xyz) interpolate in 3D without a Property at every elevation slice,

· while respecting the condition that above the Top of the layer 2, the property corresponds to the Overlying top layer 1, and

· that the property is continuous until the next underlying layer 3 - can someone confirm this?

To provide a bit of background, borehole data bases, identify the top of layer as encountered when drilling downwards, and provide the elevation of the next layer (pick); in between the soil property is the same, however there is no data points. When interpolating, while there is no data point in between the two geological picks, the property should still have weight in the interpolation process.”

Thank You

Sent from Mail for Windows 10

From: Vaclav Petras
Sent: June 28, 2018 8:27 PM
To: Francois Chartier
Cc: Moritz Lennert; GRASS user list
Subject: Re: [GRASS-user] r3.in.xyz

Hi, I’m not following this discussion fully, but don’t you need just r.to.rast3elev followed by some raster algebra with ifs (r3.mapcalc)?

https://grass.osgeo.org/grass74/manuals/r.to.rast3elev.html

https://grass.osgeo.org/grass74/manuals/r3.mapcalc.html

Best,

Vaclav

On Thu, Jun 28, 2018 at 12:18 PM, Francois Chartier <fra.chartier@gmail.com> wrote:

Is it possible to define a horizontal constraints so that more weight is given on the interpolation of the property horizontally rather than vertically.

Similarly in kriging we can define a semi variogram with an orientation in 2d, and i would like to know if it can be done in 3d.

Also what about the question regarding the elevations between the top and bottom of the soil formation. Is there a possibilty for v vol rst to consider data points in between top and bottom.

On Jun 28, 2018 03:40, “Moritz Lennert” <mlennert@club.worldonline.be> wrote:

On 27/06/18 16:32, Francois Chartier wrote:

So therefore, my approach of generating a soil property at each
elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally.

Not sure what you mean by constraining the interpolation horizontally.

You can create a 2D elevation map by interpolating all your height
information of layer 1 (for example using v.surf.rst). Then you create a
second elevation map interpolating the layer 2 height information, etc.

Moritz

I.
Cant remember the module name i am using but i am generating the 3d
raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert,

<mlennert@club.worldonline.be mailto:[mlennert@club.worldonline.be](mailto:mlennert@club.worldonline.be)> wrote:

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with
a Top
of a layer (layer 1) and the top of the underlying layer (layer 2)
(which is also the bottom of the overlying layer 1). Everything in
between the elevation of top of layer 1 and top of layer 2
correspond to
a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere
(pinches out). Above the Layer the property is different; in other
words the property only starts below the Top of layer 1 until the
underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and
working
with a very large data set (i cannot link every top of layers
together),
my first approach was to create a each Layer property for every
elevation slice along each Borehole axis, interpolating soil
properties
at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz>
<http://r3.in.xyz> can
interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  • that the property is continuous until the next underlying
    layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the
top of
layer as encountered when drilling downwards, and provide the
elevation
of the next layer (pick); in between the soil property is the same,
however there is no data points. When interpolating, while there
is no
data point in between the two geological picks, the property should
still have weight in the interpolation process.

I don’t think r3.in.xyz <http://r3.in.xyz> is what you need. This

module aggregates 3D
point data into voxels.

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Moritz


grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


Avast logo

This email has been checked for viruses by Avast antivirus software.
www.avast.com

Any ideas for this question?

On Sun, Jul 1, 2018, 13:27 Francois Chartier, <fra.chartier@gmail.com> wrote:

Hi,

I am reposting the initial question:

“I am working with a data set that consists of borehole logs with a Top of a layer (layer 1) and the top of the underlying layer (layer 2) (which is also the bottom of the overlying layer 1). Everything in between the elevation of top of layer 1 and top of layer 2 correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist everywhere (pinches out). Above the Layer the property is different; in other words the property only starts below the Top of layer 1 until the underlying Top of the next layer.

Not sure of the capabilities of the interpolation in Grass and working with a very large data set (i cannot link every top of layers together), my first approach was to create a each Layer property for every elevation slice along each Borehole axis, interpolating soil properties at every elevation between Boreholes.

The key question is can v.vol.rst (changed this from r3.in.xyz) interpolate in 3D without a Property at every elevation slice,

· while respecting the condition that above the Top of the layer 2, the property corresponds to the Overlying top layer 1, and

· that the property is continuous until the next underlying layer 3 - can someone confirm this?

To provide a bit of background, borehole data bases, identify the top of layer as encountered when drilling downwards, and provide the elevation of the next layer (pick); in between the soil property is the same, however there is no data points. When interpolating, while there is no data point in between the two geological picks, the property should still have weight in the interpolation process.”

Thank You

Sent from Mail for Windows 10

From: Vaclav Petras
Sent: June 28, 2018 8:27 PM
To: Francois Chartier
Cc: Moritz Lennert; GRASS user list
Subject: Re: [GRASS-user] r3.in.xyz

Hi, I’m not following this discussion fully, but don’t you need just r.to.rast3elev followed by some raster algebra with ifs (r3.mapcalc)?

https://grass.osgeo.org/grass74/manuals/r.to.rast3elev.html

https://grass.osgeo.org/grass74/manuals/r3.mapcalc.html

Best,

Vaclav

On Thu, Jun 28, 2018 at 12:18 PM, Francois Chartier <fra.chartier@gmail.com> wrote:

Is it possible to define a horizontal constraints so that more weight is given on the interpolation of the property horizontally rather than vertically.

Similarly in kriging we can define a semi variogram with an orientation in 2d, and i would like to know if it can be done in 3d.

Also what about the question regarding the elevations between the top and bottom of the soil formation. Is there a possibilty for v vol rst to consider data points in between top and bottom.

On Jun 28, 2018 03:40, “Moritz Lennert” <mlennert@club.worldonline.be> wrote:

On 27/06/18 16:32, Francois Chartier wrote:

So therefore, my approach of generating a soil property at each
elevation and interpolating is a correct approach.
Is there a way that i can constrain the interpolation horizontally.

Not sure what you mean by constraining the interpolation horizontally.

You can create a 2D elevation map by interpolating all your height
information of layer 1 (for example using v.surf.rst). Then you create a
second elevation map interpolating the layer 2 height information, etc.

Moritz

I.
Cant remember the module name i am using but i am generating the 3d
raster from the 3d data points directly.

On Tue, Jun 26, 2018, 23:38 Moritz Lennert,

<mlennert@club.worldonline.be mailto:[mlennert@club.worldonline.be](mailto:mlennert@club.worldonline.be)> wrote:

On 27/06/18 03:59, Francois Chartier wrote:

Hi,

I am working with a data set that consists of borehole logs with
a Top
of a layer (layer 1) and the top of the underlying layer (layer 2)
(which is also the bottom of the overlying layer 1). Everything in
between the elevation of top of layer 1 and top of layer 2
correspond to
a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere
(pinches out). Above the Layer the property is different; in other
words the property only starts below the Top of layer 1 until the
underlying Top of the next layer.
Not sure of the capabilities of the interpolation in Grass and
working
with a very large data set (i cannot link every top of layers
together),
my first approach was to create a each Layer property for every
elevation slice along each Borehole axis, interpolating soil
properties
at every elevation between Boreholes.

I read on another forum that r3.in.xyz <http://r3.in.xyz>
<http://r3.in.xyz> can
interpolate in 3D without a Property at every elevation slice,

  • while respecting the condition that above the Top of the layer 2,
    the property corresponds to the Overlying top layer 1, and
  • that the property is continuous until the next underlying
    layer 3 -
    can someone confirm this?

To provide a bit of background, borehole data bases, identify the
top of
layer as encountered when drilling downwards, and provide the
elevation
of the next layer (pick); in between the soil property is the same,
however there is no data points. When interpolating, while there
is no
data point in between the two geological picks, the property should
still have weight in the interpolation process.

I don’t think r3.in.xyz <http://r3.in.xyz> is what you need. This

module aggregates 3D
point data into voxels.

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Moritz


grass-user mailing list
grass-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/grass-user


Avast logo

This email has been checked for viruses by Avast antivirus software.
www.avast.com

Le Sun, 1 Jul 2018 13:27:03 -0400,
Francois Chartier <fra.chartier@gmail.com> a écrit :

Hi,

I am reposting the initial question:

“I am working with a data set that consists of borehole logs with a
Top of a layer (layer 1) and the top of the underlying layer (layer
2) (which is also the bottom of the overlying layer 1). Everything
in between the elevation of top of layer 1 and top of layer 2
correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere (pinches out). Above the Layer the property is different;
in other words the property only starts below the Top of layer 1
until the underlying Top of the next layer. Not sure of the
capabilities of the interpolation in Grass and working with a very
large data set (i cannot link every top of layers together), my first
approach was to create a each Layer property for every elevation
slice along each Borehole axis, interpolating soil properties at
every elevation between Boreholes.

The key question is can v.vol.rst (changed this from r3.in.xyz)
interpolate in 3D without a Property at every elevation slice,
• while respecting the condition that above the Top of the layer 2,
the property corresponds to the Overlying top layer 1, and
• that the property is continuous until the next underlying layer 3 -
can someone confirm this? To provide a bit of background, borehole
data bases, identify the top of layer as encountered when drilling
downwards, and provide the elevation of the next layer (pick); in
between the soil property is the same, however there is no data
points. When interpolating, while there is no data point in between
the two geological picks, the property should still have weight in
the interpolation process.”

v.vol.rst is a tool to interpolate a continuous value into a 3D space.
So, I do not think that it is the tool you are looking for.

As already mentioned before:

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Have you tried this approach ?

Moritz

Thanks moritz. I will try this. I have about 300 m of elevation to interpolate so i might group by thickness bands of 2 metres etc.
Is there a way i can make a batch mode where i prep all the xy p by elevation and then interpolate automatically onw after another all slices?

On Mon, Jul 9, 2018, 03:01 Moritz Lennert, <mlennert@club.worldonline.be> wrote:

Le Sun, 1 Jul 2018 13:27:03 -0400,
Francois Chartier <fra.chartier@gmail.com> a écrit :

Hi,

I am reposting the initial question:

“I am working with a data set that consists of borehole logs with a
Top of a layer (layer 1) and the top of the underlying layer (layer
2) (which is also the bottom of the overlying layer 1). Everything
in between the elevation of top of layer 1 and top of layer 2
correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere (pinches out). Above the Layer the property is different;
in other words the property only starts below the Top of layer 1
until the underlying Top of the next layer. Not sure of the
capabilities of the interpolation in Grass and working with a very
large data set (i cannot link every top of layers together), my first
approach was to create a each Layer property for every elevation
slice along each Borehole axis, interpolating soil properties at
every elevation between Boreholes.

The key question is can v.vol.rst (changed this from r3.in.xyz)
interpolate in 3D without a Property at every elevation slice,
• while respecting the condition that above the Top of the layer 2,
the property corresponds to the Overlying top layer 1, and
• that the property is continuous until the next underlying layer 3 -
can someone confirm this? To provide a bit of background, borehole
data bases, identify the top of layer as encountered when drilling
downwards, and provide the elevation of the next layer (pick); in
between the soil property is the same, however there is no data
points. When interpolating, while there is no data point in between
the two geological picks, the property should still have weight in
the interpolation process.”

v.vol.rst is a tool to interpolate a continuous value into a 3D space.
So, I do not think that it is the tool you are looking for.

As already mentioned before:

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Have you tried this approach ?

Moritz

François,

First of all, I meant r.to.rast3elev [1], not r.to.rast3. Sorry for the mixup.

On 09/07/18 15:17, Francois Chartier wrote:

Thanks moritz. I will try this. I have about 300 m of elevation to interpolate so i might group by thickness bands of 2 metres etc.
Is there a way i can make a batch mode where i prep all the xy p by elevation and then interpolate automatically onw after another all slices?

I'm not sure what you mean by grouping by thickness bands.

IIUC your data, you have a series of boreholes. For a given geological layer you have its top elevation at each borehole where this layer is encountered. Just interpolate these top elevations for each geological layer. This gives you an elevation map per geological layer.

Then you can use r.to.rast3elev to create a 3D map.

One issue I've observed in my (limited) experience with this module is the need to define relevant vertical region values (resolution and top and bottom limits). If the resolution is larger than the actual layer thickness, the result will obviously not be satisfying.

Moritz

[1] https://grass.osgeo.org/grass74/manuals/r.to.rast3elev.html

On Mon, Jul 9, 2018, 03:01 Moritz Lennert, <mlennert@club.worldonline.be <mailto:mlennert@club.worldonline.be>> wrote:

    Le Sun, 1 Jul 2018 13:27:03 -0400,
    Francois Chartier <fra.chartier@gmail.com
    <mailto:fra.chartier@gmail.com>> a écrit :

     > Hi,
     >
     > I am reposting the initial question:
     >
     > “I am working with a data set that consists of borehole logs with a
     > Top of a layer (layer 1) and the top of the underlying layer (layer
     > 2) (which is also the bottom of the overlying layer 1). Everything
     > in between the elevation of top of layer 1 and top of layer 2
     > correspond to a Layer 1 property.
     >
     > The thickness of Layer 1 varies and this layer may not exist
     > everywhere (pinches out). Above the Layer the property is different;
     > in other words the property only starts below the Top of layer 1
     > until the underlying Top of the next layer. Not sure of the
     > capabilities of the interpolation in Grass and working with a very
     > large data set (i cannot link every top of layers together), my first
     > approach was to create a each Layer property for every elevation
     > slice along each Borehole axis, interpolating soil properties at
     > every elevation between Boreholes.
     >
     > The key question is can v.vol.rst (changed this from r3.in.xyz
    <http://r3.in.xyz>)
     > interpolate in 3D without a Property at every elevation slice,
     > • while respecting the condition that above the Top of the layer 2,
     > the property corresponds to the Overlying top layer 1, and
     > • that the property is continuous until the next underlying layer 3 -
     > can someone confirm this? To provide a bit of background, borehole
     > data bases, identify the top of layer as encountered when drilling
     > downwards, and provide the elevation of the next layer (pick); in
     > between the soil property is the same, however there is no data
     > points. When interpolating, while there is no data point in between
     > the two geological picks, the property should still have weight in
     > the interpolation process.”
     >

    v.vol.rst is a tool to interpolate a continuous value into a 3D space.
    So, I do not think that it is the tool you are looking for.

    As already mentioned before:

     > You probably want to use something like r.to.rast3. This would mean
     > interpolating each layer separately into 2D elevation maps and then
     > assemble them into 3D using r.to.rast3.

    Have you tried this approach ?

    Moritz

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, or (second option) if i need to interpolate each elevation slice horizontally in individual 2D raster and then combine them into a 3D raster.
If it is the second option, then i need to generate property data points between tops and bottom contacts of each soil layer, then export each layer per elevation and generate a 2D raster for each elevation. there might be another way to tell grass to interpolate the data from the database only at a give elevation slice.
Let me know if this is unclear and if it is I will make a cross section of what I am trying to do.

Thanks for your time.
Francois

Le lun. 9 juil. 2018 à 10:04, Moritz Lennert <mlennert@club.worldonline.be> a écrit :

François,

First of all, I meant r.to.rast3elev [1], not r.to.rast3. Sorry for the
mixup.

On 09/07/18 15:17, Francois Chartier wrote:

Thanks moritz. I will try this. I have about 300 m of elevation to
interpolate so i might group by thickness bands of 2 metres etc.
Is there a way i can make a batch mode where i prep all the xy p by
elevation and then interpolate automatically onw after another all slices?

I’m not sure what you mean by grouping by thickness bands.

IIUC your data, you have a series of boreholes. For a given geological
layer you have its top elevation at each borehole where this layer is
encountered. Just interpolate these top elevations for each geological
layer. This gives you an elevation map per geological layer.

Then you can use r.to.rast3elev to create a 3D map.

One issue I’ve observed in my (limited) experience with this module is
the need to define relevant vertical region values (resolution and top
and bottom limits). If the resolution is larger than the actual layer
thickness, the result will obviously not be satisfying.

Moritz

[1] https://grass.osgeo.org/grass74/manuals/r.to.rast3elev.html

On Mon, Jul 9, 2018, 03:01 Moritz Lennert, <mlennert@club.worldonline.be
mailto:[mlennert@club.worldonline.be](mailto:mlennert@club.worldonline.be)> wrote:

Le Sun, 1 Jul 2018 13:27:03 -0400,
Francois Chartier <fra.chartier@gmail.com
mailto:[fra.chartier@gmail.com](mailto:fra.chartier@gmail.com)> a écrit :

Hi,

I am reposting the initial question:

“I am working with a data set that consists of borehole logs with a
Top of a layer (layer 1) and the top of the underlying layer (layer
2) (which is also the bottom of the overlying layer 1). Everything
in between the elevation of top of layer 1 and top of layer 2
correspond to a Layer 1 property.

The thickness of Layer 1 varies and this layer may not exist
everywhere (pinches out). Above the Layer the property is different;
in other words the property only starts below the Top of layer 1
until the underlying Top of the next layer. Not sure of the
capabilities of the interpolation in Grass and working with a very
large data set (i cannot link every top of layers together), my first
approach was to create a each Layer property for every elevation
slice along each Borehole axis, interpolating soil properties at
every elevation between Boreholes.

The key question is can v.vol.rst (changed this from r3.in.xyz
<http://r3.in.xyz>)
interpolate in 3D without a Property at every elevation slice,
• while respecting the condition that above the Top of the layer 2,
the property corresponds to the Overlying top layer 1, and
• that the property is continuous until the next underlying layer 3 -
can someone confirm this? To provide a bit of background, borehole
data bases, identify the top of layer as encountered when drilling
downwards, and provide the elevation of the next layer (pick); in
between the soil property is the same, however there is no data
points. When interpolating, while there is no data point in between
the two geological picks, the property should still have weight in
the interpolation process.”

v.vol.rst is a tool to interpolate a continuous value into a 3D space.
So, I do not think that it is the tool you are looking for.

As already mentioned before:

You probably want to use something like r.to.rast3. This would mean
interpolating each layer separately into 2D elevation maps and then
assemble them into 3D using r.to.rast3.

Have you tried this approach ?

Moritz

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
-----------top elevation soil2-------
2222222222222222222222222222222222222
-----------top elevation soil3-------
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
222222222222221111111111111111

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

Moritz

Hi Moritz, Thanks for your email. What you described is the concept for developing most geological model by correlating top of layers (rock, soils, formation etc.) which is the correct approach when geological contacts are clear.

In my case (as part of a masters/engineering degree), I have so much data and i am interpolating soils, that i am trying another approach where i will be interpolating a property in 3D. Although there are some regional conceptual models in my areas, we often find that reality differs quite a bit from the conceptual understanding of the area. Therefore i am attempting to develop a ''newish" approach by interpolating the data set by using a numerical property for the soil type.
I will be interpolating most likely particle size (x mm for sand, x mm for silts, x mm for clays etc), and hydraulic conductivity (K). This could be any parameters such as moisture content, geotech blow counts, concentrations etc.

That said, from the borehole information, the soil type or particle size is constant until the next underlying formation. However, the data base only provide the property at the top of the formation (ex: silt) like typical BH databases. Once the interpolation is completed, i can identify the soils by the color coding and custom scales.
So i am wondering if in Grass, i need to generate a property (particle size, K) for each meter of elevation so that i have a data point in between the top and bottom of the layer, or if there are some modules that can automatically consider that the property extends to the next underlying layer.

I think from what i understand, i will need to generate a data point for each meter of elevation along the borehole axis, and possibly interpolate each elevation separately or using a module that can do 3D interpolation such as v.vol.rst. although i want to constrain the interpolation horizontally, so I may need to interpolate each elevation separately (manually or in batch mode).
alternatively, i could be able to do a query in grass at each elevation to search for the property above along the Bh axis during the interpolation process but this seems complicated. I can generate properties for each elevations in Access in import into Grass.

Thanks
Francois

Le mar. 10 juil. 2018 à 21:59, Moritz Lennert <mlennert@club.worldonline.be> a écrit :

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