Errata 1st Edition

Open Source GIS: A GRASS GIS Approach
Markus Neteler, Helena Mitasova
1. Edition 2002, 464 pages
ISBN: 1-4020-7088-8
Kluwer Academic Publishers, Boston, Dordrecht, London
Book Series: The Kluwer international series in Engineering and Computer Science: Volume 689


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=-9999This 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 3×3 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 In case the map ‘vmap_trans’ is not visible, it is recommended to use the ‘-r’ parameter of ‘’: -r vmap_trans
p. 157 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: elev.gully elev=elev.gully mask=gully.mask
p. 178 s.vol.rst Update: Section 3D precipitation interpolationUnfortunately 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:

  • 3D sites of climate stations (x,y,z,precipitation)
  • 2D raster DEM

The interpolation is done with 3D RST (trivariate spline) implemented in ‘s.vol.rst’. This module expects that you have defined a 3D region. To create such a 3D region within your current MAPSET, you have to run ‘g3.createwind’ script before running ‘s.vol.rst’ even if you are computing just a 2D, intersection file. The interpolation example is then:g.region res=500 -p
g3.createwind t=3000 b=0 dres=3000
s.vol.rst in=precip3d cellinp=dem500 cellout=precip.topo zmult=50 segmax=700

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 ‘’ 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
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 7×7 median We do not extend to a 7×7 median filter but we want to reproduce the r.mapcalc command with r.mfilter (3×3). 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 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 run after the contours are imported with
p. 313 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: lw_buildings.shp out=lw_buildings
p. 313 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 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 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 ‘’ 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

Go here for changes in GRASS software which may affect the procedures described in the book.