kang at risca.rs.msu.edu kang at risca.rs.msu.edu
Fri Dec 16 20:55:51 EST 1994

Hi All,
Has anyone ever tried to run r.surf.contour?  I have a groundwater table
contour map for the lower peninsula of Michigan.  I use it as the input to the
r.surf.contour to generate a continuous surface for groundwater table.
However, the process is so slow, 0 percent done after more than 900 minutes,
I had to kill it eventually.  I am running on a SUN SPARC 20.  Although my
resolution is about 100 meters for a region of 4550 x 3650 cells, I really 
didn't expect it to run so slow.  This brings up three issues for comments and

First, why the process is so slow on GRASS?  I have a lot of proof that the 
ARC/INFO GRID always runs faster than GRASS on the similar functions, especially
those functions required computational power and those maps having a large 
number of cells.  Is this the result of program inefficiency or the result of
the data strucutre.

This brings up the second issue, data structure.  The run-length compression
structure in GRASS is a very common data structure.  However, the ARC/INFO
GRID data structure, a hierarchical tile-block structur (quad-tree?) supports
random access to data - rapid retrieval of information maintained from any
subsection of a grid, regardless of the size of the database (from ARC/INFO
manual - page 1-4 in Cell-based Modeling with GRID).  Has anyone compared
the advantages and disadvantages between these two data structure?

Finally, are there any other get-around solutions to my problem?  I have several
ideas in mind.  If I break the big map into small chunks and run the
r.surf.contour separately, then patch the results together (may need overlapping
 areas).  Will this work faster than just running with a big map (if the
original creater of the r.surf.contour can answer it)?  The other solution is
either using r.random to subset at least 50% (or more) of contour points out or
write a small program to get a fixed grid points subset, then, use the
r.surf.idw(2) with the subset points to generate a complex surface.  I doubt
that the second solution will give me the desired result - a contious surface.
If one uses a contour map as input to the r.surf.idw(2) program, the areas
between two contour lines usually have only two values, either value of the
downhill or the uphill contour, and it is not really a continuous surface.

I also have to vote for using "null" for current "0" data, since the contour 
value of the shoreline is 0 and none of the programs (r.surf.idw(2) and
r.surf.contour) can handle it properly.  I have to change it to 1 and change
it back after the process is done (if it can really be done).  This is the
first time that I feel GRASS can't provide what I need for me, a 6-year
GRASS user.  I hate to see that I need to use ARC/INFO to do it and the result
is superier that GRASS.  If that's the case, I may have to give up on GRASS
and shift all my works to ARC/INFO in the future.

Yung-Tsung Kang,
Center for Remote Sensing, Michigan State University

More information about the grass-user mailing list