[QGIS + script R] Créer un histogramme circulaire des orientations de sépultures.

Rose des vents, histogramme circulaire, polar plot, rose diagram … a vous de choisir ! Objectif : Nous disposons d’une multitude de sépultures (enfin un shapefile..) pour lesquelles nous avons extrait l’orientation (soit sur le terrain ou dans QGIS grâce a cette méthode http://wp.me/p29w2o-5B ou encore celle là http://wp.me/p29w2o-a4) et nous voulons représenter toutes les orientations sur un même histogramme circulaire. Bandeau rose des vents 1 – R c’est quoi ? C’est un logiciel libre de traitement de données et d’analyse statistique. Tout est dit ! C’est le logiciel indispensable pour tout traitement statistique qui comme QGIS détient toute sa puissance (n’ayons pas peur des mots) de sa communauté d’utilisateurs et des nombreuses bibliothèques (library, l’équivalent des extensions dans QGIS). Pour en savoir plus, consultez: – la page du projet (en anglais) => http://www.r-project.org/ – l’excellent « R pour les statophobes » de denis Poinsot (tant que vous y êtes n’oubliez pas « Statistiques pour les Statophobes » du même auteur et des ses acolytes Giuseppe Parsimoni et Tigran Abonessian 😉 ) Bon, on y va :

  • Téléchargez le logiciel R ici => http://cran.r-project.org/bin/windows/base/
  • Installez le / Ouvrez le
  • Choisissez un site miroir CRAN (un dépôt de bibliothèques pour R), Menu Packages > Choisir le site miroir de CRAN.. (France (Lyon1) par exemple)
  • Installer le Package « Plotrix », Menu Packages > Installer le(s) packages(s)..>sélectionnez Plotrix>[OK]
  • Dans la fenêtre qui vous fait peur (si si avouez-le, c’est pas grave) tapez après le >

library(« plotrix »)

Fermez le logiciel R (n’enregistrez pas la session) 2- Paramétrer la boîte à outils de traitement de QGIS – Ouvrez QGIS (bah oui quand même..) – Pour pouvoir exécuter des scripts R dans la boîte à outils de traitement il faudra la paramétrer dans QGIS . Pas de panique, rien de très difficile, tout se passe dans le Menu Traitement (Processing) > Options > Prestataires de services > Rscripts Options Traitement1) On coche Activate

2) On définit le répertoire contenant les dossiers (bin, doc,…) du logiciel R du genre « C:/Programmes Files/R/R-3.1.1 » (Un copier coller depuis la barre d’adresse de l’explorateur devrait suffire) Note: Il est parait-t’il préférable de mettre le chemin au format MSDOS comme sur l’illustration C:/PROGRA~1/R/R-3.1.1 3) Le répertoire ou seront stockés les scripts est définit par défaut dans « .qgis2\processing\rscripts » et c’est très bien comme cela… – Sélectionnez le répertoire et copier l’adresse dans l’explorateur. Vous pouvez y coller le script (après l’avoir décompressé) téléchargeable ici => Rose des Vents.zip

3) Fermez QGIS – Ouvrez QGIS – Faites 100m à cloche-pied et revenez devant votre ordinateur 😉

4- C’est parti ! – Chargez votre shapefile dont la table attributaire comporte un champ (Numérique) qui contient les orientations en degrés de chaque sépulture. Par exemple : Table Attributaire – Menu Traitement > Toolbox

Note: Si nécessaire, en bas de la fenêtre « boîte de traitement » sélectionnez « Advanced interface » au lieu de « Simplified interface »Arborescence Boite a outils traitement – Développez l’arborescence : Rscripts > @rcheomatic > Rose Des vents (double-clic) Une fenêtre de dialogue s’ouvre : Fenetre_RoseDesVents Dans Layer je choisis mon shapefile sus-cité Dans Orientation je choisis mon champ numérique contenant des valeurs de 0 à 359 Et avec le bouton […] je choisis où enregistrer ma rose des vents (un fichier html et une image en png). Pas obligatoire, à défaut il enregistrera un fichier temporaire. Enfin cliquez sur le bouton [Run] Bon bah c’est tout… et puis si vous n’êtes pas sûr, vous pouvez toujours lire l’onglet [Aide]

