R statistics: Difference between revisions
(Added links to examples) |
Veroandreo (talk | contribs) mNo edit summary |
||
(13 intermediate revisions by 4 users not shown) | |||
Line 3: | Line 3: | ||
=== Overview === | === Overview === | ||
High quality | High quality statistical analyses in GRASS GIS are possible thanks to an interface to one of the most powerful statistical analysis packages around: '''''R''''' ([http://www.r-project.org/ https://www.r-project.org]). This R ←→ GRASS GIS interface is provided by the [https://cran.r-project.org/package=rgrass rgrass] ''R'' package. The possibility to directly interact with R strongly increases the statistical and geospatial analysis capabilities of GRASS GIS. See [https://cran.r-project.org/web/views/Spatial.html CRAN Task View: Analysis of Spatial Data] for an overview of the R packages and functions that can be used for reading, visualizing, and analyzing spatial data. | ||
R can be used in | R can be used in combination with GRASS GIS in different ways: | ||
* ''Running R 'on top of' GRASS'' | * ''Running R 'on top of' GRASS'': which involves transferring GRASS data to R to run statistical functions on the imported data, and possibly write the results back to GRASS. GRASS raster and vector data can be imported in R using the [https://search.r-project.org/CRAN/refmans/rgrass/html/readVECT.html read_VECT()] and [https://search.r-project.org/CRAN/refmans/rgrass/html/readRAST.html read_RAST()] functions provided by [http://cran.r-project.org/web/packages/rgrass/ rgrass]. Similarly, results can be written back using the [https://search.r-project.org/CRAN/refmans/rgrass/html/readRAST.html write_RAST()] and [https://search.r-project.org/CRAN/refmans/rgrass/html/readVECT.html write_VECT()] functions. When we read GRASS maps into R, they become R objects stored in memory, more specifically terra objects, i.e., SpatRaster and SpatVector objects that can then be coerced to other types of R spatial objects. | ||
* ''Using R as a scripting language in GRASS'' | * ''Using R as a scripting language in GRASS'': GRASS functions can be run from R using the [https://search.r-project.org/CRAN/refmans/rgrass/html/execGRASS.html execGRASS()] function in the ''rgrass'' package. R scripting tools, such as powerful string-processing tools, can be used to 'glue' different functions and tools together. | ||
* ''Using GRASS GIS as a geospatial library in R'' | * ''Using GRASS GIS as a geospatial library in R'': GRASS GIS can be used to extend the geospatial capabilities of R by: (1) offering an extensive and robust set of geospatial tools, and (2) providing a way to work with very large (larger-than-memory) spatial data sets. See Using 'GRASS GIS functionality within an R session' below for more information. | ||
In practice, one will often combine different approaches, with scripts running GRASS functions, | In practice, one will often combine different approaches, with scripts running GRASS functions, reading resulting maps into R for further analysis, modeling and visualization, and creating new layers in R that are imported back into GRASS. | ||
=== Current State === | |||
R Windows binary packages distributed by the Comprehensive R Archive Network (CRAN) using OSGeo software (chiefly PROJ, GDAL and GEOS) use custom built binaries compatible with the build train used by R and are static linked; at present both 32-bit and 64-bit binaries are deployed. CRAN packages for macOS are also static linked to custom built binaries, again using the build train used by R. Static linkage is used to avoid having to deploy a package manager for external software on which R packages depend, since CRAN as a package manager already supports over 15000 packages with three binary versions (devel, release, old release) for Windows and macOS. | |||
=== Installation === | === Installation === | ||
To install the R | ==== Installation of R core software ==== | ||
(see also [[R statistics/Installation]]) | |||
''Note: the ...-devel packages are needed if you want to install extra packages incl. '''rgrass''' on your computer.'' | |||
Fedora: | |||
sudo dnf install R | |||
# further packages needed in order to locally compile "rgrass" | |||
sudo dnf install proj-devel proj-data gdal-devel sqlite-devel xml2 libxml2-devel udunits2-devel | |||
Ubuntu: | |||
sudo apt-get install r-base | |||
# further packages needed in order to locally compile "rgrass" | |||
sudo apt-get install proj-bin proj-data libproj-dev libgdal-dev libsqlite3-dev libxml2-dev r-base-dev | |||
==== Installation of the rgrass package ==== | |||
To install the R package '''rgrass''' on newer versions of R, you simply start R and install the package directly with: | |||
<source lang="rsplus"> | <source lang="rsplus"> | ||
install.packages(" | install.packages("rgrass", dependencies = TRUE) | ||
</source> | </source> | ||
This will install ''''' | This will install '''''rgrass''''' and all its dependencies. To use the package, you first need to load it: | ||
<source lang="rsplus"> | <source lang="rsplus"> | ||
library( | library(rgrass) | ||
</source> | </source> | ||
If you are using Rstudio, you can install the | If you are using Rstudio, you can install the rgrass package in the usual way (tool → packages). For further instructions and for troubleshooting, see [[R_statistics/Installation]]. | ||
=== How to use === | === How to use === | ||
==== Using R within a GRASS GIS session ==== | ==== Using R within a GRASS GIS session ==== | ||
If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see [[R_statistics/ | If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see [[R_statistics/rgrass]]. | ||
==== Using GRASS GIS functionality within | ==== Using GRASS GIS functionality within an R session ==== | ||
If you are primarily | If you are primarily an R user who wants to take advantage of the geospatial functions in GRASS, you probably want to use GRASS GIS within an R session. To connect to a GRASS GIS database from within R (or Rstudio), see the instructions on [[R_statistics/rgrass]]. If you are a first time GRASS GIS user, you may want to check out the information for [https://grass.osgeo.org/learn/newcomers/ first time users]. | ||
=== Examples === | === Examples === | ||
* [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/GRASS_R_raster_time_series_processing | * [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/GRASS_R_raster_time_series_processing Temporal data processing wiki]; a tutorial about time series processing with GRASS GIS and R. | ||
* | * A short guide on how to [https://tutorials.ecodiv.earth/toc/from_grass_to_r.html get a GRASS function output in R]. | ||
* [https://tutorials.ecodiv.earth/toc/grass-import-glcf.html Importing GLCF MODIS woody plant cover] in a GRASS GIS database using | * [https://tutorials.ecodiv.earth/toc/grass-import-glcf.html Importing GLCF MODIS woody plant cover] in a GRASS GIS database using an R script. | ||
* [https://tutorials.ecodiv.earth/toc/grass-r-gbif.html Use R to obtain gbif data] and import it in a GRASS GIS database. | * [https://tutorials.ecodiv.earth/toc/grass-r-gbif.html Use R to obtain gbif data] and import it in a GRASS GIS database. | ||
* [https://veroandreo.github.io/grass_ncsu_2023/studio_index.html Using Satellite Data for Species Distribution Modeling with GRASS GIS and R]: Workshop at NCSU, April 2023. | |||
=== Getting help === | === Getting help === | ||
==== Manual pages ==== | ==== Manual pages ==== | ||
If you are in R and have loaded the | If you are in R and have loaded the rgrass package, you can get help by typing: | ||
<source lang="rsplus"> | <source lang="rsplus"> | ||
? | ?rgrass | ||
</source> | </source> | ||
Similarly, to get help for a specific function, e.g., for the function '' | Similarly, to get help for a specific function, e.g., for the function ''read_RAST()'', you type: | ||
<source lang="rsplus"> | <source lang="rsplus"> | ||
? | ?read_RAST | ||
</source> | </source> | ||
Line 69: | Line 89: | ||
</source> | </source> | ||
Now, to get the information about the package, select the '''Packages''' entry and then ''' | Now, to get the information about the package, select the '''Packages''' entry and then '''rgrass'''. | ||
==== Support from the community ==== | ==== Support from the community ==== | ||
Primary support for ''R'' + GRASS and the '' | Primary support for ''R'' + GRASS and the ''rgrass'' package is through the [https://lists.osgeo.org/mailman/listinfo/grass-stats grass-stats] mailing list. | ||
=== Useful links === | === Useful links === | ||
Line 79: | Line 99: | ||
==== R ==== | ==== R ==== | ||
* [ | * [https://r-spatial.org/ R][https://r-spatial.org/ r-spatial main web page] | ||
* [https://cran.r-project.org/web/views/Spatial.html CRAN Task View: Analysis of Spatial Data] | * [https://cran.r-project.org/web/views/Spatial.html CRAN Task View: Analysis of Spatial Data] | ||
* [https://cengel.github.io/rspatial/2_spDataTypes.nb.html Introduction to Spatial Data Types in R] | * [https://cengel.github.io/rspatial/2_spDataTypes.nb.html Introduction to Spatial Data Types in R] | ||
* [https://blog.dominodatalab.com/applied-spatial-data-science-with-r/ Applied Spatial Data Science with R] (blog post with examples) | * [https://blog.dominodatalab.com/applied-spatial-data-science-with-r/ Applied Spatial Data Science with R] (blog post with examples) | ||
* [https://rsbivand.github.io/rgrass/articles/coerce.html Coercion between object formats] (rgrass vignette) | |||
* [https://rsbivand.github.io/rgrass/articles/use.html Use of GRASS interface] (rgrass vignette) | |||
* [https://rsbivand.github.io/foss4g_2022/modernizing_220822.html Modernizing the R-GRASS interface: confronting barn-raised OSGeo libraries and the evolving R.*spatial package ecosystem] (Workshop at FOSS4G 2022, Florence) | |||
==== Related ==== | ==== Related ==== | ||
Line 94: | Line 115: | ||
* Neural Networks with GRASS and R [https://dx.doi.org/10.1016/j.ecolmodel.2006.03.015 DOI: 10.1016/j.ecolmodel.2006.03.015] | * Neural Networks with GRASS and R [https://dx.doi.org/10.1016/j.ecolmodel.2006.03.015 DOI: 10.1016/j.ecolmodel.2006.03.015] | ||
* [http://www.asdar-book.org/ Applied Spatial Data Analysis with R]. Roger S. Bivand, Edzer Pebesma and V. Gómez-Rubio. UseR! Series, Springer. 2nd ed. 2013, xviii+405 pp., Softcover. ISBN: 978-1-4614-7617-7 | * [http://www.asdar-book.org/ Applied Spatial Data Analysis with R]. Roger S. Bivand, Edzer Pebesma and V. Gómez-Rubio. UseR! Series, Springer. 2nd ed. 2013, xviii+405 pp., Softcover. ISBN: 978-1-4614-7617-7 | ||
* [ | * [https://www.grassbook.org/ GRASS Book], see last chapter | ||
* [ | * [https://www.osgeo.org/journal OSGeo Journal] vol. 1 May 2007 (R. Bivand. Using the R— GRASS interface. ''OSGeo Journal'', 1:31-33, May 2007. ISSN 1614-8746). | ||
* [ | * [https://grass.osgeo.org/newsletter/grassnews3.html GRASS News vol.3], June 2005 (R. Bivand. Interfacing GRASS 6 and R. ''GRASS Newsletter'', 3:11-16, June 2005. ISSN 1614-8746) | ||
==== Older (but still useful) links ==== | ==== Older (but still useful) links ==== | ||
Line 104: | Line 125: | ||
* R. Bivand, 2007: [http://spatial.nhh.no/R/etc/FBK07 Interfacing R and OSGeo projects: status and perspectives]: Presentation with slides and scripts. | * R. Bivand, 2007: [http://spatial.nhh.no/R/etc/FBK07 Interfacing R and OSGeo projects: status and perspectives]: Presentation with slides and scripts. | ||
* M. Neteler and M. Metz, 2011: ''Introduction to GRASS GIS''. GEOSTAT 2011 Landau. [http://geostat-course.org/Topic_NetelerMetz_2011 Download workshop material] (includes a R session) | * M. Neteler and M. Metz, 2011: ''Introduction to GRASS GIS''. GEOSTAT 2011 Landau. [http://geostat-course.org/Topic_NetelerMetz_2011 Download workshop material] (includes a R session) | ||
[[Category:Installation]] | [[Category:Installation]] |
Latest revision as of 19:58, 19 April 2023
Overview
High quality statistical analyses in GRASS GIS are possible thanks to an interface to one of the most powerful statistical analysis packages around: R (https://www.r-project.org). This R ←→ GRASS GIS interface is provided by the rgrass R package. The possibility to directly interact with R strongly increases the statistical and geospatial analysis capabilities of GRASS GIS. See CRAN Task View: Analysis of Spatial Data for an overview of the R packages and functions that can be used for reading, visualizing, and analyzing spatial data.
R can be used in combination with GRASS GIS in different ways:
- Running R 'on top of' GRASS: which involves transferring GRASS data to R to run statistical functions on the imported data, and possibly write the results back to GRASS. GRASS raster and vector data can be imported in R using the read_VECT() and read_RAST() functions provided by rgrass. Similarly, results can be written back using the write_RAST() and write_VECT() functions. When we read GRASS maps into R, they become R objects stored in memory, more specifically terra objects, i.e., SpatRaster and SpatVector objects that can then be coerced to other types of R spatial objects.
- Using R as a scripting language in GRASS: GRASS functions can be run from R using the execGRASS() function in the rgrass package. R scripting tools, such as powerful string-processing tools, can be used to 'glue' different functions and tools together.
- Using GRASS GIS as a geospatial library in R: GRASS GIS can be used to extend the geospatial capabilities of R by: (1) offering an extensive and robust set of geospatial tools, and (2) providing a way to work with very large (larger-than-memory) spatial data sets. See Using 'GRASS GIS functionality within an R session' below for more information.
In practice, one will often combine different approaches, with scripts running GRASS functions, reading resulting maps into R for further analysis, modeling and visualization, and creating new layers in R that are imported back into GRASS.
Current State
R Windows binary packages distributed by the Comprehensive R Archive Network (CRAN) using OSGeo software (chiefly PROJ, GDAL and GEOS) use custom built binaries compatible with the build train used by R and are static linked; at present both 32-bit and 64-bit binaries are deployed. CRAN packages for macOS are also static linked to custom built binaries, again using the build train used by R. Static linkage is used to avoid having to deploy a package manager for external software on which R packages depend, since CRAN as a package manager already supports over 15000 packages with three binary versions (devel, release, old release) for Windows and macOS.
Installation
Installation of R core software
(see also R statistics/Installation)
Note: the ...-devel packages are needed if you want to install extra packages incl. rgrass on your computer.
Fedora:
sudo dnf install R # further packages needed in order to locally compile "rgrass" sudo dnf install proj-devel proj-data gdal-devel sqlite-devel xml2 libxml2-devel udunits2-devel
Ubuntu:
sudo apt-get install r-base # further packages needed in order to locally compile "rgrass" sudo apt-get install proj-bin proj-data libproj-dev libgdal-dev libsqlite3-dev libxml2-dev r-base-dev
Installation of the rgrass package
To install the R package rgrass on newer versions of R, you simply start R and install the package directly with:
install.packages("rgrass", dependencies = TRUE)
This will install rgrass and all its dependencies. To use the package, you first need to load it:
library(rgrass)
If you are using Rstudio, you can install the rgrass package in the usual way (tool → packages). For further instructions and for troubleshooting, see R_statistics/Installation.
How to use
Using R within a GRASS GIS session
If you are primarily a GIS user who wants to run e.g., some statistical tests not available in GRASS, you probably want to run R from within a GRASS GIS session. To do so, first start GRASS GIS and then start R (or RStudio) from the GRASS GIS command line. For more information and examples, see R_statistics/rgrass.
Using GRASS GIS functionality within an R session
If you are primarily an R user who wants to take advantage of the geospatial functions in GRASS, you probably want to use GRASS GIS within an R session. To connect to a GRASS GIS database from within R (or Rstudio), see the instructions on R_statistics/rgrass. If you are a first time GRASS GIS user, you may want to check out the information for first time users.
Examples
- Temporal data processing wiki; a tutorial about time series processing with GRASS GIS and R.
- A short guide on how to get a GRASS function output in R.
- Importing GLCF MODIS woody plant cover in a GRASS GIS database using an R script.
- Use R to obtain gbif data and import it in a GRASS GIS database.
- Using Satellite Data for Species Distribution Modeling with GRASS GIS and R: Workshop at NCSU, April 2023.
Getting help
Manual pages
If you are in R and have loaded the rgrass package, you can get help by typing:
?rgrass
Similarly, to get help for a specific function, e.g., for the function read_RAST(), you type:
?read_RAST
You can also start the R help page in your browser:
help.start()
Now, to get the information about the package, select the Packages entry and then rgrass.
Support from the community
Primary support for R + GRASS and the rgrass package is through the grass-stats mailing list.
Useful links
R
- Rr-spatial main web page
- CRAN Task View: Analysis of Spatial Data
- Introduction to Spatial Data Types in R
- Applied Spatial Data Science with R (blog post with examples)
- Coercion between object formats (rgrass vignette)
- Use of GRASS interface (rgrass vignette)
- Modernizing the R-GRASS interface: confronting barn-raised OSGeo libraries and the evolving R.*spatial package ecosystem (Workshop at FOSS4G 2022, Florence)
Related
- Python interface to the R Programming Language: can be used to run R in GRASS Python scripts.
Articles & books
- Neural Networks with GRASS and R DOI: 10.1016/j.ecolmodel.2006.03.015
- Applied Spatial Data Analysis with R. Roger S. Bivand, Edzer Pebesma and V. Gómez-Rubio. UseR! Series, Springer. 2nd ed. 2013, xviii+405 pp., Softcover. ISBN: 978-1-4614-7617-7
- GRASS Book, see last chapter
- OSGeo Journal vol. 1 May 2007 (R. Bivand. Using the R— GRASS interface. OSGeo Journal, 1:31-33, May 2007. ISSN 1614-8746).
- GRASS News vol.3, June 2005 (R. Bivand. Interfacing GRASS 6 and R. GRASS Newsletter, 3:11-16, June 2005. ISSN 1614-8746)
Older (but still useful) links
- Using GRASS GIS 6 and R
- Connecting R to RDBMS
- R. Bivand, 2007: Interfacing R and OSGeo projects: status and perspectives: Presentation with slides and scripts.
- M. Neteler and M. Metz, 2011: Introduction to GRASS GIS. GEOSTAT 2011 Landau. Download workshop material (includes a R session)