A GRASS GIS addon to upload raster values and labels to a point layer

In GRASS GIS you can upload raster values at positions of vector points to the attribute table of that vector point layer using the function v.what.rast. If you also interested in the raster category labels, you can have a look at r.what, which lets you query a raster map  on their category values and category labels.

However, the results of r.what are written to a text file. If you want to upload raster values and labels to the attribute table of a point vector map, you can use  v.in.ascii to import the text file created with r.what as a point vector layer in GRASS GIS.

Fairly straightforward, but wouldn’t it be even more convenient if you you had an option in r.what.rast to also upload the category labels? Well, that option isn’t there yet, so for the time being, I have written a simple addon,  v.what.rastlabel, that fills in the gap, i.e., it let’s you upload the values and labels of one or more raster layers at positions of vector points to the attribute table of that vector point layer.

The addon is available from github. If you are running GRASS 7.2 or above, you can simply install it using g.extension :

g.extension v.what.rastlabel url=https://github.com/ecodiv/v.what.rastlabel

If you are still running GRASS GIS 7.0, see this page on the GRASS GIS wiki on how to install scripts. After installing the addon, you can run it by typing v.what.rastlabel on the command line.



Climate data sets, which one to select?

For species or vegetation modelling, one of the first choices to make is the selection of explanatory variables, which in most cases will include climatic or bioclimatic data sets. One of the most widely used global climate data sets in biogeographic and ecological research is from Worldclim (Hijmans et al., 2005). Alternative global rainfall data sets are from TAMSAT TARCAT (Maidment et al., 2014) and CHIRPS (Funk et al., 2014). The Worldclim data layers are based on an interpolation of average monthly climate data from weather stations. The other two data sets combine weather station data with satellite observations to improve accuracy where in situ rainfall measurements are sparse. All three data sets are available from the KITE resources website as part of the Africlim dataset (Platts et al. 2015).

Uncertainty in data sets based interpolation of weather station data can be highly uncertain, especially in mountainous and poorly sampled areas (Hijmans, et al., 2005). This is certainly an issue in eastern Africa, which is a topographically diverse region with a relative poor coverage of weather stations. On the other hand, rainfall estimates based on satellite imagery have issues as well. I am not a climatologists and I don’t find it easy to determine which data set I should use. But I can of course start by comparing the data sets. Below, I compare the long-term average annual rainfall data. Note that the Worldclim data set is representative for the time period 1950-2000, while the other two data sets are based on data from 1983-2012.

Click on image to enlarge /  open in slide-show

The images above show the mean annual rainfall. It is immediately evident that the average rainfall distribution as estimated by the TAMSAT data set deviates considerably from the other two estimates. Especially the low rainfall estimates for three of the five s0-called water towers of Kenya (Mount KenyaAberdare Range and the Mau Forest range) and Mount Kilimanjaro in Tanzania raise question marks.

In GRASS GIS it is easy to quickly compare two maps using the bivariate scatterplot tool in the Map display toolbar. Just select two raster layer and select the tool. You can further tweak the graph using the plot and text settings, and export it as png image or print it. Note that if you print it to file, you’ll get a PS (postscript) file, which you can further edit in e.g., Inkscape.

Click on image to enlarge /  open in slide-show

Below you see the scatterplots of Worldclim versus TAMSAT, Worldclim versus CHIRPS and TAMSAT versus CHIRPS (click on images to enlarge). They illustrate that there are large discrepancies in the estimated mean annual rainfall, and a R2 are between 0.73 and 0.8.

Click on image to enlarge /  open in slide-show

Another convenient tool, available from the toolbar in the Map display toolbar, is the profile analysis tool. With this tool you can display the values of one or more raster layers along a line which you can draw on the map canvas. This is particularly handy to see how two or more maps differ.

Click on image to enlarge /  open in slide-show

Below you can see the rainfall values along a transect I drew across the Kenyan highlands. The peaks in the graph are where the transect crosses Mount Kenya, the Aberdares and the Mau forest complex. The blue, red and green lines give the values of respectively the Worldclim, TAMSAT and CHIRPS dataset. The rainfall profile of TAMSAT suggests there is not much differences in annual rainfall between the mountain tops and the lowlands in between. The Worldclim and CHIRPS profiles are more alike, but with the Worldclim providing considerably higher estimates for the mountain peaks then CHIRPS.

Kenyan highlands
Mean annual rainfall values along a transect across the Kenyan highlands

