[GRASS-user] Spatially/networked constrained interpolation

One of the issues we are currently working on (and the reason for the
barrage of emails about point files and whatnot) is moving towards
interpolating data which is located in a river network. Are there any
spatial interpolation techniques available in grass which will take into
account "barriers" when calculating distances (say, if we are using a
kriging approach). For instance:

----?-------
    \____X1_______
    /
---X2-------

These are two rivers flowing into a larger channel. ? is an unknown value I
want to predict. X1 and X2 are two stations that I have data for. X2 is
geographically closer to ? than X1, but if you approach this viewing it as a
network or a costdistance surface where the distances must be constrained by
channel connectivity, X1 is closer than X2. Initially I've considered
generating a costdistance surface PER station using a mask of the rivers,
and using that to figure out the distance of any arbitrary point to every
station, then pulling out the variogram info into R or some stats package,
make a model, then apply it to the stack of distance from station X rasters.
Is there a better way of doing this?

--j

--
Jonathan A. Greenberg, PhD
Postdoctoral Scholar
Center for Spatial Technologies and Remote Sensing (CSTARS)
University of California, Davis
One Shields Avenue
The Barn, Room 250N
Davis, CA 95616
Cell: 415-794-5043
AIM: jgrn307
MSN: jgrn307@hotmail.com

Jonathan Greenberg wrote:

One of the issues we are currently working on (and the reason for the
barrage of emails about point files and whatnot) is moving towards
interpolating data which is located in a river network. Are there any
spatial interpolation techniques available in grass which will take
into account "barriers" when calculating distances (say, if we are
using a kriging approach). For instance:

----?-------
    \____X1_______
    /
---X2-------

These are two rivers flowing into a larger channel. ? is an unknown
value I want to predict. X1 and X2 are two stations that I have data
for. X2 is geographically closer to ? than X1, but if you approach
this viewing it as a network or a costdistance surface where the
distances must be constrained by channel connectivity, X1 is closer
than X2. Initially I've considered generating a costdistance surface
PER station using a mask of the rivers, and using that to figure out
the distance of any arbitrary point to every station, then pulling out
the variogram info into R or some stats package, make a model, then
apply it to the stack of distance from station X rasters. Is there a
better way of doing this?

Hi Jonathan,

I have written something which does that for raster data (true cost
interpolation). It is well developed and tested, but I have not yet
formally published it. In our project we are looking at parallel fjords,
not rivers, but it is the same non-polluting idea -- you want as-the-
fish-swims "cost" distance, not as-the-bird-flies Euclidean distance.

+: you can make it more expensive to travel upstream and other cool
stuff. (similar to r.walk in that way- it may be quicker to drive up the
gentle back of a hill than to attempt the shortest path up a cliff face)

-: it is extremely computationally intensive for more than ~50 starting
vector points, so is better for point source monitoring problems than
bathymetric surface interpolation. (it was written for interpolating
between CTD stations)

screenshot:
http://bambi.otago.ac.nz/hamish/grass/screenshots/inlets_03_SurfSal_icw_big.png

alternative methods in other GIS systems I have seen are abysmally brain
dead. e.g. AFAICT the barrier method used in Arc just removes points
from the IDW interpolation which do not have direct line of sight to
each other. Useless for a curved river or two points either side of an
island. Worse, that gives you a bad results if you do have a far away
point which happens to be in the line of sight, and much closer points
which aren't.

contact me off-list for more info,
Hamish