New release RQGIS

From an announcement from the QGIS mailing list: RQGIS has released a new version of RQGIS! RQGIS establishes an interface between R and QGIS, i.e. it allows the user to access the QGIS geoalgorithms from within R. With the new release, it is possible to run the most recent QGIS releases (>=2.18.2) with RQGIS.

RQGIS establishes an interface between R and QGIS, i.e. it allows the user to access QGIS functionalities from within R. It thus serves a similar goal as rgrass7 which provides an interface between R and GRASS GIS and rsaga, which provides access to geocomputing and terrain analysis functions of SAGA GIS from within R.

RQGIS provides access to all functions available through QGIS’s processing framework, which includes among others GRASS GIS and SAGA GIS (others are GDAL, the Orfeo Toolbox, TauDEM and tools for LiDAR data). Thus, RQGIS RQGIS offers an (partial) replacement of rgrass7 and rsaga packages. However, note that the latter two packages offer various other advantages.

I personally find rgrass7 and rsaga great tools that allow easy access to respectively GRASS and SAGA. I have less experience with RQGIS, but I can already tell that what I particularly like about RQGIS is that it makes it easier to combined different tools in an unified interface (which is of course the same reason I like the processing toolbox in QGIS). Take for example the find_algorithms function. This allows you to search for algorithms across all available toolboxes using keywords, similar to the search box in the processing toolbox in QGIS itself. I will certainly explore this package more!

You can find more information on the github page https://github.com/jannes-m/RQGIS, including installation instructions and some use examples. See also the blog post of one of the RQGIS authors.

 

 

 

 

 

 

A new search engine to search the R documentation

Just to quickly share this great new website where you can search the documentation of all R packages and functions available on CRAN (6688 R packages and 136342 R functions at the moment of writing!). It offers instant or advanced search options in an easy interface, and there is even a package that allows you to use the search functionality from within R. Check it out on http://www.rdocumentation.org/.

Import GRASS function console output as data.frame in R

In R you can use system calls or the spgrass6 package to run GRASS GIS functions. To do this, you need to run R from within GRASS GIS. This is as simple as starting GRASS GIS and subsequently starting R from the command line. See the GRASS-wiki for a more detailed background.

The issue at hand
One of the user-cases is when you want to (1) run a GRASS function on e.g., a raster layer and (2) capture the console output in a R data frame. For example, you can run the following in R:

MyVariables <- execGRASS("r.stats", flags="c", input="MyMap", separator=",", intern=TRUE)

However, the output is not in a very convenient format. Continue reading “Import GRASS function console output as data.frame in R”

Calculating the raster cell area of an unprojected raster layer

What if you get a raster layer with number of people per raster cell, like for example the population layer from Afripop,  and you want to convert it to a population density layer?

Well, obviously, you need to divide the number of people by the surface area of the raster cells. However, the surface area of the raster cells of an unprojected (lat/lon) are not constant; they decrease with increasing latitude. So what you need is a raster layer with the surface areas of the cells.

I thought I had seen a function in GRASS GIS to do this, but that might have been a typical case of the wish being the father to the thought. But anyway, it isn’t terribly difficult to calculate it yourself using the map calculator. Continue reading “Calculating the raster cell area of an unprojected raster layer”

Multivariate Environmental Similarity Surfaces (MESS) index in GRASS GIS

The Multivariate Environmental Similarity Surfaces (MESS) is an index that represents how similar a point in space is to a reference set of points, with respect to a set of predictor variables (Elith et al 2010). The function was first implemented as part of the Maxent software package, and is also available in the dismo package for R (see also here and here).

The latter works well on small and medium sized data sets. However, they take a long time to run on larger data sets, e.g., when working with 1km² raster grids covering eastern Africa. I therefore wrote a small R script to compute MESS in GRASS GIS. Continue reading “Multivariate Environmental Similarity Surfaces (MESS) index in GRASS GIS”

Reading GRASS GIS vector attribute tables into R

Linking GRASS GIS and R will give you a very powerful set of geo-spatial analytical tools. The spgrass6 offers a very convenient interface between GRASS GIS and R. You can read more about this package in Bivand, R. 2007. Using the R-GRASS interface. OSGeo Journal 1, 36-38.

Read the whole vector layer
It allows you amongst others to easily import vector data layers from GRASS GIS into R using the function readVECT6(). This will import the whole vector layer. But what if you you only need to import the attribute table? Importing the whole vector layer would give unnecessarily overhead and would take (much) longer to import. Continue reading “Reading GRASS GIS vector attribute tables into R”

A faster way to calculate MESS in R – or – a tribute to Stack overflow

Jean-Pierre Rossi introduced a function to calculate the “Multivariate Environmental Similarity Surfaces” in R. Since then, the function has become part of the dismo package, which is a package maintained by Robert J. Hijmans and which offers a whole lot of functions for species distribution modelling.

The function calculates the MESS based on a point layer (the reference points) and a set of raster layers (the environmental data layers). It works great for smaller data sets, but you may run into trouble for very large data sets. So I needed to find a way to run this faster. And… I couldn’t. It is already a pretty neat piece of code, and I could not think of a better way of doing this in R. (I am working on For an alternative to do this in GRASS, but more about that later: see here).

That is where I decided to try my luck on Stack Overflow. Continue reading “A faster way to calculate MESS in R – or – a tribute to Stack overflow”