It would be good to find out more about the differences between the Worldclim and CHIRPS estimates. For example, are these differences all due to data errors (in one or both data layers) or was the period 1983 – 2012 in fact drier than the 1950 – 2000 period? But that is a question I might get into later. For now it seems clear, to me at least, that the TAMSAT data has some issues, especially for the Kenyan highlands, suggesting it to be unsuitable for use in ecological or biogeographic studies in east Africa.


  • Funk, Chris, Pete Peterson, Martin Landsfeld, Diego Pedreros, James Verdin, Shraddhanand Shukla, Gregory Husak, James Rowland, Laura Harrison, Andrew Hoell & Joel Michaelsen. The climate hazards infrared precipitation with stations—a new environmental record for monitoring extremes. Scientific Data 2, 150066.
  • Hijmans, R.J., S.E. Cameron, J.L. Parra, P.G. Jones and A. Jarvis, 2005. Very high resolution interpolated climate surfaces for global land areas. International Journal of Climatology 25: 1965-1978.
  • Maidment, R., D. Grimes, R.P.Allan, E. Tarnavsky, M. Stringer, T. Hewison, R. Roebeling and E. Black (2014) The 30 year TAMSAT African Rainfall Climatology And Time series (TARCAT) data set. Journal of Geophysical Research 119 (18), 10,619–10,644.
  • Platts PJ, Omeny PA, Marchant R (2015). AFRICLIM: high-resolution climate projections for ecological applications in Africa. African Journal of Ecology 53, 103-108.


Use R to get gbif data into a GRASS database



The Global Biodiversity Information Facility (GBIF) is an international open data infrastructure that allows anyone, anywhere to access data about all types of life on Earth, shared across national boundaries via the Internet. GBIF provides a single point of access through http://www.gbif.org/ to species records shared freely by hundreds of institutions worldwide. The data accessible through GBIF relate to evidence about more than 1.6 million species, collected over three centuries of natural history exploration and including current observations from citizen scientists, researchers and automated monitoring programs.

There are various ways to import GBIF data, including directly from the website as comma delimited file (csv) and using the v.in.gbif addon for GRASS (I’ll post an example using this addon at a later stage). Here, however, I’ll use the rgbif package for R to obtain the data. In the link section some tutorials are listed that illustrate the use of other R packages. Continue reading “Use R to get gbif data into a GRASS database”

VIF stepwise variable selection


In modelling, multicollinearity in the set of predictor variables is a potential problem. One way to detect multicollinearity is the variance inflation factor analysis (VIF). In GRASS GIS, the VIF for a set of variables can be computed using the r.vif addon. This addon furthermore let’s you select a subset of variables using a stepwise variable selection procedure, in which variables are removed till the highest VIF values is less than a user-defined threshold value. In this post I introduce the addon and provide some examples how to use the addon. Continue reading “VIF stepwise variable selection”

Sample raster values at point location in QGIS – yet another way

A while back I wrote how one can sample raster values at point locations in QGIS using the Saga function ‘Add grid values to point’, which is available in the processing toolbox. Recently it was reported here that values uploaded from a floating raster layer are rounded up to an integer. I tried it myself in Saga, and it seems to work fine for me. But if you are running in problems with a function, it is good to remember that in QGIS you have have access to many libraries from multiple software tools. This means there are often more than one way to get things done.

And indeed, the processing toolbox offers another tool to sample raster values at point location; the GRASS GIS v.what.rast.points function. In this post I describe how to use this tool directly in GRASS, but you can use the tool in QGIS as well, as illustrated below. Continue reading “Sample raster values at point location in QGIS – yet another way”

Update of r.forestfrag addon

I just updated the r.forestfrag addon for GRASS GIS. The addon, which I described before, was developed based on an script by Sylla consult,  and can be used to characterizes the degree of fragmentation following the approach proposed by Riiters et al. (2000). It identifies six categories of fragmentation, viz., interior, perforated, edge, transitional, patch, and undetermined, based on the amount of forest and its occurrence as adjacent forest pixels within a user-defined distance (i.e., the user sets the size of moving window used to compute the index).  Continue reading “Update of r.forestfrag addon”

QGIS 2.14 ‘Essen’ has been released

The QGIS development team has released version 2.14 of QGIS. This is a special release since it is designated an ‘LTR’ (Long Term Release), which means it will be supported with back ported bug fixes for one year.

This new version has a host of new features and improvements. See the visual changelog for a nice overview and head over to the QGIS home page to get your copy (it may not yet be available for all platforms. If not, revisit the page in a few days).

As a very happy user of QGIS, I would like to express my sincere thanks to the developers for their hard work, and to the sponsors (listed on the page with visual change log in case you are interested who has made this new version possible).