[GRASS-user] Lake modelling using volume interpolation (v.vol.rst and Paraview)

Hamish hamish_b at yahoo.com
Tue Jul 27 02:44:27 EDT 2010


Craig Wilson wrote:
> I have been working with GRASS for my Masters project to visualize 3D
> point data of Loch Lomond in Scotland, with carbon levels and
> temperatures measured at 63 points around the lake (at various depths).

(if you haven't already seen Helena's Chesapeake Bay 3D visulaizations
done with NVIZ linked from the screenshots page, have a look..)

> I can now get voxel data for each measured point visualised in Paraview,
> but have been unable to interpolate this data throughout the lake. Would
> anyone have any idea of the process for doing that?
>
> I have depth data for the whole lake (1208 points including on the
> shoreline) plus my own digitised outline (573 points), so I considered
> using the former as a bottom surface and the latter as a top surface in
> r3.out.vtk, but that doesn't work at all, producing an error message. I
> have also tried v.vol.rst with the carbon file, using the 4th column
> (containing the carbon data) as the w variable as specified, but that
> just produces a blank box in Paraview. Does anyone have any suggestions?

a little bit of a tangent but I'd start by creating a 2D (2.5D..) raster
surface of the bathymetry with the r.surf.nnbathy module from the GRASS
Wiki Addons page. You can make contour lines etc. from that, looks good.

next I'd use `r.to.rast3elev -l` to create the "land" part of the voxel
data, and as some sort of MASK for the v.vol.rst part, then combine the
two with r3.mapcalc.

see http://grass.osgeo.org/wiki/Help_with_3D


Is the temperature & carbon in e.g. continuous vertical CTD profiles
down through the water column, random water samples from "various" mid-water
depths, or from bottom samples, or..?

btw, what sort of "carbon" data are we talking about? DOC levels? isotopes?


if from like CTD data with hi-res in the vertical but stations being
spaced some far distance horizontally) you can also split it up into
a series of 2D vertical sections at each depth, run v.surf.rst for each
one, then stack all those 2D slices together with r.to.rast3 for your
3D raster block.


two things to watch out for:
 (my day job: physical oceanography of fjords)

1) As I understand it v.vol.rst treats x,y,z space as equals in the interpolation,
while in reality it is much easier to mix within the same density stratum
than it is to mix vertically. A potential way around this is to calc how
much harder it is to mix in the vertical, and then exaggerate the number
of z-cells by that factor. After the interpolation is done you could
squash it back down to 1:1:1 space. I'm not sure how much of a difference
it would make, but I've always wanted to try it. It could make a lot (look
at any cloud in the sky with a flat bottom for proof..)


2) Lock Lomond is pretty straight so not a huge problem, but beware that
it doesn't try and interpolate through the geographic kinks as if they
were not there. Most interpolation methods do. The channels I work with
are not so nice and straight so it's a big problem form me, & so I wrote a
module called "v.surf.icw" to interpolate around the land masses instead
of through them. Same idea about running it at different depth slices and
then stacking them together applies.
see
 http://grass.osgeo.org/wiki/GRASS_AddOns#v.surf.icw
 http://grass.osgeo.org/wiki/File:Inlets_03_SurfSal_icw_big.png


regards,
Hamish


      


More information about the grass-user mailing list