Matt,

Some clues to your problem:

1) Try to get hold of the r.mapcalc document by Jim Westervelt,
   which gives two r.mapcalc-scripts for calculating slope and
   aspect maps using Horn's and Frank's method; the Horn-script
   does a good job when you have detailed elevation data

2) Try s.surf.tps for the interpolation; r.surf.idw doesn't do a
   very good job when it comes to smoothing, and it appears to me
   that your data isn't very smooth if you get steps

3) Nevertheless, if you have only minor changes in your elevation
   data you will always get steps. For example: if your elevation
   changes from say 10 to 9 and the surroundings cells all have
   values of 10 up-slope and 9 down-slope, there will always be a
   contour-line like zone with an (unrealistic) slope-value that
   will be equal to the ratio of 1 elevation-unit and the pixel-size
   I have had this problem with elevation data from a flood-plain,
   where elevation-steps are in meters; with a resolution
   of 10x10 meters, you will get a slope-value of 10% (equal to a
   elevation change of 10 meters in 100 meters) in an area which is
   almost flat, or has slope of at most 0.5 to 1%. There's only one
   solution to this, as GRASS doesn't support floating-point data:
   multiply your original data with 100 or 1000 and do the interpolation
   again. You'll have to find a way to get rid of the exaggeration when
   you want a real slope-map afterwards, but I suppose r.mapcalc could do
   the job.

Good luck!


Philip Verhagen
Stichting RAAP
Amsterdam

