R est un langage de programmation et un environnement logiciel pour le traitement des données, les calculs statistiques et leurs représentations graphiques. R est disponible pour toutes les plateformes, sous licence gpl (R fait partie du projet GNU - GNU R directory.fsf.org/project/gnur/).
R a déjà été abordé sur le Portail, en conjonction avec GRASS GIS ou avec Python. Je renvoie au premier article pour une présentation générale.
Dans le domaine géospatial, R est utilisé depuis longtemps avec de très nombreux paquets (packages) disponibles. C'est un vaste domaine, avec de nombreux livres et articles publiés dans
de nombreuses revues scientifiques. Un éditeur comme Springer publie d'ailleurs dans sa série « Use R » (www.springer.com/new+%26+forthcoming+titles+%28default%29) un ouvrage de référence « Applied Spatial Data Analysis with R ». On trouve aussi « A Practical Guide to Geostatistical Mapping-Training in R » (spatial-analyst.net/book/download ), « Analysing spatial point patterns in 'R '» (www.csiro.au/resources/Spatial-Point-Patterns-in-R.html, « Analyses des Données écologiques : méthodes Exploratoires et Euclidiennes en sciences de l'Environnement » (pbil.univ-lyon1.fr/ADE-4/) ou « L'analyse de l'utilisation de l'espace par la faune sauvage » rug.mnhn.fr/semin-r/PDF/semin-R_adehabitat_CCalenge_140509.pdf). Des sites comme spatial-analyst.net/wiki/index.php ou www.geomorphometry.org/ illustrent de nombreux exemples, souvent en conjonction avec GRASS GIS, SAGA GIS ou IlWIS GIS (spatial-analyst.net/wiki/index.php). Le site « R Bloggers » (www.r-bloggers.com/) répertorie les articles des blogs utilisant R
Principes d'utilisation de R dans le domaine géospatial
Quand l'utiliser et quand ne pas l'utiliser ?
(basé sur rwiki.sciviews.org/doku.php)
- R sait analyser toutes les données. Il peut donc effectuer toutes les analyses mathématiques, statistiques et spatiales sur les données géospatiales (vecteurs et raster). Il n'y a donc pas besoin d'extensions spécifiques, souvent pas très bon marché...;
- R peut effectuer une grande partie des tâches SIG comme la topologie, l'algèbre sur les rasters etc.;
- R sait communiquer avec des SIG, des bases de données spatiales ou non, ou lire et écrire des fichiers vecteurs comme les shapefiles ou des rasters géoréférencés;
- R sait créer des cartes 2d et 3d très sophistiquées qui peuvent être exportées dans divers formats, bitmap (tiff, JPEG, png ...), vectoriel (EPS, PDF, svg...) ou latex. Ceci d'une manière beaucoup plus pointue que ne le permettent des SIG comme GRASS;
A contrario, R a des problèmes avec:
- la visualisation et l'édition interactives des objets, comme un SIG;
- toutes les tâches spécifiques à un SIG donné;
- une limitation sérieuse est liée à la manière dont R gère la mémoire: il est presque impossible de visualiser et de traiter les cartes raster qui sont supérieurs à 1 à 5 millions de pixels. Ces problèmes peuvent être facilement résolus en combinant R avec des SIG comme GRASS, SAGA, ILWIS ou ArcGIS;
- un autre problème, pour certains, est que R ne s'utilise qu'en ligne de commandes. Certains paquets permettent cependant de le transformer en un logiciel « clik and play » plus convivial (R commander, Rattle ou Deducer).
Utilisation
Rappelons que dans sa version de base, R dispose de tout le nécessaire pour les traitements statistiques classiques et les graphiques. Tout comme Python, ses possibilités se voient considérablement accrues par l'adjonction de très nombreuses librairies (« packages », quasi 2000).
- Pour obtenir les données SIG à traiter, R va utiliser des packages spatiaux. (cran.r-project.org/web/views/Spatial.html). Ceux-ci vont permettre la lecture de fichiers comme les shapefiles, la connexion avec de nombreux SIG, ou la connexion avec des bases de données spatiales, ou non;
- Les données sont traitées dans R avec ses fonctions propres ou celles présentes dans les packages spatiaux;
- Après traitement, il est possible de « renvoyer » les résultats, soit dans un fichier, soit dans un SIG, soit dans une base de données. C'est l'aspect qui a déjà été utilisé sur le Portail (géostatistique) et que nous ne développerons pas ici, car il nous faudrait traiter des cas particuliers (il y a de très nombreux exemples sur le Net);
- R permet aussi d'obtenir une représentation graphique 2d et 3d de ces données. L'utilisation de paquets graphiques spécifiques permet d'améliorer la présentation.
C'est le processus qui est synthétisé dans le graphique suivant:
Nous, nous intéresserons ici à la création de cartes 2d ou 3d plus ou moins simples pour les données SIG. La démarche sera conduite de manière basique, avec le moins de code possible, dans le seul but de montrer les possibilités.
Traitements graphiques
Lorsqu'on aborde l'aspect graphique de R, on est toujours étonné par la facilité de création des figures. Afficher un shapefile ne demande que quelques lignes de code:
base plot
> library(maptools) > geol = readShapeSpatial("cal.shp") > plot(geol) > axis(1);axis(2):bbox()
- 4631 lectures
et le résultat sera:
D'autres paquets permettent les importations d'objets spatiaux:
exemples avec d'autres paquets
# Fichiers library(maptools) #autre possibilité geol <-readShapePoly("cal.shp") library(rgdal) geol = readOGR(dsn=".", layer="cal") library(PBSmapping) geol = importShapefile("cal.shp") library(shapefiles) geol <- read.shapefile("cal") .... # PostGIS geol = readOGR("PG:dbname=test", "cal") [il existe des paquets permettant de se connecter directement à PostgreSQL ou des paquets permettant de se connecter par ODBC mais ils ne gèrent pas la géométrie] # Grass GIS library(spgrass6) G <- gmeta6() geol = readVECT6("cal", ignore.stderr=TRUE, plugin=NULL) [il existe des paquets pour se connecter à ArcGIS ou Oracle mais je ne dispose pas de ces logiciels]
- 3843 lectures
Ensuite, tout est paramétrable, représentations, couleurs (RGB), axes, légendes. je vous présente dans la suite, quelques variations simples avec les mêmes géométries et sans code :
- couleurs, cadre et légende (sans paquet graphique)
- couleurs, cadre et légende (paquet sp)
- couleurs, cadre et légende (paquet ggplot2)
- couleurs, légende, sans cadre (sans paquet graphique)
- comme un SIG, R sait évidemment superposer plusieurs objets spatiaux vectoriels.
- l'objet point est le résultat d'un échantillonnage géochimique, avec des teneurs en ppm de différents éléments. Ceux-ci peuvent être « explorés » graphiquement, sans aucun traitement statistique.
- avec le paquet lattice
- avec les paquets akima et sp
- R permet de représenter quantitativement ces données en 3d, mais elles ne s'y prêtent pas bien, alors j'ai repris celui de la densité de population par état aux États-Unis (paquet lattice)
refait d'après learnr.wordpress.com/2009/07/20/ggplot2-version-of-figures-in-lattice-multivariate-data-visualization-with-r-part-6/
- R sait aussi traiter les données raster et cela a déjà été montré sur le Portail. ( MNT SRTM 3 provenant de GRASS GIS - paquets spgrass6, sp). Les rasters géorérencés peuvent aussi être lus indépendamment par les paquets rgdal et raster.
- en 3d avec le paquet rgl
- R sait aussi créer des cartes de pentes, etc., mais c'est du traitement...
- avec les polygones superposés
- avec les points d'échantillonnage géochimique superposés en bleu (en 3d):
- R permet aussi les changements de projections:
- le paquet RgoogleMaps permet alors d'utiliser les fonds Google Maps comme carte. Il faut une clé Google, gratuite, pour pouvoir l'utiliser (fonds seul, avec le paquet ggplot2, objet spatial sur le fonds, sans paquet)
- teneurs proportionnelles en Fe
- ou en Zn
- pour un exemple complet avec RgoogleMaps, voir l'article de David Kahle qui analyse les statistiques du crime à Houston ( github.com/hadley/ggplot2/wiki/Crime-in-Downtown-Houston,-Texas-%3A-Combining-ggplot2-and-Google-Maps)
- Les données peuvent aussi facilement être exportées en kml (voir spatial-analyst.net/wiki/index.ph)
- avec OpenStreetMap (ou Bing Maps)
Exportation des figures
Exporter toutes ces figures en divers formats bitmap ou vectoriel est aisé:
exportation
# en pdf > pdf("test.pdf",[paramètres éventuels]) > # traitements graphiques > dev.off() # en png > png("test.png",[paramètres éventuels]) > # traitements graphiques > dev.off() etc.
- 4301 lectures
R permet aussi d'animer les graphiques, en GIF animé ou en Flash (paquet animation)
- du plus simple, exemple avec les données géochimiques (package spatstat)
- au plus compliqué, évolution de la déforestation dans une zone d'Amérique centrale (duncanjg.wordpress.com/2008/03/06/deforestation-in-la-sepultura-2/)
Conclusions
Et voilà, j'espère avoir attisé votre curiosité avec des solutions géospatiales « non standards ». Elles montrent, encore une fois, que si l'on est un adepte de l'OpenSource ou qu'on n’a pas les moyens de se payer ArcGIS, MapInfo ou autres, il y a toujours des solutions adéquates. Les performances de celles-ci sont comparables à celles offertes par certaines extensions payantes pour les logiciels SIG, mais elles demandent plus d'efforts que ces solutions « clé en main ». Elles ont l'avantage, à mon avis, de mieux comprendre ce que l’on fait. On constate aussi que les « Grands » du géospatial commencent à s'y intéresser: « Using R in ArcGIS 10 » (resources.arcgis.com/gallery/file/geoprocessing/details). Après Python ou des librairies comme GDAL, de plus en plus utilisés dans le domaine géospatial, au tour de R ?
Soulignons encore une fois que l'utilisation de R dans le domaine géospatial n'est qu'une petite partie des secteurs d'application du logiciel (www.nytimes.com/2009/01/07/technology/business-computing/07program.html, cran.univ-lyon1.fr/index.html, fr.wikipedia.org/wiki/R_%28logiciel%29).
« R is often compared to other statistical packages, with its main "competitor" being SAS. One popular consensus is that R is at par with SAS except in the realm of very large data set »
en.wikipedia.org/wiki/R_%28programming_language%29#Relationship_with_SAS
et tout frais sorti de chez Forbes « Names You Need to Know in 2011: R Data Analysis Software » blogs.forbes.com/smcnally/2010/11/10/names-you-need-to-know-in-2011-r-data-analysis-software/
Tous les traitements ont été effectués sur Mac OS X avec plusieurs versions de R, au fil du temps...
Site officiel : package maptools
Site officiel : package rgdal
Site officiel : package PBSmapping
Site officiel : package shapefile
Site officiel : package sp
Site officiel : package spgrass6
Site officiel : package ggplot2
Site officiel : package rgl
Site officiel : package lattice
Site officiel : package akima
Site officiel : package raster - spatial data
Site officiel : package RgoogleMaps
Site officiel : package animation
Site officiel : package spatstat
Site officiel : package R commander
Site officiel : package Deducer
Site officiel : package Rattle
Autres Liens : Grass Gis, ses amis Python et R, ou la puissance d'un shell pas si "ringard" que ça... (traitement des données, géostatistiques and Co.)
Autres Liens : Grass Gis et R: superposition des couleurs d'un raster quelconque sur un profil topographique élaboré à partir d'un MNT
Autres Liens : Installation d'un serveur WPS sous Windows, avec PyWPS et R
Commentaires
Fragstat avec R
Bonjour,
merci pour ces informations très utiles. Je vous demande si ça existe un package qui permet de faire les analyses similaires de fragstat.
Merci à vous'
Taj
vive la ligne de commande
La preuve qu'Arcgis n'est pas la seule solution à tous nos problèmes, surtout lorqu'on a le "malheur" (pour ESRI) de ne pas être sur Windoze. En tant qu'amateur de la ligne de commandes et du shell Bash, j'apprécie....
Poster un nouveau commentaire