| Book Page(s) | Module | Correction |
| p. 2 | none | The sentence "To support this concept, Richard M. Stallman created the ``Free Software Foundation'' in 1984 and started the GNU-Project." should more accurately say: "In 1984, Richard M. Stallman started to work on the GNU-Project and in 1985 he created the ``Free Software Foundation'' to support the Free Software concept." |
| p. 3 | none | The sentence "By this GRASS embraces the Open Source philosophy" should say "By this GRASS embraces the Free Software philosophy" |
| Chapter 2 | none | references to the Linux as operating system should be more accurately refer to GNU/Linux |
| p. 74 | d.rast | To see the southern exposed slopes, the correct angle values are d.rast aspect vallist=225-315 bg=blue as East corresponds to 0 degree with angles increasing counterclockwise. |
| p. 87 | r.null | 'setnull' and 'null' parameters are mixed: To change a certain value (e.g. -9999) to NULL the setnull parameter is used: r.null mymap setnull=-9999 This will change the value -9999 to NULL in map mymap. To replace the NULLs by another number, the null parameter is used: r.null mymap null=-9999 This will change NULL to -9999. |
| p. 89 | r.mapcalc |
The input map name is written as but should read 'old_int_map': mapcalc> newmap1 = old_int_map + 123 mapcalc> newmap2 = old_int_map + 123. However, the described behaviour of 'r.mapcalc' applies to integer and floating point map type. |
| p. 92 | r.mapcalc |
The words "top" and "bottom" are mixed: Correct is "will read only the offset cells bottom right [1,1] and top left [-1,-1] in an 3x3 matrix for calculating the new map." |
| p. 93 | r.mapcalc |
The second 't2' should read 't1'. Here the correct command:
newmap = eval (t1=round(map), t2=if(((t1 >= a) && (t1 <= b))\
,c,d), if(isnull(map), map, t2))
|
| p. 101 | r.average | The last sentence on page 101 is not valid. The base parameter is required for the r.average module. |
| p. 102 | r.volume |
The word 'maximum' should be replaced by 'minimum': Correct is "For the construction the earth's surface has to be excavated to a minimum depth of 5m". p. 103: The reference system is shifted by 5m. The corrected exercise reads as follows:
r.mapcalc excavation="elevation.dem - 1120 + 5"
d.rast excavation
r.univar excavation
[...]
Minimum: 5
Maximum: 24
[...]
r.volume excavation
Cat Average Data # Cells Centroid Total
Number in clump Total in clump Easting Northing Volume
1 12.17 107461 8832 591375.50 4926425.50 107461.00
Total Volume = 107461.00
|
| p. 130 | v.support |
In case the map 'vmap_trans' is not visible, it is recommended to use
the '-r' parameter of 'v.support':
v.support -r vmap_trans |
| p. 157 | s.in.ascii |
The first line in the imported table should read name|mygrasssites instead of name|myasciisites |
| p. 177 | gully mask |
the inverted gully mask gully.mask.inv created by the r.mapcalc
command is not necessary and the command that interpolates only the gully
should use the gully.mask raster map:
s.surf.rst elev.gully elev=elev.gully mask=gully.mask |
| p. 178 | s.vol.rst | Update: Section 3D precipitation interpolation
Unfortunately this subsection got too short and the necessary definition of 3D region was omitted. As described in the book, to perform the 3D interpolation of precipitation with influence of elevation you need:
g.region res=500 -p
You have first defined the horizontal resolution as 500m with g.region and vertical resultion (dres) as 3000m with g3.createwind, creating a volume with a single layer. Because there are only around 400 points in the data set you can skip the segmentation by using segmax=700. The resulting map 'precip.topo' is a 2D raster map representing the precipitation. The 3D RST computes internally a 3D (volume) precipitation function and when using the 'cellinp' option the precipitation values are extracted from the precipitation volume at the elevations given by the 'dem500' raster map. You can experiment with tension, smoothing and zmult parameters to get the best result (see reference in the book). |
| p. 179 | Caption 7.11 | The second b) in the caption should be a c) as it refers to Figure 7.11 c). |
| p. 212 | Reference | The reference in the last row to Section 4.3 is incorrect. It should refer to Section 4.2.1. |
| p. 214 | Reference | At the end of the page in the list of the images in LOCATION 'imagery' the names gs13.1 and gs14.1 should be reported instead of gs13 and gs14. |
| p. 216 | Image name | In the middle of the page the image 'spot.ms.2' should read 'gs13.1'. |
| p. 217 | r.colors |
The third color value for pixel values 159 is not given correct as 0 but
should be 255. This is the corrected command:
r.colors spot.p col=rules << EOF 15 255 0 0 80 255 255 0 159 0 255 255 254 0 0 255 EOF |
| p. 244 | map[-2,-1] | A negative row number refers to a cell up: The phrase should read: ... map[-2,-1] refers to the cell two rows up and one column to the left of the center cell. |
| p. 244 | 7x7 median | We do not extend to a 7x7 median filter but we want to reproduce the r.mapcalc command with r.mfilter (3x3). However, the filter type should be TYPE P and not TYPE S. |
| p. 248/ 249 | i.combine/ r.combine | All references to i.combine/r.combine should read i.composite/r.composite. |
| p. 251 | Brovey | The LANDSAT channel reference is wrong. The sentence should read: Image fusion based on Brovey transformation for LANDSAT-TM7 data is merging the channels 2, 4, and 5 ... |
| p. 274 | i.ortho.photo | The subsections "Identification of approximate nadir coordinates" and "6 Initialize exposure station parameters" are only needed for oblique aerial fotos. In this case "Use these values at run time" (p. 276) would be set to "1". |
| p. 279 | gs13 | The reference to the LOCATION is not correct. The sentence should
read: A sample segmentation procedure for the aerial image gs13 which was previously ortho-rectified into the Spearfish LOCATION may be performed as follows: |
| p. 313 | v.in.shape | run v.support after the contours are imported with v.in.shape |
| p. 313 | v.in.shape | inconsistency in file name: it should be lw_buildings.shp, not only
lw_buildings,
in the same command the output should be lw_buildings, not only buildings. Corrected command line: v.in.shape lw_buildings.shp out=lw_buildings |
| p. 313 | m.in.e00 | after importing the soil map 'lw_soil.e00' it is recommended to change
also the extent of the region as follows:
g.region res=6 vect=lw_soil |
| p. 314 | $LOCATION | use $GISDBASE/$LOCATION_NAME/$MAPSET instead of $LOCATION due to the change in GRASS, see GRASS Changes section |
| p. 314 | m.in.e00 | Attributes for the Kfactor in the lw_soil.e00 file are multiplied
by 10, to get the correct values, they should be divided by 10, e.g. by
'r.mapcalc' after transformation to raster.
For example r.mapcalc lw.kfact="@lw_soil.kfact/10." This may be a bug in m.in.e00 which probably ignores a column multiplication factor. |
| p. 315 | g.region | Note: use g.region rast=c0792_004 only if you want to look
at the entire imported image, then go back to the study sub-area using
g.region vect=lw_soil. |
| p. 316 | g.region | to get the resulting elevation raster for the same region as shown
in Figs. 12.3 and 12.4, change the region to the specially provided
raster regionfig12.3 or to the vector lw_contour.cut2
(both are provided with the updated wake-spft dataset):
g.region res=6 rast=regionfig12.3 -p g.region res=6 vect=lw_contour.cut2 -p Get back to the study sub-area by g.region vect=lw_soil -p |
| p. 320 | g.region | In case that you have been changing regions without going
back to the study sub-area, to set the region back and get the
results for the same area as in the Fig. 12.5 and 12.6 use
g.region res=6 vect=lw_soil |
| Book Index | entry 'v.in.shape' is missing and should also refer to p. 123 (in addition to p. 30, p. 313) | |
| entry 'anisotropy' is missing and should refer to p. 169 | ||
| entry 'temperature' is missing and should refer to p. 234 |
[text in red color needs to be updated here]
Go here for changes in GRASS software which may affect the procedures described in the book.