[GRASS-user] [GRASSLIST:1081] Sediment dispersal modeling

Hey folks,

  I'm working on a simple model for ocean floor sediment dispersal
from rivers. The basics are:

- We have sediment outputs at point locations representing the pour point.
- We want to "move" that sediment outward using something like a cost
distance function. The catch is that the output raster values, instead
of representing distance from the point, should represent a decaying
amount of the total sediment.
- The total value of all raster cells in the sediment "plume" should
add up to roughly the total sediment output at the pour.
- The total count of the sediment plume cells should be proportional
to the amount of sediment at the pour point.

It is a very simplistic model in that it doesn't take into account
currents and is only 2D but, for now, this is sufficient for the scale
we're working at.

We have looked at a few functions such as r.cost and r.spread but
neither seem to get us any closer to the outputs we're looking for.
Seeded region-growing (using r.mapcalc) and cellular automata seem
like they might also be appropriate tools but no luck so far.

Does anyone have any experience doing this sort of modelling in GIS
(GRASS or otherwise)? Any thoughts on a combination of techniques that
might yield the results I outlined?

Thanks for the input,
--
Matt Perry
perrygeo@gmail.com
http://www.perrygeo.net

Setting aside how realistic the model is, why not try this:

1. Calculate the distance from the harbor mouth to all marine pixels
(my function r.eucdist would be good for this)

2. Code up a diffusion equation in r.mapcalc that is a function of
distance and calculate its value for the entire map using the distance
map in #1 as input.

3. Cut the "diffused" mass map at some threshold

4. Normalize the map so that it sums to one

5. Multiply the normalized map by the volume of sediment input at the mouth.

I am not sure exactly what #2 should look like, linear, exponential
whatever you think best represents your problem. FWIW I think that the
equation for IDW does something like this:

w = (1 - D/Dmax)^2 / (D/Dmax)

Where w is the resulting normalized weight, D is the distance of the
cell from the source and Dmax is the maximum distance (for
normalization) from the source in the grid.

On 5/24/06, Matthew Perry <perrygeo@gmail.com> wrote:

Hey folks,

  I'm working on a simple model for ocean floor sediment dispersal
from rivers. The basics are:

- We have sediment outputs at point locations representing the pour point.
- We want to "move" that sediment outward using something like a cost
distance function. The catch is that the output raster values, instead
of representing distance from the point, should represent a decaying
amount of the total sediment.
- The total value of all raster cells in the sediment "plume" should
add up to roughly the total sediment output at the pour.
- The total count of the sediment plume cells should be proportional
to the amount of sediment at the pour point.

It is a very simplistic model in that it doesn't take into account
currents and is only 2D but, for now, this is sufficient for the scale
we're working at.

We have looked at a few functions such as r.cost and r.spread but
neither seem to get us any closer to the outputs we're looking for.
Seeded region-growing (using r.mapcalc) and cellular automata seem
like they might also be appropriate tools but no luck so far.

Does anyone have any experience doing this sort of modelling in GIS
(GRASS or otherwise)? Any thoughts on a combination of techniques that
might yield the results I outlined?

Thanks for the input,
--
Matt Perry
perrygeo@gmail.com
http://www.perrygeo.net

--
David Finlayson

Hi GRASS users:

How can I change the width of a boundary
when you display a vector layer with d.vect?

Thank you for your help

Kenneth

Hi GRASS users:

I try to use v.out.ascii to export a
vector map of only points.
I use the v.univar with the file,
but when I try to export it only export
the "cat" number but not the value.

How can I export in an ascii file the
coordinates along with the value?

Thank you for your help

Kenneth

How can I change the width of a boundary when you display a vector
layer with d.vect?

You need a recent version of GRASS 6.1-cvs, then just "d.vect width=".
Also new are the wcolumn and wscale parameters to get dynamic line width
from a attribute column. (e.g. number of lanes on a road sets width)
(thanks to Huidae Cho)

With GRASS 6.0 you can make a small buffer (v.buffer) and display that.

All versions of ps.map let you set the line width.

Hamish

On Fri, 26 May 2006, Kenneth Roy Cabrera Torres wrote:

Hi GRASS users:

I try to use v.out.ascii to export a
vector map of only points.
I use the v.univar with the file,
but when I try to export it only export
the "cat" number but not the value.

How can I export in an ascii file the
coordinates along with the value?

Thank you for your help

you could use v.to.db to put the point coordinated to the database (v.to.db map=yourmap type=point option=coor column=x,y) and then export that with v.db.select like so:
v.db.select map=yourmap >yourfile.txt

--W

--

<:3 )---- Wolf Bergenheim ----( 8:>

I try to use v.out.ascii to export a
vector map of only points.
I use the v.univar with the file,
but when I try to export it only export
the "cat" number but not the value.

How can I export in an ascii file the
coordinates along with the value?

v.out.ascii only exports coordinates and category numbers. For
attributes you need to get from the DB table.

Note only features with a category number will be output.

To output values as well as coordinates and cat value, use the
"v.out.ascii.db" script from the Wiki Add-ons page:
  http://grass.gdf-hannover.de/wiki/GRASS_AddOns#Vector_add-ons

Hamish