Rose des vents

Histogramme circulaire représentant les orientations des sépultures: La grande majorité des sépultures sont orientées Est-Ouest (entre 80 et 100°) avec un maximum de 35 sépultures à 90°.

4- Changer les paramètres ? Vous êtes exaltés au plus haut point du résultat, non ? en même temps vous préféreriez les segments en rose ou mettre les points cardinaux plutôt que les degrés…. Eh bah allez-y ! Vous l’avez bien compris, c’est mon premier script R et si je lai fait c’est bien que ce n’est pas trop difficile, notamment avec la communauté gigantesque qui s’intéresse a ce logiciel, parfois même en français 😉

Mes sources :

Page du package plotrix, fonction polar.plot => http://www.inside-r.org/packages/cran/plotrix/docs/polar.plot

Discussion sur les différentes facon de faire une rose des vents avec R => http://stackoverflow.com/questions/13944133/circular-plot-with-vectors-in-r

Discussion sur ForumSIG : créer un histogramme circulaire =>http://www.forumsig.org/showthread.php/37838-R-Cr%C3%A9er-un-histogramme-circulaire

Pour l’utilisation de R dans Qgis, il y a la documentation QGIS, l’article d’Etienne DELAY sur Geotribu ou encore le tuto (PDF) de Cyril Bernard

Pour changer le code il suffit de faire un clic-droit sur le script > Editer script A savoir : Un # permet de commenter le code Les deux ## permettent de paramétrer le script Le bouton [engrenage] lance le script

Le code avec les commentaires pour le paramétrage:

# Donne un nom au sous-dossier qui doit contenir mon script
##@rcheomatic=group
# En sortie ce sera un graphique
##showplots
# Affiche Layer et demande en entree sera une couche vecteur
##Layer=vector
# Affiche Orientation et demande en entree un champ (numerique) de la couche
##Orientation=Field Layer
# Appel du package "plotrix"..verifier qu'il est bien installe dans R
library("plotrix")
# Declaration de la variable orient = champ Orientation
orient # Declaration de la variable recap = recapitulation du champ Orientation
# cad nombre d occurences pour chaque valeur unique d'orientation
recap # creation du diagramme
diag # longueur des segments = nombres de sepultures ayant la meme orientation
c(0,recap$x),
# angle des segments
c(0,recap$Group.1),
# Titre
main="histogramme circulaire \nd'orientations",
# Origine (placement du 0) si 0 il sera a droite, si 90 en haut, si 180 a gauche
start=90,
# Sens horaire
clockwise=TRUE,
# Epaisseur des segments
lwd=1,
# Couleur des segments
line.col="black",
# emplacement des etiquettes sur les cercles concentriques (nombre de sepultures)
# si 0 y en a pas, si 1 en bas, si 2 a gauche, etc
show.grid.label=3,
# affichage des cercles concentriques (TRUE/FALSE)
show.radial.grid=TRUE,
# etiquettes a l exterieur du diagramme
# par defaut (on efface le parametre) en degre de 20 en 20
# ex: seq(0,350,by=10) veut dire de 0 à 350 avec un pas de 10
# ex: pour les points cardinaux on peux ecrire labels=c
labels=seq(0,350,by=10),
# emplacement des etiquettes a l'exterieur du diagramme (a faire concorder avec labels)
# (ex: de 0 a 315 avec un pas de 45 = (0,315,by=45)
# si on a choisi les points cardinaux comme dans le commentaire precedent
label.pos=seq(0,350,by=10))
# Derniere remarque ne pas mettre un seul accent  meme dans les commentaires

EN CADEAU une version « paramétrable » (couleur et épaisseur des segments,  titre, graduations) du script ICI => RoseDVentsParamet.zip, pas mal non ?

