{"id":305,"date":"2016-04-28T08:45:49","date_gmt":"2016-04-28T07:45:49","guid":{"rendered":"http:\/\/elcep.legtux.org\/?p=305"},"modified":"2016-04-28T08:45:49","modified_gmt":"2016-04-28T07:45:49","slug":"grass-gis-7-et-r","status":"publish","type":"post","link":"https:\/\/elcep.legtux.org\/?p=305","title":{"rendered":"GRASS-GIS 7 et R"},"content":{"rendered":"<h2>Contexte<\/h2>\n<p>Avec <a href=\"https:\/\/twitter.com\/fabio_zottele\">@fabio_zottele<\/a>, nous nous sommes replong\u00e9s ce weekend sur un travail un peu vieux. Celui-ci remonte \u00e0 5 ans, et consiste \u00e0 proposer un algorithme bas\u00e9 sur des librairies\/logiciels libres afin de d\u00e9tecter les terrasses viticoles. Ce travail avait initialement \u00e9t\u00e9 d\u00e9velopp\u00e9 sur R gdal et grass 6.3. pour une petite zone de la val di Cembra.<\/p>\n<p>Notre objectif est aujourd&rsquo;hui de syst\u00e9matiser l&rsquo;algorithme et de v\u00e9rifier que l&rsquo;\u00e9volution des technologies et des algorithmes sur lesquels nous nous \u00e9tions bas\u00e9s produit toujours le r\u00e9sultat attendu.<\/p>\n<h2>Installation de GRASS7<a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/startup_banner.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-medium wp-image-321\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/startup_banner-300x73.png\" alt=\"Grass-GIS\" width=\"300\" height=\"73\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/startup_banner-300x73.png 300w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/startup_banner.png 618w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h2>\n<p>La premi\u00e8re chose \u00e0 faire est de compiler GRASS-GIS en version 7, car les d\u00e9p\u00f4ts ne sont pas encore \u00e0 jour sur Fedora. Vous pouvez trouver toute la documentation sur le <a href=\"https:\/\/grasswiki.osgeo.org\/wiki\/Compile_and_Install\">wiki de grass<\/a>.<\/p>\n<p>On pourra commencer par t\u00e9l\u00e9charger le <a href=\"https:\/\/grass.osgeo.org\/grass70\/source\/snapshot\/\">weekly snapshot<\/a> du projet , et installer les d\u00e9pendances qui vont bien :<\/p>\n<pre>sudo dnf install gcc gcc-c++ bison flex ncurses-devel proj-epsg proj-nad xml2 \\\r\nproj-devel gdal gdal-devel gdal-python sqlite-devel mesa-libGL-devel \\\r\nfftw-devel mesa-libGLU-devel libXmu-devel libX11-devel geos geos-devel \\\r\nlibtiff-devel lesstif-devel python-devel numpy wxPython wxGTK-devel \\\r\npython-dateutil python-imaging python-matplotlib-wx subversion doxygen python-sphinx \\\r\nnetcdf-devel postgresql-devel lapack lapack-devel blas blas-devel atlas atlas-devel<\/pre>\n<p>On peut ensuite aller compiler les sources :<\/p>\n<pre>cd ~\/T\u00e9l\u00e9chargement\/grass7.0.svn\/\r\n.\/configure \\\r\n  --with-cxx \\\r\n  --with-gdal=\/usr\/bin\/gdal-config \\\r\n  --with-proj --with-proj-share=\/usr\/share\/proj \\\r\n  --with-python=\/usr\/bin\/python-config \\\r\n  --with-geos \\\r\n  --with-sqlite \\\r\n  --with-nls \\\r\n  --with-wxwidgets=\/usr\/bin\/wx-config \\\r\n  --with-fftw \\\r\n  --with-cairo --with-cairo-ldflags=-lfontconfig \\\r\n  --with-freetype --with-freetype-includes=\/usr\/include\/freetype2 \\\r\n  --enable-largefile \\\r\n  --without-odbc \\\r\n  --with-ffmpeg \\\r\n  --with-ffmpeg-includes=\"\/usr\/include\/ffmpeg \/usr\/include\/ffmpeg\/libav* \/usr\/include\/ffmpeg\/libpostproc \/usr\/include\/ffmpeg\/libswscale\" \\\r\n  --with-blas --with-blas-includes=\/usr\/include\/atlas-x86_64-base\/ \\\r\n  --with-lapack --with-lapack-includes=\/usr\/include\/atlas-x86_64-base\/ \\\r\nmake -j4 #pour compiler sur 4 thread\r\nsudo make install<\/pre>\n<p>Et nous voil\u00e0 avec une belle installation de grass7. Je vous encourage \u00e0 faire un tour du propri\u00e9taire parce qu&rsquo;un travail formidable a \u00e9t\u00e9 fait ! Bravo \u00e0 l&rsquo;\u00e9quipe de dev!<\/p>\n<h2>Comment se passe la communication avec R ?<\/h2>\n<p><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/Rlogo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-322\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/Rlogo.png\" alt=\"Rlogo\" width=\"200\" height=\"155\" \/><\/a>Et bien figurez-vous qu&rsquo;il y a le package qui va bien \ud83d\ude00 : <a href=\"https:\/\/cran.r-project.org\/web\/packages\/rgrass7\/index.html\">rgrass7<\/a> qui s&rsquo;installe comme d&rsquo;habitude dans R avec :<\/p>\n<p>install.packages(\u00ab\u00a0rgrass7\u00a0\u00bb, dependences = TRUE)<\/p>\n<p>Mais l&rsquo;utilisation diff\u00e8re un peu de son grand fr\u00e8re. En effet, on peut d\u00e9sormais sp\u00e9cifier l&#8217;emplacement de votre GRASS7 fraichement compil\u00e9. On proc\u00e8dera donc de la mani\u00e8re suivante :<\/p>\n<pre>remove(list=ls())\r\n## Configuration Parametrs:\r\ngisBaseLocation = \"\/opt\/grass\" #where the GRASS executables are\r\nlibrary(rgrass7) #load lib in R\r\ninitGRASS(gisBase=gisBaseLocation, override=TRUE) #Run GRASS in &amp; Cancel previous running GRASS instance in R<\/pre>\n<p>L&rsquo;ex\u00e9cution se fait ensuite avec une seule et m\u00eame commande R \u00e0 laquelle on passera en param\u00e8tre la commande GRASS<\/p>\n<pre>execGRASS(cmd= \"g.remove\", flags=c(\"f\", \"b\"), parameters= list(type=\"raster\", pattern=\"*\"))<\/pre>\n<p>Ici on ex\u00e9cute donc dans R une commande GRASS qui va permettre de supprimer tous les rasters de la base de donn\u00e9es GRASS.<\/p>\n<p>Pour prendre un autre exemple :<\/p>\n<pre>execGRASS(cmd= \"r.param.scale\", flags= c(\"overwrite\", \"verbose\"), parameters= list(input=\"DTM\",output=\"CURVATURE\", size=5, method=\"profc\", zscale=2.0))<\/pre>\n<p>Ici on ex\u00e9cutera la commande<em> r.param.scale<\/em>\u00a0 en sp\u00e9cifiant toutes les options.<\/p>\n<p>Quand on veut ensuite sortir les r\u00e9sultats de GRASS pour les manipuler dans R, la m\u00e9thode n&rsquo;a pas beaucoup chang\u00e9 :<\/p>\n<pre>param.scale = raster(readRAST(\"CURVATURE\"))<\/pre>\n<p>Ici on utilise la fonction raster du package \u00e9ponyme pour convertir en raster les donn\u00e9es en sortie de la fonction <em>readRAST<\/em> du package rgrass7.<\/p>\n<h2>Pour le plaisir des yeux<\/h2>\n<p>Voil\u00e0 donc \u00e0 partir de donn\u00e9es LIDAR \u00e0 1m la proportion de surface avec des terrasses \u00e0 l&rsquo;\u00e9chelle tu Trentino !<\/p>\n<figure id=\"attachment_331\" aria-describedby=\"caption-attachment-331\" style=\"width: 604px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/mappaEroica.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-331 size-large\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/mappaEroica-1024x724.png\" alt=\"mappaEroica\" width=\"604\" height=\"427\" srcset=\"https:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/mappaEroica-1024x724.png 1024w, https:\/\/elcep.legtux.org\/wp-content\/uploads\/2016\/04\/mappaEroica-300x212.png 300w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/a><figcaption id=\"caption-attachment-331\" class=\"wp-caption-text\">Proportion de surfaces agricoles terrass\u00e9es par tuile de donn\u00e9es LIDAR \u00e0 l&rsquo;\u00e9chelle de la r\u00e9gion Trentino<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Contexte Avec @fabio_zottele, nous nous sommes replong\u00e9s ce weekend sur un travail un peu vieux. Celui-ci remonte \u00e0 5 ans, et consiste \u00e0 proposer un algorithme bas\u00e9 sur des librairies\/logiciels libres afin de d\u00e9tecter les terrasses viticoles. Ce travail avait initialement \u00e9t\u00e9 d\u00e9velopp\u00e9 sur R gdal et grass 6.3. pour une petite zone de la &hellip; <a href=\"https:\/\/elcep.legtux.org\/?p=305\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">GRASS-GIS 7 et R<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[51,52,53,5,23],"class_list":["post-305","post","type-post","status-publish","format-standard","hentry","category-geomatique","tag-grass-gis","tag-grass7","tag-moutain","tag-r","tag-viticulture"],"_links":{"self":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=305"}],"version-history":[{"count":6,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions"}],"predecessor-version":[{"id":333,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/305\/revisions\/333"}],"wp:attachment":[{"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}