[GRASSLIST:9387] r.walk and r.drain, and some other questions
Tom Russo
russo at bogodyn.org
Fri Dec 9 00:12:35 EST 2005
Funny, just today I was starting to think about how to develop a friction
cost map using an elevation model and other data to compute a least-cost
path for walking in wilderness areas (i.e. with no established roads or
trails -- just finding the easiest way to get from here to there given
the terrain, vegetation, hydrography, etc.). Tonight I updated CVS and found
a new module called r.walk that appears (from what info there is so far) to be
very much related to exactly what I was pondering. Marcus, get out of
my head!
Anyhow, even without the mysterious and timely arrival of this new module,
I still had a question about how to accomplish something that I'd just
read about today as a related task in ArcGIS. Perhaps someone can
help me?
The paper I was reading was about computing paths through wilderness areas
to minimize the work needed to visit a small number (N) of sites starting from
the N+1th site. They did it by computing a friction surface for the region,
and generating N+1 cost surfaces (each one the cost surface with a given site
at origin). They used the N cost surfaces to compute N(N+1) least-cost
paths from each point to each of the others.
So far so good --- I see that in GRASS I'd have used r.cost if I were using
their particular friction surface (which I think is far too simplistic as
it is isotropic), and r.drain to compute a raster version of the least cost
path. And now that there's an r.walk (if it does what it seems to say it does) I won't have to figure out how to use r.spread and r.spreadpath to do this
with anisotropic costs due to the terrain.
But *then* they generated a vector network of paths and used network analysis
to compute the optimum route that minimized the work needed to visit the
various sites --- a travelling salesman problem, basically, but not only
trying to pick the right order of things to visit, but the best path
through the terrain to use to get there with the least effort and time.
I can see how I might generate such a vector network, by using r.to.vect
on each of the r.drain output rasters and then patching together the
vectors --- but how in the world could one attach cost columns to the vectors?
r.drain appears to be able to produce a raster where the pixels in the
least-cost path are the cost to get from the origin to that pixel, but
it doesn't seem like there's any way to get that information into a
vector created from that raster. Hints?
Assuming that there is in fact a way to convert the r.drain raster into
a vector with costs attached to the line segments, it shouldn't be that
difficult to do what these folks had done. Thoughts?
--
Tom Russo KM5VY SAR502 DM64ux http://www.swcp.com/~russo/
Tijeras, NM QRPL#1592 K2#398 SOC#236 AHTB#1
"The only thing you can do easily is be wrong, and that's hardly
worth the effort." -- Norton Juster
More information about the grass-user
mailing list