Publicités
Tagué , , ,

11 réflexions sur “[QGIS + script R] Créer un histogramme circulaire des orientations de sépultures.

  1. Luc S. dit :

    Merci, merci, merci, merci !
    J’ai pas réussi une étape : faire les 100m à cloche-pied !

  2. VACHON dit :

    Bravo SLY, j’apprends tous les jours grâce à Archéomatic,
    Continue …
    Véro topo

  3. Gladal dit :

    Rho c’est beau ça !!! Chouette…

  4. merci ! je tente la chose sur mon parcellaire du 18e s. J’obtiendrais peut-être un résultat sur l’adaptation des sociétés à la pente/vulnérabilité du terrain.

  5. bonjour (et merci pour tout ce qui est proposé) !
    cette fonctionnalité me paraît très intéressante, mais j’ai manifestement raté quelque chose dans le pas-à-pas puisque je termine avec un carré bleu avec point d’interrogation dans la fenêtre des résultats. J’ai l’impression que c’est un problème d’affichage.. Est-ce que d’autres de vos lecteurs auraient déjà rencontré ce problème ?

  6. Manuel C. dit :

    Bonsoir,
    Je viens de tenter ce tutoriel et j’ai le même soucis que Sophie … Je suis preneur d’un conseil !
    J’ai regardé le fichier html produit et il fait référence à une image qui n’est pas créée (d’où le « ? » à la place du graphe) et je ne comprends pas pourquoi l’image du graphe n’est pas générée. Je me suis posé la question du format de la donnée (j’avais laissé mon angle en entier pour mon test), mais j’ai refait le test avec un angle en réel, mais j’ai le même résultat.

    En attendant, merci, pour ce blog et toutes ces infos extrêmement intéressantes !

    Manuel

  7. Sylvain F. dit :

    Bonjour,

    Merci beaucoup pour la qualité de ce tuto (et de ce blog).

    J’ai eu le même problème que Sophie et Manuel. En installant les paquets ‘rgdal’ et ‘raster’ de R, le résultat a été bien plus concluant :

    > install.packages(« rgdal »)
    > install.packages(« raster »)

    Sylvain F.

    • archeomatic dit :

      Merci pour l’info Sylvain,
      pour rgdal je comprends puisque c’est le package de gdal mais pour raster je ne vois pas pourquoi? Si ça marche c’est l’essentiel!

  8. Manuel C. dit :

    bonjour !

    Merci pour cette piste, je tenterai cela un de ces 4 et ferai un retour !

    Manuel

  9. Manuel C. dit :

    Bonjour ,

    J’ai finalement réussi à obtenir le graphe en procédant de la façon suivante :
    1/ dans RStudio : installation ( install.package(« xxx ») ) et chargement ( library(« xxx ») ) des packages rgdal, raster, sp et Rcpp
    2/ après avoir fermé RStudio, ouverture du script déposé dans le répertoire .qgis2\processing\rscripts (dans C:/utilisateur/blablabla/ sous windows) et ajout du chargement des librairies :
    library(« rgdal »)
    library(« sp »)
    library(« Rcpp »)

    NB : j’avais intialement chargé « raster » mais cela générait une erreur donc je l’ai retiré (puisque d’apres ton commentaire, il semble que « raster » ne soit pas nécessaire).

    3/ Lancement de QGIS puis réalisation du test

    4/ Bingo !

    En tout cas merci pour vos réponses et vos commentaires, je suis content d’avoir réussi à faire marcher le truc … c’est dommage que je n’ai pas pensé à regarder du côté des librairies absentes (j’y penserai à l’avenir).

    Petite question subsidiaire, lorsqu’on execute le script, il y a des logs dans l’onglet « journal » et qu’on ne peut voir si on ferme la fenetre d’execution (mais si on ferme la fenetre d’execution, tout se ferme et le journal également)… Donc, est-ce que vous savez si il y a moyen de consulter ce journal d’execution ?

    Manuel

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :