Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
specialspatial [2017/02/16 15:19]
glaroc [Importer des données de QGIS dans PostGIS]
specialspatial [2017/02/20 16:59] (current)
glaroc [Exercice 6]
Line 1: Line 1:
 ====== Atelier du CSBQ sur l'​utilisation des logiciels libres pour l'​analyse spatiale avancée. ====== ====== Atelier du CSBQ sur l'​utilisation des logiciels libres pour l'​analyse spatiale avancée. ======
  
-30 avril 2015, Université ​McGill, Montréal +23 février 2017, Université ​du Québec à Rimouski
  
   * [[https://​prezi.com/​gtw8-gwn8gqt/​atelier-du-csbq-sur-lutilisation-des-logiciels-libres-pour-lanalyse-spatiale-avancee/​|Lien vers la présentation Prezi]]   * [[https://​prezi.com/​gtw8-gwn8gqt/​atelier-du-csbq-sur-lutilisation-des-logiciels-libres-pour-lanalyse-spatiale-avancee/​|Lien vers la présentation Prezi]]
Line 21: Line 21:
 Then type Then type
 <​file>​ <​file>​
-sudo gedit /​etc/​postgresql/​9.3/​main/​postgresql.conf+sudo gedit /​etc/​postgresql/​9.5/​main/​postgresql.conf
 </​file>​ </​file>​
 enlevez le # devant #​listen_addresses = '​localhost'​ enlevez le # devant #​listen_addresses = '​localhost'​
Line 58: Line 58:
   - Assurez-vous que l'​extension DB Manager est activée dans la liste des extensions (plugins). ​   - Assurez-vous que l'​extension DB Manager est activée dans la liste des extensions (plugins). ​
   - Allez à Database... DB Manager. Cliquez sur PostGIS et naviguez vers la base de données spatiales (spatialdb) que vous avez créé plus tôt.   - Allez à Database... DB Manager. Cliquez sur PostGIS et naviguez vers la base de données spatiales (spatialdb) que vous avez créé plus tôt.
-  - Cliquez sur l'​icône Import Layer/File et choisissez le fichier "​obis_toothed_whales.shp"​. Choisissez "​Create spatial index" et laissez les autres options inchangées. Nommez la nouvelle table "​obis_whales"​ en minuscules. Souvenez-vous que les noms de tables PostgreSQL ne devraient jamais inclure de lettres majuscules, d'​espaces,​ de caractères spéciaux ou d'​accents.+  - Cliquez sur l'​icône Import Layer/File et choisissez le fichier "​obis_toothed_whales.shp"​. Choisissez "​Create spatial index" et "​Create single-part geometries instead of multi-part" et laissez les autres options inchangées. Nommez la nouvelle table "​obis_whales"​ en minuscules. Souvenez-vous que les noms de tables PostgreSQL ne devraient jamais inclure de lettres majuscules, d'​espaces,​ de caractères spéciaux ou d'​accents.
   - Répétez ces étapes pour importer EEZ_IHO_union_V2.shp (nommez là eez_iho), meow_ecos.shp (nommez là meow) et TM_WORLD_BORDERS.shp (nommez là tm_world). ​   - Répétez ces étapes pour importer EEZ_IHO_union_V2.shp (nommez là eez_iho), meow_ecos.shp (nommez là meow) et TM_WORLD_BORDERS.shp (nommez là tm_world). ​
  
Line 92: Line 92:
 Extraire les latitudes et longitudes de chaque occurrence de "​Delpinus delphis"​. Note: nous devons utiliser une sous-requête et la fonction ST_Dump dans ce cas car les occurrences d'​odontocètes ont été importées en format MULTIPOINT et les fonctions ST_X/ST_Y exigent des POINT. Extraire les latitudes et longitudes de chaque occurrence de "​Delpinus delphis"​. Note: nous devons utiliser une sous-requête et la fonction ST_Dump dans ce cas car les occurrences d'​odontocètes ont été importées en format MULTIPOINT et les fonctions ST_X/ST_Y exigent des POINT.
 <file postgresql>​ <file postgresql>​
-SELECT ST_X(geom), ST_Y(geom) ​FROM (SELECT (ST_Dump(geom)).geom  ​FROM obis_whales WHERE tname='​Delphinus delphis'​) a +SELECT ST_X(geom), ST_Y(geom) FROM obis_whales WHERE tname='​Delphinus delphis';​
-</​file>​ +
- +
-Nous pouvons créer une colonne de type POINT au lieu de MULTIPOINT +
-<file postgresql>​ +
-ALTER TABLE obis_whales ADD COLUMN geompt GEOMETRY(POINT,​4326);​ +
-UPDATE obis_whales SET geompt=(ST_Dump(geom)).geom;+
 </​file>​ </​file>​
  
 Distance au plus proche voisin pour chaque localisation de béluga Distance au plus proche voisin pour chaque localisation de béluga
 <file postgresql>​ <file postgresql>​
-SELECT DISTINCT ON(a.id_0) a.id_0, b.id_0 as nn, ST_Distance(a.geom,​b.geom) as dist FROM obis_whales a, obis_whales b WHERE a.id_0 <> b.id_0 AND a.tname='​Delphinapterus leucas'​ AND b.tname='​Delphinapterus leucas'​ ORDER BY a.id_0,dist+SELECT DISTINCT ON(a.id) a.id, b.id as nn, ST_Distance(a.geom,​b.geom) as dist FROM obis_whales a, obis_whales b WHERE a.id <> b.id AND a.tname='​Delphinapterus leucas'​ AND b.tname='​Delphinapterus leucas'​ ORDER BY a.id,dist
 </​file>​ </​file>​
  
-**EXERCICE 1** Trouvez le pays qui a la plus gros ratio entre son la racine carrée de son aire et son périmètre. Quel pays a le plus petit ratio?+**EXERCICE 1** Trouvez le pays qui a la plus gros ratio entre la racine carrée de son aire et son périmètre. Quel pays a le plus petit ratio?
  
 ++++ Réponse | ++++ Réponse |
Line 215: Line 209:
 \\ \\
 \\ \\
-===== Utilisation de PostGIS et GRASS dans R =====+===== Utilisation de PostGIS, QGIS et GRASS dans R =====
  
 {{::​special_spatial_code_r.r|Téléchargez le fichier R contenant le code pour cette partie de l'​atelier}}. ​ {{::​special_spatial_code_r.r|Téléchargez le fichier R contenant le code pour cette partie de l'​atelier}}. ​
  
 +  * Package [[http://​cran.r-project.org/​web/​packages/​RQGIS/​index.html|RQGIS]]
   * Package [[http://​cran.r-project.org/​web/​packages/​spgrass6/​index.html|spgrass6]]   * Package [[http://​cran.r-project.org/​web/​packages/​spgrass6/​index.html|spgrass6]]
   * Package [[http://​cran.r-project.org/​web/​packages/​RPostgreSQL/​index.html|RPostgreSQL]]   * Package [[http://​cran.r-project.org/​web/​packages/​RPostgreSQL/​index.html|RPostgreSQL]]
   * Package [[http://​cran.r-project.org/​web/​packages/​rgdal/​index.html|rgdal]]   * Package [[http://​cran.r-project.org/​web/​packages/​rgdal/​index.html|rgdal]]
 +
 ===== Utilisation de Processing dans QGIS ===== ===== Utilisation de Processing dans QGIS =====
  
-  * [[http://​docs.qgis.org/​2.6/en/​docs/​training_manual/​processing/​index.html|QGIS Training manual. ​Processing ​Guide. ]] +  * [[http://​docs.qgis.org/​2.14/fr/​docs/​training_manual/​processing/​index.html|QGIS Training manual. Guide du module Traitements. ]] 
-  * [[http://​docs.qgis.org/​2.6/​en/​docs/​user_manual/​processing/​index.html|QGIS User manual - Processing framework.]]+  * [[http://​docs.qgis.org/​2.14/​en/​docs/​user_manual/​processing/​index.html|QGIS User manual - Processing framework.]]
  
  
Line 283: Line 279:
 7 - Ajoutez "​Extract by attributes"​ au modèle (sous QGIS geoalgorithms). Spécifiez "​Pays"​ comme "Input Layer",​ = comme opérateur, NAME comme "​Selection Attribute"​ et "Nom du pays" comme "​Value"​. ​ 7 - Ajoutez "​Extract by attributes"​ au modèle (sous QGIS geoalgorithms). Spécifiez "​Pays"​ comme "Input Layer",​ = comme opérateur, NAME comme "​Selection Attribute"​ et "Nom du pays" comme "​Value"​. ​
  
-8 - Ajoutez un "Fixed Distance Buffer"​ au modèle. Spécifiez "Output from Extract by Attributes" comme "​Input",​ et mettre la distance à 0.5 (c'est en degrés puisque la carte est en degrés). ​Choisissez de "​dissolve the output"​.+8 - Ajoutez un "Fixed Distance Buffer"​ au modèle. Spécifiez "Extracted (attribute)" comme "​Input",​ et mettre la distance à 0.5 (c'est en degrés puisque la carte est en degrés). ​À "​dissolve the output"​, choisissez '​No'​.
  
 9 - Ajoutez un autre vecteur au modèle. Nommez-le "​Zones"​. Spécifiez "​Polygon"​ comme "shape type"​. ​ 9 - Ajoutez un autre vecteur au modèle. Nommez-le "​Zones"​. Spécifiez "​Polygon"​ comme "shape type"​. ​
  
-10 - Ajoutez "​Intersection"​ au modèle. Spécifiez une intersection ​entre "​output of the Buffer"​ et la couche ​"​Zones"​.+10 - Ajoutez "​Intersection"​ au modèle. Spécifiez une intersection "​output of the Buffer" ​comme Input et  "​Zones" ​comme couche d'​intersection.
  
-11 - Ajoutez Field Calculator au modèle. Spécifiez new_area comme "​Result Field Name" et $area comme Formule. Ceci calculera l'aire des polygones de chaque section de mer dans la zone tampons autour du pays en degrés.  ​+11 - Ajoutez Field Calculator au modèle. Spécifiez Intersection comme Input. Spécifiez new_area comme "​Result Field Name" et $area comme Formule. Ceci calculera l'aire des polygones de chaque section de mer dans la zone tampons autour du pays en degrés.  ​
  
 12 - Maintenant, ajoutez le script R créé plus haut à l'​étape 2 au modèle. "​Input"​ est la sortie de l'​étape 11 (Field Calculator). Appelez le fichier sortant "​Pays_Mers"​ 12 - Maintenant, ajoutez le script R créé plus haut à l'​étape 2 au modèle. "​Input"​ est la sortie de l'​étape 11 (Field Calculator). Appelez le fichier sortant "​Pays_Mers"​
  
 Votre modèle devrait ressembler à ceci:  Votre modèle devrait ressembler à ceci: 
 +{{::​graphical_modeler3_processing.png?​direct&​200|}}
  
-{{::​graphical_modeler1.png?​direct&​200|}} 
  
-13 - Vous êtes maintenant prêt à rouler le modèle! Sauvez d'​abord le modèle et appelez le Pays_mers. Ensuite, fermez le "​Graphical Modeler"​ et double-cliques ​sur votre modèle dans le Toolbox sous Models. Spécifiez TM_World_Borders comme Pays and EEZ_IHO_union_v2 Pour les Zones. Spécifiez le nom d'un pays de votre choix (ex. Canada).+13 - Vous êtes maintenant prêt à rouler le modèle! Sauvez d'​abord le modèle et appelez le Pays_mers. Ensuite, fermez le "​Graphical Modeler"​ et double-cliquez ​sur votre modèle dans le Toolbox sous Models. Spécifiez TM_World_Borders comme Pays and EEZ_IHO_union_v2 Pour les Zones. Spécifiez le nom d'un pays de votre choix (ex. France).
  
-14 - Quand l’algorithme cesse de rouler, vous devriez ​vois un graphique montrant l'aire de chanque ​mer le long de la côte du pays choisi. ​+14 - Quand l’algorithme cesse de rouler, vous devriez ​voir un graphique montrant l'aire de chaque ​mer le long de la côte du pays choisi. ​