R statistics
High quality statistic analysis in GRASS GIS is possible thanks to an interface to the most powerful statistics analysis package around: R (http://www.r-project.org).
There is support for:
- The spgrass6 R addon package provides a convenient R ←→ GRASS GIS 6 interface
- The rgrass7 R addon package provides a convenient R ←→ GRASS GIS 7 interface
Using R in GRASS GIS directly can has two meanings:
- The first is that R is run "on top of" GRASS, transferring GRASS data to R to run statistical functions on the imported data as R objects in memory, and possibly transfer the results back to GRASS.
- The second is to leave the data mostly in GRASS, and to use R as a scripting language "on top of" GRASS with execGRASS() - in this case, little data is moved to R, so memory constraints are not important, but R functionality is available.
Overview
Installation
Command help
Start the R help browser:
help.start()
- GRASS GIS 6: Select the Packages entry and then spgrass6.
- GRASS GIS 7: Select the Packages entry and then rgrass7.
Using R within a GRASS GIS session
- GRASS GIS 6: See R_statistics/spgrass6
- GRASS GIS 7: See R_statistics/rgrass7
Using GRASS GIS functionality within a R session
To call GRASS functionality from R, use the initGRASS() function to define the GRASS settings:
library(spgrass6) # initialisation and the use of spearfish60 data initGRASS(gisBase = "/usr/local/grass-6.4.1", home = tempdir(), gisDbase = "/home/neteler/grassdata/", location = "spearfish60", mapset = "user1", SG="elevation.dem", override = TRUE) system("g.region -d") # verify gmeta6() spear <- readRAST6(c("geology", "elevation.dem"), cat=c(TRUE, FALSE), ignore.stderr=TRUE, plugin=NULL) summary(spear$geology)
Run this script with
R CMD BATCH batch.R
The result is (shorted here):
cat batch.Rout R version 2.10.0 (2009-10-26) Copyright (C) 2009 The R Foundation for Statistical Computing ISBN 3-900051-07-0 ... > library(spgrass6) Loading required package: sp Loading required package: rgdal Geospatial Data Abstraction Library extensions to R successfully loaded Loaded GDAL runtime: GDAL 1.7.2, released 2010/04/23 Path to GDAL shared files: /usr/local/share/gdal Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009 Path to PROJ.4 shared files: (autodetected) Loading required package: XML GRASS GIS interface loaded with GRASS version: (GRASS not running) > > # initialisation and the use of spearfish60 data > initGRASS(gisBase = "/usr/local/grass-6.4.1", home = tempdir(), gisDbase = "/home/neteler/grassdata/", + location = "spearfish60", mapset = "user1", SG="elevation.dem", override = TRUE) gisdbase /home/neteler/grassdata/ location spearfish60 mapset user1 rows 477 columns 634 north 4928010 south 4913700 west 589980 east 609000 nsres 30 ewres 30 projection +proj=utm +zone=13 +a=6378206.4 +rf=294.9786982 +no_defs +nadgrids=/usr/local/grass-6.4.1/etc/nad/conus +to_meter=1.0 Warning messages: 1: In dir.create(gisDbase) : '/home/neteler/grassdata' already exists 2: In dir.create(loc_path) : '/home/neteler/grassdata//spearfish60' already exists > > system("g.region -d") > # verify > gmeta6() gisdbase /home/neteler/grassdata/ location spearfish60 mapset user1 rows 477 columns 634 north 4928010 ... > > spear <- readRAST6(c("geology", "elevation.dem"), + cat=c(TRUE, FALSE), ignore.stderr=TRUE, + plugin=NULL) > > summary(spear$geology) metamorphic transition igneous sandstone limestone shale 11693 142 36534 74959 61355 46423 sandy shale claysand sand NA's 11266 14535 36561 8950 > > > proc.time() user system elapsed 2.891 0.492 3.412
Getting Support
- Primary support for R + GRASS and the spgrass6 package is through the grass-stats mailing list.
See also
- R. Bivand, 2007: Interfacing R and OSGeo projects: status and perspectives (Presentation with slides and scripts)
- Using GRASS and R: http://grassold.osgeo.org/statsgrass/grass6_r_interface.html
- Connecting R to RDBMS: http://grassold.osgeo.org/statsgrass/r_and_dbms.html
- Neural Networks with GRASS and R (posted by Markus Neteler on the grass-user mailing list) http://www.uam.es/proyectosinv/Mclim/pdf/MBenito_EcoMod.pdf
- A detailed example on the use of GRASS and R, with spearfish data: http://casoilresource.lawr.ucdavis.edu/drupal/node/438
- Using R and GRASS with cygwin: It is possible to use Rterm inside the GRASS shell in cygwin, just as in Unix/Linux or OSX. You should not, however, start Rterm from a cygwin xterm, because Rterm is not expecting to be run in an xterm under Windows, and loses its input. If you use the regular cygwin bash shell, but need to start display windows, start X from within GRASS with startx &, and then start Rterm in the same cygwin shell, not in the xterm.
- Spatial data in R (
sp
) is a R library that provides classes and methods for spatial data (points, lines, polygons, grids), and to new or existing spatial statistics R packages that use sp, depend on sp, or will become dependent onsp
, such asmaptools
,rgdal
,splancs
,spgrass6
,gstat
,spgwr
and many others.
- RPy - Python interface to the R Programming Language
Open tickets
- Ticket trac #1103 (new enhancement) WinGrass64 - windows-commandline not released: a Grass-session with wxGui, command-line and R inside a Grass-session would be possible (as already does in WinGrass7)
Workshop material
- M. Neteler and M. Metz, 2011: Introduction to GRASS GIS. GEOSTAT 2011 Landau. Download workshop material (includes a R session)
Articles
- GRASS News vol.3, June 2005 (R. Bivand. Interfacing GRASS 6 and R. GRASS Newsletter, 3:11-16, June 2005. ISSN 1614-8746).
- OSGeo Journal vol. 1 May 2007 (R. Bivand. Using the R— GRASS interface. OSGeo Journal, 1:31-33, May 2007. ISSN 1614-8746).
- GRASS Book, last chapter