{"id":38,"date":"2014-05-23T16:07:11","date_gmt":"2014-05-23T15:07:11","guid":{"rendered":"http:\/\/elcep.legtux.org\/?p=38"},"modified":"2014-08-02T18:27:30","modified_gmt":"2014-08-02T17:27:30","slug":"netlogo-et-sig-jouer-avec-du-raster-et-du-vecteur","status":"publish","type":"post","link":"http:\/\/elcep.legtux.org\/?p=38","title":{"rendered":"netlogo et SIG jouer avec du raster et du vecteur"},"content":{"rendered":"<p>L&rsquo;int\u00e9gration de donn\u00e9es SIG dans netlogo n&rsquo;est pas une trivial. Je vous propose donc ici un petit pense pas b\u00eate pour passer de donn\u00e9es SIG dans une projection h\u00e9t\u00e9rog\u00e8ne \u00e0 l&rsquo;int\u00e9gration dans netlogo.\u00a0 J&rsquo;en avais d\u00e9j\u00e0 fait un il y a quelques ann\u00e9es, mais comme je repart de zero&#8230; autant approfondir!<\/p>\n<p>Pr\u00e8-requis : gdal, qgis, netlogo<\/p>\n<h2>d\u00e9coupe et reprojection de donn\u00e9es raster<\/h2>\n<p>Dans mon cas, je veux travailler sur un espace carr\u00e9e, je commence donc par d\u00e9finir l&#8217;emprise de la zone de travail avec un polygone dans Qgis.<\/p>\n<p><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/capture-d\u00e9cran1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-40\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/capture-d\u00e9cran1.png\" alt=\"zone de travail netlogo dans qgis\" width=\"600\" height=\"325\" srcset=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/capture-d\u00e9cran1.png 600w, http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/capture-d\u00e9cran1-300x162.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Si vous vous int\u00e9ressez a ces questions, vous savez sans doute que l\u2019extension GIS de netlogo ne supporte pas un tr\u00e8s grand nombre de syst\u00e8me de projection. Il va donc falloir passer ici du lambert 93 (epsg:2154) au WGS84 (epsg:4326) ce qui n\u00e9cessite un r\u00e9-\u00e9chantillonnage du raster.<\/p>\n<p>Nous allons utiliser gdal en ligne de commande pour effectuer la reprojection et la d\u00e9coupe en m\u00eame temps.<\/p>\n<pre lang=\"bash\">gdalwarp -cutline emprise.shp -crop_to_cutline -dstalpha -s_srs epsg:2154 -t_srs epsg:4326 DTMBanyulsEPSG2154\/slope10m.tif DTMBanyulsEPSG2154\/small_slope.tif<\/pre>\n<p>Si vous r\u00e9-ouvrez a nouveau Qgis vous pouvez v\u00e9rifier que tout s&rsquo;est bien pass\u00e9 (d\u00e9coupe et epsg = 4326)!<\/p>\n<p><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/reproj_and_crop.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-42\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/reproj_and_crop.png\" alt=\"reproj_and_crop\" width=\"600\" height=\"329\" srcset=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/reproj_and_crop.png 600w, http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/reproj_and_crop-300x164.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a>Mon 2nd probl\u00e8me maintenant est que netlogo mange de l&rsquo;asc &#8230; il faut donc traduire mon tif en asc ! Cela peut encore une fois se faire garce \u00e0 gdal! (attention depuis la version 1.9 de gdal il faut force la cr\u00e9ation de grid type ESRI&#8230; par d\u00e9faut gdal produit un fichier de type surfer, cela est possible avec l&rsquo;option -co FORCE_CELLSIZE=TRUE)<\/p>\n<pre>gdal_translate -of \"AAIGrid\" -b 1 -co FORCE_CELLSIZE=TRUE DTMBanyulsEPSG2154\/small_slope.tif DTMBanyulsEPSG2154\/small_slope.asc<\/pre>\n<p>&nbsp;<\/p>\n<h2>d\u00e9coupe et reprojection de donn\u00e9es vecteur<\/h2>\n<p>Si on veux effectuer la m\u00eame chose avec des donn\u00e9es vectorielle on va utiliser le couteau suisse ogr2ogr qui vient avec les librairies gdal. De la m\u00eame mani\u00e8re donc nous sommes capable de d\u00e9couper et reprojeter des donn\u00e9es vecteur<\/p>\n<pre>ogr2ogr -clipsrc empriseL93.shp -s_srs epsg:2154 -t_srs epsg:4326 ParcellesVitiSQLITE\/small_parcellesWGS84.shp ParcellesVitiSQLITE\/ParcellesViti_L93.shp<\/pre>\n<p>Attention tout fois, v\u00e9rifiez que les champs qui vous int\u00e9ressent ne sont pas NULL<\/p>\n<h2>Import dans netlogo de donn\u00e9es vecteur<\/h2>\n<p>A ce stade nous n&rsquo;avons (plus) qu&rsquo; \u00e0 passer dans netlogo.<\/p>\n<p>Vous devrez en premier lieu charger l&rsquo;extention GIS dans netlogo et definir des global \u00e0 utiliser pour charger les donn\u00e9es SIG.<\/p>\n<pre>Extensions [GIS]\r\n\r\nbreed [vinegrowers vinegrower]\r\n\r\nglobals[\r\n  parcelles ;; needed for GIS vector import\r\n  ]\r\npatches-own [ ;;atributes for patches\r\n\u00a0 cat ;;for load data from GIS dataSet\r\n\u00a0 ]\r\n<\/pre>\n<p>Nous pouvons \u00e0 partir de l\u00e0 cr\u00e9er une proc\u00e9dure qui va charger des donn\u00e9es GIS.<\/p>\n<pre>to setupGIS\r\n  ;chargement des donn\u00e9es en RAM\r\n  ;;definir le systeme de projection\r\n  set parcelles gis:load-dataset \"data_carto\/ParcellesVitiSQLITE\/small_parcellesWGS84.shp\"\r\n  gis:set-world-envelope gis:envelope-of parcelles\r\n  ;efface la vu dans l'interface\r\n  clear-drawing\r\n  ;definition de la couleur pour les polygones\r\n  gis:set-drawing-color blue \r\n  ;definition des la couche (charger dans les gloables) a dessiner dans l'interface\r\n  gis:draw parcelles 1\r\n  ;ajuste le cadre de l'environement de netlogo avec la couche shp\r\n  gis:set-world-envelope (gis:envelope-of parcelles)\r\n  ;affectuer des valeurs du vectordataset (champs N_CVI) aux patches dans l'atribut cat\r\n  gis:apply-coverage parcelles \"N_CVI\" cat\r\nend\r\n\r\n<\/pre>\n<p>Si vous appelez la fonction setupGIS dans l&rsquo;interface les donn\u00e9es sont charger dans le viewer<\/p>\n<pre>Extensions [GIS]\r\n\r\nbreed [vinegrowers vinegrower]\r\n\r\nglobals[\r\n  parcelles ;; needed for GIS vector import\r\n  ]\r\npatches-own [ ;;atributes for patches\r\n  cat ;;for load data from GIS dataSet\r\n  ]\r\n<\/pre>\n<p>Nous pouvons \u00e0 partir de l\u00e0 cr\u00e9er une proc\u00e9dure qui va charger des donn\u00e9es GIS.<\/p>\n<pre>to setupGIS\r\n  ;chargement des donn\u00e9es en RAM\r\n  ;;definir le systeme de projection\r\n  set parcelles gis:load-dataset \"data_carto\/ParcellesVitiSQLITE\/small_parcellesWGS84.shp\"\r\n  gis:set-world-envelope gis:envelope-of parcelles\r\n  ;efface la vu dans l'interface\r\n  clear-drawing\r\n  ;definition de la couleur pour les polygones\r\n  gis:set-drawing-color blue \r\n  ;definition des la couche (charger dans les gloables) a dessiner dans l'interface\r\n  gis:draw parcelles 1\r\n  ;ajuste le cadre de l'environement de netlogo avec la couche shp\r\n  gis:set-world-envelope (gis:envelope-of parcelles)\r\n  ;affectuer des valeurs du vectordataset (champs N_CVI) aux patches dans l'atribut cat\r\n  gis:apply-coverage parcelles \"N_CVI\" cat\r\nend\r\n\r\n<\/pre>\n<p><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/LAME_MODEL_v0-view.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-45\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/LAME_MODEL_v0-view.png\" alt=\"LAME_MODEL_v0 view\" width=\"487\" height=\"513\" srcset=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/LAME_MODEL_v0-view.png 487w, http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/LAME_MODEL_v0-view-284x300.png 284w\" sizes=\"auto, (max-width: 487px) 100vw, 487px\" \/><\/a><\/p>\n<h2>Import dans netlogo de donn\u00e9es raster<\/h2>\n<p>&nbsp;<\/p>\n<pre>Extensions [GIS]\r\n\r\nbreed [vinegrowers vinegrower]\r\n\r\nglobals[\r\n  parcelles ;; needed for GIS vector import\r\n  slope\r\n  ]\r\npatches-own [ ;;atributes for patches\r\n  cat ;;for load data from GIS dataSet\r\n  slope_here\r\n  ]\r\n<\/pre>\n<p>Nous pouvons \u00e0 partir de l\u00e0 cr\u00e9er une proc\u00e9dure qui va charger des donn\u00e9es GIS.<\/p>\n<pre>to setupGIS\r\n  ;chargement des donn\u00e9es en RAM\r\n  ;;pour charger les pentes \r\n  set slope gis:load-dataset \"data_carto\/DTMBanyulsEPSG2154\/small_slope.asc\"\r\n  ;;poue simplement dessiner le raster\r\n  gis:paint slope white\r\n\r\n  ;;pour attribuer les valeur du raster aux patches \r\n  ask patches[\r\n    set slope_here gis:raster-sample slope patch pxcor pycor\r\n  ]\r\nend\r\n\r\n<\/pre>\n<p>Ce qui nous permet d&rsquo;obtenir l&rsquo;effet attendu (ouf)!<\/p>\n<p><a href=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/view_slope.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-48\" src=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/view_slope.png\" alt=\"view_slope\" width=\"600\" height=\"455\" srcset=\"http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/view_slope.png 600w, http:\/\/elcep.legtux.org\/wp-content\/uploads\/2014\/05\/view_slope-300x227.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a>A not\u00e9 enfin que les valeurs vont se superposer dans l&rsquo;ordre dans lequel vous les appelez dans la proc\u00e9dure. Ce qui veuux dire que si vous avez charger des donn\u00e9es vecteur n premier et que vous ajouter la pente comme ici. Les polygones que nous visualisions pr\u00e9c\u00e9dement seront cacher par la pente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&rsquo;int\u00e9gration de donn\u00e9es SIG dans netlogo n&rsquo;est pas une trivial. Je vous propose donc ici un petit pense pas b\u00eate pour passer de donn\u00e9es SIG dans une projection h\u00e9t\u00e9rog\u00e8ne \u00e0 l&rsquo;int\u00e9gration dans netlogo.\u00a0 J&rsquo;en avais d\u00e9j\u00e0 fait un il y a quelques ann\u00e9es, mais comme je repart de zero&#8230; autant approfondir! Pr\u00e8-requis : gdal, qgis, &hellip; <a href=\"http:\/\/elcep.legtux.org\/?p=38\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">netlogo et SIG jouer avec du raster et du vecteur<\/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,8],"tags":[10,9,5],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-geomatique","category-sma","tag-gdal","tag-netlogo","tag-r"],"_links":{"self":[{"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=38"}],"version-history":[{"count":10,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":109,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=\/wp\/v2\/posts\/38\/revisions\/109"}],"wp:attachment":[{"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/elcep.legtux.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}