Releasing RQGIS 0.2.0

Today we are happy to announce a new version of RQGIS! RQGIS establishes an interface between R and QGIS, i.e. it allows the user to access the more than 1000 QGIS geoalgorithms from within R. The most important news is that you can run again the most recent QGIS releases (>=2.18.2) with RQGIS without having to modify Python source code. This modification became necessary due to a bug introduced in QGIS 2.16 (see here).

r_qgis_puzzle

This release also fixes several bugs which we detected thanks to user feedback. Please refer to the release news for more detailed information.

Before running RQGIS, you need to install third-party software. To guide you through the installation process of QGIS, GRASS and SAGA on various platforms, we wrote a package vignette. To install RQGIS and to access the vignette, please run:

install.packages("RQGIS")
vignette("install_guide", package = "RQGIS")

For more information on RQGIS and examples how to use RQGIS, please refer to its github page and my blog.

Spring school on Statistical analysis of hyperspectral and high-dimensional remote-sensing data

healthy_forest

We are happy to announce the MSCJ-LIFE spring school on Statistical analysis of hyperspectral and high-dimensional remote-sensing data. The spring school will take place in Jena (Germany) at the GIScience department of the Friedrich-Schiller University on March 13-17 2017. We invite participants from a wide range of disciplines interested in high-dimensional (geo-)data manipulation, viszualization and analysis mainly using R. International experts will provide a mixture of theory and hands-on sessions. Here you can find more information about the training school as well as the program. The deadline for applicants is January 31st 2017 (late applications accepted if places remain). Please apply through this link. We would be grateful if you distributed this information to all people potentially interested in this spring school, and are looking forward to welcoming you in Jena this spring!

RQGIS 0.1.0 release

We proudly announce the release of RQGIS! RQGIS establishes an interface between R and QGIS, i.e. it allows the user to access the more than 1000 QGIS geoalgorithms from within R. To install it, run:

install.packages("RQGIS")

Naturally, you need to install other software (such as QGIS) to run RQGIS properly. Therefore, we wrote a package vignette, which guides you through the installation process of QGIS, GRASS and SAGA on various platforms. To access it, run:

vignette("install_guide", package = "RQGIS")

How to use RQGIS

To introduce RQGIS, we will demonstrate how to calculate the SAGA topographic wetness index. The first step is the creation of a QGIS environment. This is a list containing the paths RQGIS needs to access QGIS. Luckily for us, set_env does this for us. We merely need to specify the root path to the QGIS installation. This is most likely something like C:/OSGeo4W~1 on Windows, /usr on Linux and /usr/local/Cellar on a Mac. If we do not specify a path to the QGIS root folder, set_env tries to figure it out. This, however, might be time-consuming depending on the size of the drives to search.

library("RQGIS")
env <- set_env()

Secondly, we need to find out the name of the function in QGIS which calculates the wetness index:

find_algorithms("wetness index", name_only = TRUE, qgis_env = env)
## [1] "taudem:topographicwetnessindex"  "saga:sagawetnessindex"          
## [3] "saga:topographicwetnessindextwi" ""

There are three algorithms containing the words wetness and index in their short description. Here, we choose saga:sagawetnessindex. To retrieve the corresponding function arguments, we use get_args_man. By setting option to TRUE, we indicate that we would like to use the default values, if available:

args <- get_args_man(alg = "saga:sagawetnessindex", 
                     options = TRUE,
                     qgis_env = env)
# print the retrieved list
args
## $DEM
## [1] "None"
## 
## $SUCTION
## [1] "10.0"
## 
## $AREA_TYPE
## [1] "0"
## 
## $SLOPE_TYPE
## [1] "0"
## 
## $SLOPE_MIN
## [1] "0.0"
## 
## $SLOPE_OFF
## [1] "0.1"
## 
## $SLOPE_WEIGHT
## [1] "1.0"
## 
## $AREA
## [1] "None"
## 
## $SLOPE
## [1] "None"
## 
## $AREA_MOD
## [1] "None"
## 
## $TWI
## [1] "None"

Of course, we need to specify certain function arguments such as the input (DEM) and output (TWI) arguments. Please note that RQGIS accepts as input argument either the path to a spatial object or a spatial object residing in R. Here, we will use a digital elevation model, which comes with the RQGIS package:

# load data into R
data("dem", package = "RQGIS")
# define input
args$DEM <- dem
# specify output path
args$TWI <- "twi.sdat"

Finally, we can access QGIS from within R by supplying run_qgis with the specified arguments as a list. Specifying also the load_output-argument directly loads the QGIS output into R.

twi <- run_qgis(alg = "saga:sagawetnessindex", 
                params = args, 
                load_output = args$TWI, 
                qgis_env = env)

# visualize the result
library("raster")
hs <- hillShade(terrain(dem), terrain(dem, "aspect"), 40, 270)
pal <- RColorBrewer::brewer.pal(6, "Blues")
spplot(twi, col.regions = pal, alpha.regions = 0.8,
       scales = list(tck = c(1, 0)),               
       colorkey = list(space = "bottom",
                               width = 1, height = 0.5,
                       axis.line = list(col = "black")),
       cuts = length(pal) - 1) +
  latticeExtra::as.layer(spplot(hs, col.regions = gray(0:100 / 100)), 
                         under = TRUE)

 

twi

For more information on RQGIS, please refer to https://github.com/jannes-m/RQGIS.

 

 

Creating inset maps using spatial objects

RQGIS – integrating R with QGIS

Kurt Menge recently explained in his post how it is possible to use R from within QGIS – the leading and open-software Desktop GIS. This is great but to access the geoalgorithms provided by QGIS you would still have to use Python or the QGIS GUI. So it would come in quite handy, if one could access QGIS geoalgorithms from within R. And that’s exactly what the RQGIS package is doing. This opens up a whole new world of (geo-)statistical geocomputing.

r_qgis_puzzle

The most notable features of RQGIS are:

  • RQGIS accesses the Python QGIS API but R users can stay in the familiar R programming environment without having to touch Python.
  • For the first time, you can access native QGIS algorithms from within R.
  • QGIS itself integrates many third-party providers. Among these are GDAL, SAGA GIS, GRASS GIS and many more. RQGIS brings you this incredibly resourceful geoprocessing environment to the R console. Though it is a big advantage to be able to access SAGA and GRASS functions using only one package (RQGIS), RSAGA and rgrass7 (spgrass6) are still useful (and great packages by the way). For instance, not all SAGA and GRASS functions are available in QGIS.
  • RQGIS offers convenience functions. For example, get_args_man mimics the behavior of the QGIS GUI by automatically retrieving all function arguments and corresponding default values for a given function. This makes the usage of RQGIS frequently more user-friendly compared to RSAGA and rgrass7 (spgrass6). But that is just my opinion and you are more than welcome to check it out.
  • The second convenience function open_help lets the user access the QGIS online help for a specified geoalgorithm. Bar a few exceptions, this already works for all GRASS, QGIS and SAGA functions.

In the last few weeks we have been testing the package (though with a strong focus on GRASS, QGIS and SAGA functionalities). Within the next six weeks, we would like to put RQGIS on CRAN. Until then the R(-GIS) community is more than welcome to install the developer version. On https://github.com/jannes-m/RQGIS you will find a quick tour how to install and use RQGIS. We would appreciate any feedback, and of course you are welcome to contribute to our package.