- Accueil Danigra
- Quantum Gis
Quantum Gis
Présentation
En quelques mots
Ce tutoriel QGIS a été créé par le plateau transversal GRANIT du laboratoire adess. Son but est de permettre aux débutants en SIG de s'initier à ceux-ci via le logiciel libre QGIS. Pour installer QGIS, rendez-vous sur http://www.qgis.org/.
Le tutoriel est actuellement à jour pour la version « à long terme » QGIS 2.8 'Wien'.
Accès au tutoriel
Le tutoriel comporte 11 parties auxquelles vous pouvez accéder par le plan dans la partie droite de la page, ou bien via le plan détaillé.
Chaque partie peut être réalisée indépendamment des autres ; cependant, la progression présentée suit un ordre logique.
Si vous recherchez une notion précise, utilisez l'index.
Mode d'emploi
Manipulation
Tout au long du tutoriel, les parties décrivant des manipulations à effectuer dans QGIS sont différenciées par une bordure verte et un fond vert pâle :
Ceci décrit une manipulation à effectuer dans QGIS.
Les données nécessaires pour effectuer ces manipulations sont accessibles dans la rubrique téléchargement.
Aide
Quand une partie du texte apparaît souligné en vert, si vous passez la souris dessus, une image apparaît pour vous aider par exemple à trouver l'emplacement d'un menu ou d'un bouton dans QGIS.
Sauvegardez votre projet sous un nouveau nom : Menu Projet → Sauvegarder sous...
Question/réponse
Des questions vous seront posées tout au long du tutoriel ; les réponses sont visibles en cliquant sur le petit triangle devant la question.
Parce-que c'est une légende!
Liens
Les liens internes au site d' adess sont affichées en vert, les liens externes sont en gris et s'ouvriront dans une nouvelle fenêtre ou onglet.
I. Prise en main
Cette première partie constitue une introduction aux logiciels SIG de manière générale et à QGIS en particulier.
Notions abordées :
- Qu'est-ce qu'un SIG?
- Ajout de données vecteur
- Propriétés d'une couche
- La table attributaire
- Formats de données vecteur
- Espace de travail : le projet QGS
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
I.1 Qu'est-ce qu'un SIG ? (un peu de théorie...)
Définitions
Qu'est-ce que la géomatique ?
La géomatique est l'ensemble des techniques de traitement informatique des données géographiques (Journal Officiel, 1994). Elle regroupe donc les outils et méthodes permettant l'acquisition, le stockage, le traitement et la diffusion de données à référence spatiale.
Qu'est-ce qu'un Système d'Information Géographique ?
C'est un système permettant de gérer des informations localisées géographiquement. Ce système est composé de :
- données
- logiciels
- matériel informatique
- savoir-faire
- utilisateurs
Par abus de langage, un SIG signifie souvent aujourd'hui le logiciel utilisé dans un SIG.
Les données des SIG
Une organisation par couches
Les données sont organisées sous forme de couches superposables.
Lancez le logiciel QGIS. Ouvrez un projet :
Menu Projet → Ouvrir
Sélectionnez le projet senegal.qgs situé dans TutoQIS_01_PriseEnMain/projets, cliquez sur Ouvrir.
Trois couches de données sont affichées dans QGIS, correspondant aux villes, rivières et régions du Sénégal.
Deux grands types de données : vecteur et raster
On distingue généralement deux types de données : vecteur et raster.
Les données vecteurs se définissent uniquement par des coordonnées. On trouvera des données vecteurs de type point, ligne et polygone. Un point sera défini par un couple de coordonnées XY, une ligne ou un polygone par les coordonnées de leurs sommets. Une couche vecteur sera soit de type point, soit de type ligne, soit de type polygone, mais ne pourra contenir de données de deux types différents (sauf dans le cas particuliers de certains formats qui ne seront pas abordés dans ce tutoriel).
On pourra choisir par exemple de représenter des cours d'eau sous forme de ligne, des villes sous forme de points...
Les données vecteur sont généralement moins volumineuses que les données raster. Quelques exemples de formats vecteur : SVG, AI, SHP...
Les données raster, ou images, sont constituées de pixels. En zoomant sur un raster, on finit par distinguer les pixels. Chaque pixel possède une valeur correspondant par exemple à sa couleur, ou à son altitude. Un raster est caractérisé par la taille d'un pixel, ou résolution. Exemples de données raster : carte IGN scannée, photographie aérienne, image satellite...
Quelques exemples de formats raster : JPG, TIFF, PNG...
Les données vecteur : à chaque géométrie ses attributs (et vice-versa)
On distingue deux composantes dans les données utilisées dans un SIG : spatiale et attributaire. La composante spatiale est constituée de la localisation et la géométrie d'un objet, donc de ses coordonnées. La composante attributaire est constituée des données qui y sont associées. Par exemple, la composante spatiale d'un département sera le polygone représentant ce département, et sa composante attributaire sera son nom, son code, sa population...
Le lien entre composante spatiale et attributaire constitue une différence fondamentale avec les logiciels de dessin (DAO) type AutoCAD.
Ouvrez le projet depts_france.qgs qui se trouve situé dans le dossier TutoQIS_01_PriseEnMain/projets.
Ouvrez la table attributaire de la couche de départements :
Clic droit sur le nom de la couche → Ouvrir la table d'attributs
Sélectionner un département dans la table attributaire, en cliquant sur le numéro de la ligne. Le département correspondant apparaît dans une couleur différente (jaune par défaut) dans la carte.
Vous pouvez ensuite cliquer sur l'outil zoomer sur la sélection pour zoomer sur ce département
Vous pouvez maintenant faire l'inverse : sélectionner un département sur la carte, au moyen de l'outil de sélection. La ligne correspondante passe alors en surbrillance dans la table attributaire.
Vous pouvez choisir Ne montrer que les entités sélectionnées dans la liste déroulante en bas à gauche de la table, pour ne voir que les lignes correspondant aux départements sélectionnés.
Pour que la fenêtre de la table attributaire soit "ancrée" dans QGIS : menu Préférences → Options → Sources de données : cocher la case Ouvrir la table d'attributs dans une fenêtre intégrée. Contrairement à ce qui est écrit, cette modification est prise en compte directement sans besoin de redémarrer QGIS.
Des données sur les données : les métadonnées
Afin de savoir quelles sont les utilisations que l'on peut faire d'une donnée, il est indispensable de posséder des informations sur la manière dont a été fabriquée cette donnée, sa date, ses limites éventuelles d'utilisation... Ces « données sur la donnée » constituent ce qu'on appelle des métadonnées. Elles peuvent se présenter sous diverses formes : un simple fichier texte, une fiche PDF...
Vous pouvez voir ici les métadonnées de la couche Corine Land Cover : www.geocatalogue.fr/Detail.do?id=7665
Il existe aujourd'hui des normes régissant la manière dont sont construites ces métadonnées : nombres de rubriques présentes, choix des rubriques... Ceci permet de construire des catalogues de métadonnées, et facilite in fine l'échange de données entre organismes.
La métadonnée ci-dessus est tirée du catalogue de métadonnées de l'IGN, le géocatalogue : www.geocatalogue.fr
A quoi sert un SIG ?
Un SIG permet de saisir, représenter, interroger, et mettre à jour l’information géographique. Il peut notamment répondre aux questions suivantes :
- où : localisation, étendue
- quoi : quelles informations
- comment : analyse spatiale
- quand : analyse temporelle
- et si... : modélisation
Les SIG sont utilisés aujourd'hui dans des domaines très variés : géographie, géologie, écologie, urbanisme, archéologie, économie...
On peut par exemple chercher à répondre à la question : "la taille des parcelles de vignes est-elle corrélée avec la pente et l'altitude de la parcelle, sur une zone donnée?"
Les données nécessaires seront une couche contenant les parcelles de vignes, et un Modèle Numérique de Terrain (MNT) de la zone d'étude. La résolution du MNT devra être suffisante en comparaison de la taille moyenne des parcelles.
Le SIG va permettre de croiser les parcelles et le MNT pour aboutir à une couche de parcelles où seront renseignées pour chaque parcelle par exemple sa taille, sa pente moyenne, son altitude moyenne. Ces données pourront être ensuite visualisées dans le SIG, et/ou être le point de départ d'analyses statistiques dans un autre logiciel.
I.2 Manipuler de l'information géographique
- Ajout d'une couche de données vecteur
- L'interface de QGIS
- Propriétés d'une couche
- Ajout d'une couche raster
- Propriétés d'une couche raster : modifier le style
Ajout d'une couche de données vecteur
Lancez QGIS. Pour ajouter une couche vecteur, trois solutions, au choix :
- Menu couche → Ajouter une couche → Ajouter une couche vecteur...
- cliquer sur l'icône Ajouter une couche vecteur
- utiliser le raccourci clavier ctrl + majuscule + v
Type de source et encodage : laissez les valeurs par défaut. Pour en savoir plus sur ce qu'est l'encodage : http://fr.wikipedia.org/wiki/Codage_de_caractères
Cliquez sur Parcourir et sélectionnez la couche depts_aqui_geofla.shp située dans le dossier TutoQGIS_01_PriseEnMain/donnees.
Cliquez sur Ouvrir : vous pouvez voir à l'écran les départements aquitains.
L'interface de QGIS
On peut distinguer 6 zones dans QGIS :
1. Menus
2. Barres d'outils. On y trouve la même chose que dans les menus, mais sous forme d'icônes. Pour savoir que fait un outil, passez la souris au-dessus et lisez l'infobulle. Pour rajouter ou enlever des barres d'outils, clic-droit n'importe où dans cette zone sauf sur un outil désactivé, cocher ou décocher les barres d'outils voulues.
3. Liste des couches chargées, aussi appelée table des matières ou table of contents (TOC). Si plusieurs couches sont présentes, vous pouvez en modifier ici l'ordre d'affichage. Pour faire apparaître ou disparaître cette zone : menu Vue → Panneaux → Couches
4. Panneaux supplémentaires, par exemple le panneau Parcourir. Pour ajouter des panneaux, Menu Vue → Panneaux
5. Zone de visualisation. On peut zoomer ou se déplacer dans cette zone.
6. Barre d'état. On y trouve les coordonnées du point où se trouve la souris, l'échelle...
Testez les différents boutons de zoom et de déplacement.
Pouvez-vous déterminer l'effet de chacun d'entre eux? A noter : on peut aussi zoomer et dézoomer en utilisant la molette de la souris, ainsi que le trackpad.
Vous pouvez aussi vous déplacer dans la carte (équivalent de l'outil "main") en maintenant la touche espace appuyée, quelque soit l'outil en cours dans QGIS. Le même résultat est obtenu en maintenant la molette de la souris enfoncée (clic molette prolongé).
Propriétés d'une couche vecteur
Pour accéder aux propriétés de la couche, clic-droit sur le nom de la couche dans la table des matières, Propriétés (ou bien double-clic sur le nom de la couche).
Vous avez accès ici à plusieurs propriétés, notamment :
- la manière dont la couche est représentée, dans la rubrique Style. Vous pouvez par exemple changer ici la couleur des départements
- l'emplacement de la couche, dans la rubrique Général
Changer la représentation d'une couche
Dans les propriétés de la couche, rubrique Style :
Cliquez sur Remplissage simple.
1. Dans la partie Couleurs, vous pouvez modifier la couleur du fond et de la bordure des départements.
2. Vous pouvez également modifier le style de remplissage : plein, vide, hachures... ainsi que le style de la bordure : ligne continue, pas de bordure, pointillés...
3. La largeur de la bordure peut aussi être modifiée.
Essayez de donner à votre couche ces différents styles :
Connaître l'emplacement d'une couche
La couche est stockée à l'endroit indiqué dans la partie Source de la couche. Cet emplacement varie bien sûr en fonction de l'endroit où vous avez enregistré les données du tutoriel.
Ajout d'une couche raster
Comme lors de l'ajout d'une couche vecteur, vous avez plusieurs possibilités pour ajouter une couche raster :
- Menu couche → Ajouter une couche → Ajouter une couche raster...
- cliquer sur l'icône Ajouter une couche raster
- utiliser le raccourci clavier ctrl + majuscule + r
Rendez-vous dans le dossier TutoQGIS_01_PriseEnMain/donnees et sélectionnez la couche srtm_aqui.tif.
Cliquez sur Ouvrir : la couche s'affiche.
Il s'agit d'un modèle d'élévation numérique : chaque pixel possède une valeur correspondant à l'altitude en mètres des éléments présents au sol. Si une forêt est présente, ce sera donc l'altitude du sommet des arbres qui sera mesurée et non l'altitude du sol, idem si des bâtiments sont présents.
Après avoir sélectionné la couche srtm_aqui.tif en cliquant sur son nom dans la table des matières, utilisez l'outil Identifier les entités pour cliquer sur un point du raster et connaître l'altitude de ce point.
Par exemple, ici, c'est un point d'altitude 66 mètres qui a été identifié.
Propriétés d'une couche raster : modifier le style
Comme pour accéder aux propriétés d'une couche vecteur, clic-droit sur le nom de la couche dans la table des matières, Propriétés (ou bien double-clic sur le nom de la couche).
Pour une couche raster, les différentes rubriques des propriétés sont un peu différentes de celles d'une couche vecteur ; on retrouve néanmoins les rubriques Général et Style.
Rendez-vous dans la rubrique Style :
Pour ce raster, les valeurs minimum sont représentées en blanc et les valeurs maximum en noir : plus l'altitude est élevée, plus le point est foncé.
Vous pouvez modifier les valeurs minimum et maximum, et inverser les couleurs en choisissant Noir vers blanc au lieu de Blanc vers noir. Cliquez à chaque fois sur Appliquer en bas de la fenêtre pour voir le résultat de vos changements.
I.3 Formats de données SIG
Réduire la fenêtre de QGIS. Ouvrir dans l'explorateur de fichiers de votre ordinateur le dossier TutoQGIS_01_PriseEnMain/donnees
Si dans Windows, vous ne voyez pas les extensions de tous les fichiers : dans la fenêtre, Outils → Options des dossier, onglet Affichage, décocher la case "Masquer les extensions dont le type est connu".
Formats vecteur : SHP et TAB
Format Shapefile ou SHP : un "standard"
Le format shapefile a été créé par ESRI, l'auteur notamment du logiciel ArcGIS. Ce format est aujourd'hui l'un des standards du SIG et est couramment utilisé par les logiciels libres de SIG.
Un fichier SHP est en fait composé de plusieurs fichiers, dont 3 sont obligatoires :
- SHP : contient les informations spatiales
- DBF : contient les informations attributaires
- SHX : fichier d'index
Le format DBF impose certaines limitations pour les noms de colonnes : maximum 10 caractères, éviter les accents...
Un 4ème fichier est aussi bien utile :
- PRJ : contient le code du système de coordonnées et éventuellement de la projection
Pour que le shapefile s'ouvre correctement, tous ces fichiers doivent avoir exactement le même nom. QGIS peut ouvrir et éditer les fichiers SHP.
Format TAB (MapInfo)
Ce format a été créé pour le logiciel MapInfo. Comme pour le SHP, un fichier au format TAB est en fait composé de plusieurs fichiers :
- MAP : données spatiales (avec le système de coordonnées)
- DAT : données attributaires
- TAB : structure de la couche
- ID : lien entre les fichiers DAT et MAP
- IND : fichier d'indexation (facultatif)
QGIS peut ouvrir des fichiers au format TAB, mais il ne peut pas les éditer; il faudra pour cela les enregistrer au format SHP.
Un exemple de format raster : le GeoTIFF
Vous avez peut-être déjà manipulé des images au format TIF. Les TIF utilisés dans les logiciels SIG possèdent des informations en plus par rapport aux TIF "classiques" : quel type de coordonnées est utilisé, quelles sont les coordonnées de l'image... Il s'agit alors d'un cas particulier de TIF nommé GeoTIFF.
L'extension du fichier reste TIF. Cependant, chargé dans un logiciel SIG, ce TIF s'affichera directement au bon endroit.
D'autres fichiers peuvent être associés à un raster :
- QML : ce fichier facultatif sauvegarde le mode de représentation du raster : du noir vers le blanc, valeur minimum et maximum. S'il n'est pas présent, le raster s'affichera avec des paramètres par défaut. Il est propre à QGIS.
- AUX.XML : ce fichier parfois présent sauvegarde des statistiques et parfois le système de coordonnées de l'image. Il permet d'accélérer l'affichage et certains traitements. Ce fichier est également lisible par le logiciel ArcGIS.
- TFW : souvent appelé "World file", ce fichier stocke les coordonnées de l'image et la taille des pixels. Ce type de fichier existe pour plusieurs formats d'image : l'extension sera JGW pour un JPG, PGW pour un PNG etc. Ce fichier n'est pas nécessaire si les informations sont déjà contenues dans l'en-tête de l'image (ce qui est le cas pour notre GeoTIFF). Les world file sont de moins en moins utilisés dans les SIG ; ils peuvent cependant être utiles pour un logiciel non SIG ou pour un format d'image ne permettant pas le stockage d'informations de localisation dans son en-tête.
Application
I.4 Espace de travail (projet QGS)
Qu'est-ce qu'un projet dans un logiciel SIG?
Un projet est un espace de travail. Sauvegarder un projet équivaut à sauvegarder le style utilisé pour chaque couche, le zoom... mais pas les données!
Ouvrez le projet senegal.qgs situé dans le dossier TutoQGIS_01_PriseEnMain/projets. Modifiez le zoom et le style des couches.
Sauvegardez votre projet sous un nouveau nom : clic sur l'icône correspondante, ou bien Menu Projet → Sauvegarder sous...
Enregistrez votre projet dans le répertoire TutoQGIS_01_PriseEnMain/projets, sous le nom senegal_02.qgs . Cette opération crée un fichier au format QGS.
Le fichier QGS est l'équivalent du WOR sous MapInfo et du MXD sous ArcGIS.
Masquez QGIS, et ouvrez ensuite ce fichier QGS au moyen d'un éditeur de texte type bloc-notes : vous pouvez y trouver le chemin des couches chargées dans le projet, la description des couleurs utilisées... Fermez ce fichier.
Il n'est bien sûr pas utile de comprendre en détail le contenu du fichier QGS, mais il est important de noter qu'il ne s'agit que d'un fichier texte, qui va "appeler" les données. Si vous fournissez à un collègue votre seul fichier QGS, sans les données correspondantes, ce collègue ne pourra pas visualiser les données.
Comment un projet appelle-t-il les données?
Le chemin des couches peut être stocké de deux manières dans le fichier QGS :
- soit par rapport à l'emplacement du QGS
- soit "en dur", sous la forme du chemin en entier
1. Par exemple, ../donnees/senegal_regions_gadm.shp signifie qu'il faut remonter d'un dossier par rapport au dossier dans lequel est situé le projet, puis descendre dans le dossier donnees pour y trouver la couche senegal_regions.shp
2. Un exemple de chemin "en dur" : D:/Travail/SIG/TutoQGIS_01_PriseEnMain/donnees/senegal_regions_gadm.shp
Dans QGIS, par défaut les chemins sont sauvegardés en relatif, ce qui permet de transmettre à un collègue un dossier avec par exemple un sous-dossier données et un sous-dossier projets.
Si vous désirez changer ce comportement pour un projet, Menu Projet → Propriétés du projet... → rubrique Général
changez la propriété Enregistrer les chemins de relatif à absolu.
Si vous déplacez des couches et que vous ouvrez ensuite un projet QGS qui utilise ces couches, vous obtiendrez un message d'erreur : le chemin des couches a changé et ne correspond plus à ce qui est indiqué dans le QGS!
Il sera néanmoins possible de spécifier à nouveau les emplacements des couches du projet.
Il est possible de trouver sur internet des données déjà géoréférencées, c'est-à-dire possédant déjà des coordonnées, donc directement utilisables dans un SIG. Ces données peuvent être vecteur ou raster.
Dans le cas de données vecteur, le format le plus courant est sans doute le shapefile ; on trouvera aussi des données dans d'autres formats, par exemple TAB (MapInfo), GeoJSON...
Dans le cas de données raster, on pourra trouver par exemple des données au format geotiff (TIF géoréférencé, c'est-à-dire avec des coordonnées lui permettant de se superposer correctement à d'autres couches).
Parfois, on ne trouvera que des données non géoréférencées (carte papier par exemple, ou simple image trouvée sur internet). Ce cas sera traité dans la partie 4 : géoréférencement.
Données vecteur : quelques exemples
Limites administratives du Kenya
Il existe de nombreux sites permettant le téléchargement de données shapefile sur des thèmes variés. Nous allons ici supposer que vous cherchez les limites administratives d'un pays précis.
Pour cela, rendez-vous sur le site : http://www.gadm.org/
Trouvez sur ce site la rubrique téléchargement, et téléchargez les limites administratives du Kenya au format shapefile. Décompressez le fichier ZIP obtenu dans votre répertoire de travail.
Lancez QGIS si ce n'est pas déjà fait, ou bien créez un nouveau projet sans sauvegarder l'ancien.
A partir de QGIS, chargez la couche KEN_adm5.shp.
Au cas où le téléchargement échouerait, cette couche est également disponible dans le dossier TutoQGIS_03_RechercheDonnees/donnees.
Réussissez-vous à faire apparaître les grandes régions du Kenya (champ NAME_1) avec des couleurs différentes à partir de cette couche ?
Pour cela, allez dans les propriétés de la couche → rubrique Style :
- choisissez Catégorisé comme type de légende
- sélectionnez le champ de classification : NAME_1
- Palette de couleur : choisissez Couleurs au hasard dans la liste
- Cliquez ensuite sur Classer en bas à gauche de la fenêtre
Cliquez sur Appliquer pour voir les changements (ou bien cliquez sur OK pour appliquer les changements + fermer la fenêtre) : vous pouvez voir les régions du Kenya.
Vous venez de réaliser votre première analyse thématique!
Cette manip permet de représenter de la même manière tous les éléments ayant la même valeur pour un champ donné.
Cours d'eau du Kenya
De nombreuses ressources sont également disponibles sur le site de la Food and Agriculture Organisation (FAO)
Rendez-vous sur http://www.fao.org/geonetwork/
Ce site est un catalogue de métadonnées, utilisant le logiciel GeoNetwork. Il est possible d'y faire une recherche par thématique, mot clé... Certaines des données sont ensuite téléchargeables ; on y trouve aussi bien des données vecteur que des données raster.
Vous pouvez par exemple y rechercher les cours d'eau du Kenya. Choisissez le Kenya dans la liste déroulante des pays, dans la colonne gauche de la page, puis cliquez sur Hydrology and Water Resources dans la liste de catégories qui se trouve dessous.
Prenez connaissance des métadonnées de Rivers of Kenya - AFRICOVER et téléchargez ces données. Affichez ensuite la couche correspondante ke-rivers.shp dans QGIS.
Au cas où le téléchargement échouerait, cette couche est également disponible dans le dossier TutoQGIS_03_RechercheDonnees/donnees.
Vous pouvez remarquer un léger décalage entre les deux couches, visible là où les cours d'eau semblent suivre les frontières. En effet, les deux couches ne proviennent pas du même organisme et ont des niveaux de précision différents...
Données raster : quelques exemples
Les données raster seront par exemple des images satellite, des fonds de carte, des modèles numériques de terrain (MNT)...
Nous allons ici voir où trouver un modèle d'élévation pour le Kenya.
Un modèle d'élévation numérique (Digital Elevation Model ou DEM) se rapproche d'un MNT, mais il ne mesure pas l'altitude au sol mais l'altitude des éléments présents au sol. Si une forêt est présente, ce sera donc l'altitude du sommet des arbres qui sera mesurée et non l'altitude du sol, idem si des bâtiments sont présents.
On trouve sur internet deux DEM en libre accès : le modèle ASTER issu d'une collaboration NASA/METI (Ministry of Economy, Trade and Industry of Japan) et le modèle SRTM issu d'une collaboration NASA/NGA (National Geospatial-Intelligence Agency). Nous allons voir ici le cas du SRTM.
rendez-vous sur http://dwtkns.com/srtm/ et cliquez sur une des cases recouvrant le Kenya (par exemple la dalle srtm_44_12) :
Téléchargez la dalle au format GeoTIFF, dézippez ensuite le fichier obtenu.
Ajoutez le fichier TIF téléchargé au moyen de l'icône Ajouter une couche raster.
Au cas où le téléchargement échouerait, cette couche est également disponible dans le dossier TutoQGIS_03_RechercheDonnees/donnees.
Quelques sites utiles (en vrac...)
- L'annuaire de données de l'incontournable GeoRezo, portail francophone de la géomatique
http://georezo.net/annuaire/donnees-c-4.html - Natural Earth : données à l'échelle mondiale : limites administratives, hydrographie, bathymétrie, fonds de carte raster...
http://www.naturalearthdata.com/downloads/ - FAO (Food and Agriculture Organisation) : catalogue de métadonnées donnant accès à un large éventail de données vecteur ou raster, en particulier sur les pays du Sud.
http://www.fao.org/geonetwork/ - CUB (Communauté Urbaine de Bordeaux) : données thématiques sur la CUB
http://data.lacub.fr/themes.php - OpenStreetMap : extractions de données au format SHP ou OSM, fourni par Geofabrik :
http://download.geofabrik.de/openstreetmap/ - IGN : nombreuses données disponibles pour la France, certaines gratuites pour les établissements de recherche
http://professionnels.ign.fr/catalogue - THEIA : structure nationale inter-organismes ayant pour vocation de faciliter l’usage des images satellite
http://www.theia-land.fr/ - GADM : limites administratives accessibles par pays
http://www.gadm.org/ - DIVA-GIS : site du logiciel SIG libre DIVA, où sont aussi disponibles des données vecteur sur les limites administratives, l'hydrographie, le transport, la population... classées par pays
http://www.diva-gis.org/gdata - ASTER : modèle d'élévation, données mondiales téléchargeables par dalles
http://asterweb.jpl.nasa.gov/gdem.asp - SRTM : modèle d'élévation, données mondiales téléchargeables par dalles
http://dwtkns.com/srtm/ - Global Land Cover Facility : images satellites
http://glcfapp.glcf.umd.edu:8080/esdi/
III.2 Ajout de données via des flux
- Qu'est-ce qu'un flux WMS ou WFS?
- Ajout de données via un flux WMS : carte géologique
- Ajout de données via un flux WFS : cours d'eau
- Avantages et inconvénients des flux
Qu'est-ce qu'un flux WMS ou WFS?
Il est possible de visualiser directement dans un SIG des données accessibles sur un serveur, sans devoir préalablement les télécharger sur votre ordinateur. Ceci se fait via des flux. Les deux types de flux les plus courant permettant ceci sont les flux WMS (Web Map Service) et WFS (Web Feature Service).
- Les flux WMS vont vous permettre d'afficher des couches raster, non modifiables.
- Les flux WFS vous permettront d'afficher des couches vecteur, non directement modifiables mais que vous pourrez ensuite télécharger au format shapefile.
Ajout de données via un flux WMS : carte géologique
Lancez QGIS si ce n'est pas déjà fait, ou bien créez un nouveau projet.
Ajoutez-y la couche dept_creuse_geofla.shp que vous trouverez dans le dossier TutoQGIS_03_RechercheDonnees/donnees.
Donnez au projet le même SCR que la couche dept_creuse_geofla.shp.
Nous allons maintenant ajouter au projet la carte géologique de la France au 1/50 000è via un flux WMS.
Cliquez sur l'icône Ajouter une couche WMS, ou bien Menu Couche → Ajouter une couche → Ajouter une couche WMS...
Cliquez sur le bouton Nouveau pour créer une nouvelle connexion. La fenêtre suivante apparaît :
- Nom : tapez le nom de votre choix, par exemple BRGM
- URL : tapez l’URL suivante, qui correspond à l'adresse du serveur WMS du BRGM : http://geoservices.brgm.fr/geologie
Laissez les autres paramètres tels quels et cliquez sur OK. Vous voilà à nouveau dans la fenêtre d'ajout d'une couche WMS :
- Après avoir vérifié que votre connexion est bien sélectionnée dans la liste déroulante en haut de la fenêtre, cliquez sur Connexion
- Rendez-vous dans la rubrique 1 GEOLOGIE et sélectionnez la couche correspondant à la carte géologique image de la France au 1/50 000.
- Cliquer sur Modifier... en bas à droite et choisissez le SCR RGF93 / Lambert-93 (code EPSG 2154) afin que la couche ait le même SCR que notre projet
- Cliquez sur Ajouter, patientez...
Vous devriez obtenir quelque chose de similaire à ceci :
Il peut être nécessaire de changer l'ordre des couches en les faisant glisser dans la table des matières, et de modifier le style de la couche du département de la Creuse.
Ici, l'adresse du serveur WMS vous était fournie ; si vous cherchez des adresses de flux, deux solutions : une recherche internet, ou bien l'onglet Recherche de serveurs de la fenêtre d'ajout d'une couche WMS :
Dans cette fenêtre, vous pouvez taper du texte dans la partie Recherche, voir la liste des serveurs contenant ce texte, et ajouter une ligne de cette liste à la liste de vos connexions visible dans l'onglet Couche, grâce au bouton Ajoutez les lignes sélectionnées à la liste des serveurs WMS.
Ajout de données via un flux WFS : cours d'eau
Le but va être ici d'ajouter les cours d'eau de la BD Carthage du Sandre (Service d'Administration Nationale des Données et Référentiels sur l'Eau).
Cliquez sur l'icône Ajouter une couche WFS, ou bien Menu Couche → Ajouter une couche → Ajouter une couche WFS...
Cliquez sur le bouton Nouveau pour créer une nouvelle connexion. La fenêtre suivante apparaît :
- Nom : tapez le nom de votre choix, par exemple BD Carthage
- URL : tapez l’URL suivante, qui correspond à l'adresse du serveur WFS du Sandre : http://services.sandre.eaufrance.fr/geo/zonage
Laissez les autres paramètres tels quels et cliquez sur OK. Vous voilà à nouveau dans la fenêtre d'ajout d'une couche WFS :
- Après avoir vérifier que votre connexion est bien sélectionnée dans la liste déroulante en haut de la fenêtre, cliquez sur Connexion
- Sélectionnez la couche correspondant aux cours d'eau métropole de plus de 100km (CoursEau1)
- Cliquer sur Modifier... pour tenter de modifier le SCR : malheureusement, seul le WGS84 est rendu disponible par ce flux
- Cliquez sur Ajouter
Vous devriez obtenir quelque chose de similaire à ceci :
Il peut être nécessaire de changer l'ordre des couches en les faisant glisser dans la table des matières, et de modifier le style de la couche du département de la Creuse. Vu qu'il s'agit ici d'un flux WFS et non WMS, il est également possible de modifier le style des cours d'eau.
De même, s'agissant d'un flux WFS, il est possible de sauvegarder les cours d'eau au format shapefile : clic droit sur la couche, enregistrer sous...
Avantages et inconvénients des flux
Un inconvénient d'utiliser des flux est le temps de chargement et la nécessité d'avoir une connexion internet.
Cependant, ils vous assurent de toujours visualiser la dernière mise à jour des données, vous évitent d'encombrer vos ordinateurs et vous permettent de transmettre des projets QGS à des collègues en étant sûr que ceux-ci puissent en visualiser les données (s'ils sont connectés à internet).
En résumé, c'est probablement l'usage que vous ferez des données qui vous fera opter pour l'une ou l'autre solution.
III.3 Ajout de données ponctuelles à partir d'un fichier texte
- Qu'y a-t-il dans le fichier texte?
- Visualisation des données dans QGIS
- Création du shapefile de points
Nous avons vu quelques pistes pour rechercher et afficher des données au format SIG dans QGIS, que ce soit en les téléchargeant ou via des flux. Il arrive aussi de disposer d'un tableau avec deux colonnes X et Y : comment utiliser ces données dans un SIG ?
Nous prendrons ici l'exemple d'un fichier au format CSV. Pour information, il est possible de créer un fichier au format CSV à partir d'un fichier ODS (LibreOffice) ou XLS (Microsoft Office) par exemple.
Qu'y a-t-il dans le fichier texte?
Dans l'explorateur de votre ordinateur, ouvrez le fichier villes_bhutan_geonames.csv situé dans le dossier TutoQGIS_03_RechercheDonnees/donnees à l'aide d'un éditeur de texte simple (pas dans un tableur) : par exemple, WordPad dans Windows, TextEdit sous Mac, gedit sous Ubuntu.
Le format CSV est un format relativement simple : il contient des colonnes séparées habituellement par des virgules, parfois par des points-virgules, tabulations ou autre. La première ligne contient les en-têtes de colonnes.
Le fichier comporte 9 colonnes : geonamesid, name, asciiname, latitude, longitude, country code, population, dem et modification date.
La latitude de la ville de Timphu est 27.46609 (la colonne "latitude" est la 4ème colonne : la réponse se trouve donc dans la 4ème colonne de la ligne correspondant à Timphu.
En vous rendant sur http://download.geonames.org/export/dump/readme.txt dans un navigateur internet, vous pouvez lire la définition suivante pour la colonne dem (dans la partie "The main 'geoname' table has the following fields" ) : digital elevation model, srtm3 or gtopo30, average elevation of 3''x3'' (ca 90mx90m) or 30''x30'' (ca 900mx900m) area in meters, integer. srtm processed by cgiar/ciat.
Il s'agit donc de la valeur d'un modèle d'élévation numérique, correspondant approximativement à l'altitude. Différents modèles ont été utilisés, à différentes résolutions.
Fermez le fichier sans enregistrer les éventuelles modifications, quittez l'éditeur de texte.
Ce fichier contient donc une liste de villes du Bhoutan, avec pour chaque ville différentes informations telles que sa population, son élévation, sa latitude et sa longitude.
Comme précisé dans le fichier de métadonnées, les coordonnées sont mesurées en degrés décimaux dans le SCR WGS84.
Dans le cas d'un fichier avec des coordonnées en latitude et longitude et un SCR inconnu, il s'agit fréquemment de coordonnées en WGS84.
Visualisation des données dans QGIS
Ajout d'une couche avec un SCR inconnu : préparer le terrain
Dans la mesure où nous allons ajouter des données issues d'un fichier texte à QGIS, QGIS ne pourra pas lire dans quel SCR ont été mesurées ces coordonnées : ce sera à nous de le préciser au logiciel.
Lancez QGIS si ce n'est pas déjà fait, ou bien créez un nouveau projet sans sauvegarder l'ancien.
Pour être sûr que QGIS vous demande dans quel SCR sont les coordonnées du fichier texte, rendez-vous dans le menu Préférences → Options , rubrique SCR :
Pour l'option Quand une nouvelle couche est créée ou quand une couche est chargée sans SCR, choisissez l'option Demander le SCR si ce n'est pas déjà fait. Cliquez sur OK.
Visualisation des données sous QGIS
A partir de QGIS, chargez la couche ne_10m_admin_0_countries.shp située dans le dossier TutoQGIS_03_RechercheDonnees/donnees.
Cliquez sur l'icône Ajouter une couche de texte délimité, ou bien rendez-vous dans le Menu Couche → Ajouter une couche → Ajouter une couche de texte délimité
- Cliquez sur le bouton Parcourir et sélectionnez le fichier villes_bhutan_geonames.csv
- Nom de la couche : vous pouvez laisser villes_bhutan_geonames ou bien tapez le nom de votre choix
- Format de fichier : choisir CSV (virgule)
- Enregistrements : vérifiez que la case en-têtes de 1ère ligne soit bien cochée
- Définition de la géométrie : choisir point, puis les colonnes X et Y : longitude et latitude
Cliquez sur OK. Une fenêtre s'ouvre vous demandant dans quel SCR sont les coordonnées du fichier CSV : choisissez le WGS84, comme vu plus haut.
Zoomez sur la couche de points et ouvrez sa table attributaire :
Les villes ont bien été ajoutées à QGIS sous la forme d'une couche de points.
Création du shapefile de points
Regardez à quel emplacement est stockée votre couche. Vous pouvez observer que cet emplacement fait référence à un fichier CSV et non à un fichier SHP.
Par ailleurs, si vous sélectionnez la couche de villes dans la table des matières, vous pouvez constater que l'icône pour passer en mode édition est désactivée, au contraire de notre couche de pays. La couche de villes n'est donc pas éditable.
Icône édition activée : Icône édition désactivée :
Ces indices laissent à penser que bien que nous puissions visualiser les villes dans QGIS, aucun SHP n'a été créé, ce qui est d'ailleurs logique dans la mesure où QGIS ne nous a demandé à aucun moment de choisir un emplacement pour cette couche.
En fait, nous avons seulement créé une couche temporaire, uniquement stockée dans le projet QGS en cours. Comment faire pour sauvegarder cette couche?
Il suffit pour cela de faire un clic-droit sur la couche villes_bhutan_geonames, Enregistrer sous...
- Cliquez sur Parcourir pour sélectionner l'emplacement où la couche sera créée et lui donner un nom
- Cochez la case Ajouter les fichiers sauvegardés à la carte
- Laissez les autres paramètres par défaut
Cliquez sur OK ; la couche est ajoutée à QGIS, vous devez donc avoir deux couches de villes identiques au premier abord; cependant, l'une est temporaire et l'autre permanente.
Supprimez la couche temporaire pour éviter toute confusion (en vous aidant éventuellement de son emplacement pour déterminer laquelle est-ce).
En ouvrant la table attributaire de la nouvelle couche, vous pouvez constater que les noms de champs ont été tronqués à 10 caractères (« country co » au lieu de « country code » par exemple). Ceci est une limitation liée au format DBF utilisé pour les shapefile (cf. partie I.3.1a).
Félicitations ! L'ajout de données ponctuelles à partir d'un fichier texte dans QGIS n'a désormais plus de secrets pour vous !
IV. Géoréférencement
Le géoréférencement, ou calage, consiste à donner des coordonnées à une image.
Notions abordées :
- Principe du géoréférencement
- Points de calage
- Types de transformation
- Erreur Moyenne Quadratique (EMQ)
- Rééchantillonnage
- Vérification du géoréférencement
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
IV.1 Principe du géoréférencement
Qu'est-ce que le géoréférencement?
Les données SIG que nous avons utilisées jusqu'ici ont toutes des coordonnées, ce qui nous permet de les superposer correctement dans une logiciel SIG. A l'inverse, dans le cas d'une image simplement scannée, une carte ancienne par exemple, le logiciel ne possède pas d'informations de coordonnées ; il placera cette image simplement en considérant que le coin en haut à gauche a les coordonnées 0,0.
Le géoréférencement, ou calage, consiste à attribuer des coordonnées à une image. Cette image pourra ensuite être superposée à d'autres couches dans un logiciel SIG, et servir par exemple de fond de carte ou être numérisée. Le géoréférencement s'applique uniquement aux données raster (il existe d'autres méthodes pour les données vecteur qui ne seront pas abordées ici).
Lors du géoréférencement, il faudra aussi préciser dans quel SCR est notre image.
Géoréférencer par rapport à quoi? Deux méthodes
Pour donner des coordonnées à une image, il est possible de se baser soit sur des informations contenues directement dans l'image, par exemple si l'image est une carte avec un carroyage, ou soit sur une autre couche déjà existante et correctement calée (vecteur ou raster).
En se basant sur les informations contenues dans l'image
si on connaît précisément les coordonnées de quelques points sur l'image, grâce à un carroyage avec des amorces de coordonnées, on va pouvoir se servir de ces coordonnées pour géoréférencer l'image.
Il faut néanmoins connaître le système de coordonnées utilisé, ce qui peut nécessiter des recherches.
En se basant sur des informations contenues dans une autre couche
Si l'image ne possède pas d'indications de coordonnées, il va falloir utiliser une couche déjà géoréférencée possédant une zone commune avec l'image à géoréférencer. On pourra alors indiquer que tel point sur l'image correspond à tel point sur la couche déjà géoréférencée. Cette méthode sera employée pour caler des photographies aériennes par exemple.
La carte résultante aura le même système de coordonnées que la couche de référence. La précision du calage dépend alors notamment de la précision de la couche de référence.
Dans l'illustration ci-dessus, l'image de gauche est géoréférencée en utilisant le fond de carte OpenStreetMap. Des points que l'on peut facilement identifier sur les deux images (par exemple des intersections de routes) servent de points de calage.
IV.2 Géoréférencement : les préliminaires
Notre but sera ici de caler une carte de l'île d'Oahu (Hawaii) de 1902 (source : Wikimedia. Une fois cette carte calée, vous pourrez la superposer à d'autres données dans QGIS.
La première étape consiste à prendre connaissance de cette carte, et à vérifier que le module de géoréférencement de QGIS soit activé.
Découverte de l'image à caler
Où se situe l'île d'Oahu? Rendez-vous par exemple sur Wikipedia pour le savoir : http://fr.wikipedia.org/wiki/Oahu.
L'île est située approximativement aux coordonnées 21° 28' Nord et 157° 59' Ouest (SCR WGS84).
A partir de l'explorateur de fichiers de votre ordinateur, ouvrez l'image Oahu_Hawaiian_Islands_1906.jpg située dans le dossier TutoQGIS_04_Georef/donnees.
Aucune mention d'un SCR n'est faite sur cette carte. Nous pouvons néanmoins être sûr qu'il s'agit d'un système géographique (non projeté) puisque les coordonnées sont exprimées en degrés.
Connaître quel système a été utilisé ici nécessiterait des recherches, en se basant sur la date de la carte et la zone couverte. Nous allons supposer ici, pour les besoins de l'exercice, que les coordonnées sont en WGS84 (ce qui n'est évidemment pas le cas, ce système datant de 1984). Nous vérifierons que ce choix nous donne une précision acceptable.
Accéder au module de géoréférencement
Si tout va bien...
Le module de géoréférencement de QGIS est normalement accessible via le menu Raster → Géoréférencer → Géoréférencer .
Si le module n'est pas accessible...
Si vous n'avez pas accès au géoréférenceur à partir du menu raster, vérifier que l'extension est installée et activée via le menu Extension → Installer/Gérer les extensions .
Allez dans la rubrique installées pour voir la liste des extensions installées, tapez "géo" (attention, l'accent est important) dans Rechercher pour limiter les résultats, et cochez la case de l'extension Géoréférenceur GDAL.
IV.3 Points de calage : avec un carroyage
Nous allons créer ici des points de calage, c'est-à-dire attribuer leurs coordonnées à plusieurs points de l'image.
Pour ce faire, nous utiliserons la première méthode décrite dans la partie IV.1 : nous nous baserons sur le carroyage de cette carte pour créer les points de calage (la deuxième méthode sera abordée dans la partie IV.6).
Création du premier point
Lancez QGIS ou créez un nouveau projet. Il est inutile d'ajouter la carte d'Oahu à QGIS (si vous le faites néanmoins, profitez-en pour observer qu'en l'absence d'informations de localisation pour cette image, QGIS positionne son coin supérieur gauche aux coordonnées (0,0)).
Ouvrez la fenêtre du géoréférenceur : Menu Raster → Géoréférencer → Géoréférencer...
Dans cette fenêtre, ajoutez au géoréférenceur l'image à caler en cliquant sur l'icône Ouvrir un raster, ou bien menu Fichier → Ouvrir un raster .
Sélectionnez la carte de l'île d'Oahu : fichier Oahu_Hawaiian_Islands_1906.jpg.
Une fenêtre s'ouvre demandant le SCR de l'image ; puisque nous avons décidé de partir du principe que les coordonnées de cette carte était en WGS84, choisissez ce SCR .
La carte s'affiche dans la fenêtre du géoréférenceur.
Il s'agit maintenant de renseigner les coordonnées de plusieurs points, en se basant sur les indications de la carte. Vous pouvez par exemple commencez par le point en haut à gauche :
Vérifiez que l'icône Ajouter un point soit bien sélectionnée et cliquez à l'intersection des deux lignes du carroyage :
Ce point est situé aux coordonnées -158° 15' Est (longitude négative car le point est à l'ouest du méridien de Greeenwich) et 21° 40' Nord (latitude positive car le point est au Nord de l'équateur).
QGIS propose de saisir les coordonnées en degrés minutes secondes sous la forme dd mm ss.ss. Ici, nous avons juste des degrés et des minutes : le point a donc pour coordonnées -158 15 Est et 21 40 Nord.
Après avoir saisi les coordonnées, cliquez sur OK.
Le point apparaît sous forme d'une ligne dans la table des points de contrôle, sous la carte dans la fenêtre géoréférenceur :
Que signifient les différentes colonnes de cette table?
- on/off : indique si le point sera pris en compte ou non pour le géoréférencement. Permet de ne pas prendre en compte certains points qui semblent apporter trop d'erreurs, tout en les gardant en mémoire.
- id : identifiant du point. Peut aider à repérer de quel point il s'agit sur la carte, dans le fenêtre du géoréférenceur comme dans celle de QGIS.
- srcX et srcY : coordonnées du point dans l'image non géoréférencée, c'est-à-dire en considérant que le pixel en haut à gauche de l'image a pour coordonnées 0,0.
- dstX et dstY : les coordonnées que l'on souhaite faire prendre à ce point, exprimées dans le SCR choisi précédemment. Ces coordonnées sont en degrés décimaux (ici, -158°15' a été converti en -158,25 degrés décimaux).
- dX[pixels] et dY[pixels] : la différence entre les coordonnées qu'on souhaiterait voir prendre le point (dstX et dstY) et les coordonnées que prendra effectivement le point après le géoréférencement. En effet, en fonction du type de transformation choisi et du nombre de points de calage, il n'est pas toujours possible de faire coïncider exactement les points avec les coordonnées souhaitées.
- residual[pixels] : l'erreur associée à ce point, calculée à partir de dX[pixels] et dY[pixels]. Cette erreur est égale à la racine de la somme des carrés de dX[pixels] et dY[pixels], soit :
√ ( dX[pixels] ² + dY[pixels] ² )
Dans notre table, les colonnes dX[pixels], dY[pixels] et residual[pixels] ne sont pas encore remplies, car nous n'avons pas encore défini le type de transformation à effectuer lors du géoréférencement. Cette notion sera abordée dans la partie suivante. En attendant, continuons à ajouter des points de calage pour en avoir par exemple six.
Quelques astuces pour créer les points suivants
Procédez de la même manière pour rajouter 5 autres points de calage. Faites en sorte que ces points soient bien répartis sur l'image.
Pour visualiser les identifiants et/ou les coordonnées des points sur la carte du géoréférenceur : Menu Paramètres → Configurer le géoréférenceur :
Si vous faites une erreur, vous pouvez supprimer un point en cliquant sur l'icône Effacer un point, puis sur le point à effacer.
Vous pouvez également déplacer un point déjà créé en cliquant sur l'icône Deplacer les points de contrôle, puis en faisant glisser le point à déplacer.
Une fois vos points créés, vous pouvez les sauvegarder au moyen du menu Fichier → Enregistrer les points de contrôle sous... ou bien en cliquant sur l'icône correspondante.
Cette manipulation crée un fichier avec l'extension .POINTS. Par défaut, ce fichier aura le même nom et sera dans le même dossier que l'image que vous êtes en train de caler. Ces points de calage pourront être chargés dans le géoréférenceur au moyen du menu Fichier → Charger les points de contrôle .
Voici à quoi ressemble la fenêtre du géoréférenceur une fois tous les poins de calage correspondant à des intersections du carroyage renseignés :
Vous n'êtes pas obligé de renseigner autant de points ! Six suffiront pour notre calage.
Les points qui serviront à caler notre image sont maintenant créés. Comment faire pour utiliser ces points pour caler notre image ?
IV.4 Paramétrage du géoréférencement
- Type de transformation, ou comment calculer les nouvelles coordonnées des points ?
- Rééchantillonnage, ou comment calculer les valeurs des pixels ?
- Mode de compression utilisé pour la création de la nouvelle image
- Les autres paramètres
- Une fois tous les paramètres choisis...
Avant de pouvoir procéder au géoréférencement proprement dit, il va nous falloir définir plusieurs paramètres.
Ces paramètres sont accessibles dans le menu Paramètres → Paramètres de transformation ou bien en cliquant sur l'icône correspondante.
Nous allons passer en revue ces différents paramètres.
Type de transformation, ou comment calculer les nouvelles coordonnées des points ?
Qu'est-ce qu'une transformation?
Lors du calage, l'image subit une transformation, afin de faire coïncider au maximum les points de départ avec les coordonnées spécifiées par l'utilisateur. Une transformation est en fait une formule mathématique transformant les coordonnées de départ vers les coordonnées voulues.
Il existe divers types de transformations, adaptées à des usages différents. Chaque transformation, si on l'utilise avec un nombre de points de calage supérieur à son minimum, renverra une erreur correspondant à la différence entre les coordonnées "idéales" voulues par l'utilisateur et les coordonnées effectivement calculées lors de la transformation (erreur résiduelle residual[pixels] de la table des points de contrôle, voir plus haut).
Quelques types de transformations
QGIS permet les transformations suivantes :
- linéaire (2 points minimum) : type le plus simple, ne déforme pas le raster. Cette transformation est rarement suffisante pour des images scannées.
- Helmert (2 points minimum) : cas particulier de transformation polynomiale d'ordre 1.
- transformation polynomiale d'ordre 1, ou transformation affine (3 points minimum) : elle préserve la colinéarité (3 points alignés le resteront) et permet seulement changement d'échelle, translation et rotation.
- transformation polynomiale d'ordre 2 (6 points minimum) : permet une distorsion du raster.
- transformation polynomiale d'ordre 3 (10 points minimum) : le degré de distorsion possible est plus important que pour une transformation d'ordre 2.
- Thin Plate Spline (TPS) (1 point minimum) : méthode récente, permettant de prendre en compte des déformations locales. Cette transformation est utile lorsqu'on dispose d'originaux de très mauvaise qualité.
- projective (4 points minimum) : une des transformations les plus complexes, qui ne conserve pas le parallélisme. Un carré sera transformé en quadrilatère.
Choisir une transformation
Quelques éléments vous ont été donnés dans la description des types de transformation pouvant vous aider à choisir l'une ou l'autre transformation. En pratique, le choix est souvent difficile et requiert de tester plusieurs transformations et de les comparer si l'on recherche une bonne précision.
Ici, nous nous bornerons à choisir une transformation simple et rapide.
Sélectionnez la transformation polynomiale 1 dans la liste déroulante de la fenêtre de paramétrage.
Rééchantillonnage, ou comment calculer les valeurs des pixels ?
Si on utilise une transformation qui déforme le raster d'origine (transformation polynomiale d'ordre supérieur à 1, ou transformation de type Spline par exemple), la valeur (couleur) de chaque pixel du nouveau raster sera déterminée par un calcul en se basant sur le raster original.
Cette valeur sera différente selon la méthode de rééchantillonnage choisie. QGIS, comme d'autres logiciels SIG, propose trois méthodes de rééchantillonnage :
- Plus proche voisin : le nouveau pixel prend la valeur du pixel de l'ancien raster le plus proche. Cette méthode est la plus rapide, et est utilisée principalement pour des données catégorisées (occupation du sol par exemple) puisqu'elle ne crée pas de nouvelles valeurs.
- Linéaire : la valeur du nouveau pixel est déterminé à partir des valeurs des 4 pixels les plus proches. Cette méthode est utilisée pour des données continues et permet un lissage du raster.
- Cubique : la valeur du nouveau pixel est déterminée à partir des valeurs des 16 pixels les plus proches. Ceci provoque moins de distorsion géométrique de l'image mais nécessite un temps de calcul relativement long. Par ailleurs, il y a plus de possibilités d'obtenir avec cette méthode de nouvelles valeurs de pixel par rapport aux valeurs de départ.
Le choix d'une méthode de rééchantillonnage a surtout une influence dans le cas où un la taille des pixels est importante par rapport à la taille des objets qui seront étudiés sur l'image, par exemple une photo aérienne où chaque maison est constituée de seulement quelques pixels.
Dans notre cas (carte scannée avec une bonne résolution), le choix du type de rééchantillonnage influencera peu le résultat.
Ici, nous allons donc choisir la méthode la plus simple et la plus rapide : plus proche voisin.
Mode de compression utilisé pour la création de la nouvelle image
La compression permet d'obtenir un raster moins volumineux, mais peut provoquer une perte de qualité. Une image compressée peut par ailleurs être illisible par certains logiciels.
QGIS propose les méthodes suivantes :
- NONE : pas de compression
- LZW : utilisé pour les images au format GIF et TIF. Assez largement utilisé, permet une compression jusqu'au 1:10
- PACKBITS : offre une compression moindre que la méthode LZW, mais ce format est plus courant
- DEFLATE : similaire à LZW, mais principalement prise en charge par les logiciels Adobe
Notre image de base étant peu volumineuse, nous allons choisir le type NONE.
Les autres paramètres
Raster de sortie
Spécifiez ici le nom et l'emplacement de l'image géoréférencée qui sera créée, en cliquant sur l'icône à droite de la ligne Raster de sortie.
Choisissez à quel endroit vous souhaitez créer cette couche, et donnez-lui un nom, par exemple Oahu_Hawaiian_Islands_1906_pol1_wgs84.tif.
SCR cible
Comme décidé en partie IV.1, nous allons partir du principe que les coordonnées de cette carte sont exprimées dans un système proche du WGS84.
Cliquez sur l'icône à droite de la ligne SCR cible.
Choisissez le SCR WGS 84, code EPSG 4326, en vous aidant éventuellement de la partie filtre.
Cliquez sur OK.
Le SCR WGS84 (code EPSG 4326) doit normalement être sélectionné comme SCR cible :
Carte et rapport PDF
La carte PDF permettra de visualiser le décalage qu'aura subi chaque point de contrôle. Le rapport PDF comportera notamment les coordonnées et erreurs pour chaque point.
Cliquez sur les icônes à droite des lignes carte PDF et rapport PDF pour spécifier un nom (à votre convenance) et l'emplacement (par exemple dans le même dossier que l'image de départ) pour la carte et le rapport qui seront créés.
Au final, ces lignes seront remplies suivant l'emplacement et le nom que vous aurez choisi, par exemple :
Définir la résolution de la cible
Laisser cette case décochée pour que l'image créée ait la même résolution que l'image de départ.
Transparence
Employer 0 pour la transparence : cette option est utile principalement pour les photographies aériennes ou satellites et permet de ne pas visualiser les pixels noirs (bords de l'image), ce qui serait gênant dans notre cas.
Laissez cette case décochée.
Charger directement le raster dans QGIS
Charger dans QGIS lorsque terminé : cocher cette case pour que le nouveau raster soit chargé automatiquement dans QGIS une fois le géoréférencement effectué.
Une fois tous les paramètres choisis...
...Cliquez sur OK : les paramètres sont sauvegardés... Mais rien ne semble se passer. Rendez-vous dans la partie suivante pour l'étape finale !
IV.5 Lancer le géoréférencement
- Vérification avant calage : les erreurs
- Lancement du géoréférencement
- Vérification de la précision du calage
Vérification avant calage : les erreurs
Erreur par pixel
Maintenant que le type de transformation est renseignée, les erreurs pour chaque pixel ont été calculées dans la table des points de contrôle :
Comme indiqué dans la partie IV.3.1 :
- les colonnes dX[pixels] et dY[pixels] correspondent à la différence entre les coordonnées qu'on souhaiterait voir prendre le point (dstX et dstY) et les coordonnées que prendra effectivement le point après le géoréférencement. Cette valeur variera selon le type de transformation choisie.
- La colonne residual[pixels] correspond à l'erreur associée à ce point, calculée à partir de dX[pixels] et dY[pixels]. Cette erreur est égale à la racine de la somme des carrés de dX[pixels] et dY[pixels], soit :
√ ( dX[pixels] ² + dY[pixels] ² )
Classez les points par erreur décroissante, en cliquant deux fois sur l'en-tête de colonne residual[pixels].
Avez-vous dans votre table des points avec des valeurs d'erreur très importantes par rapport aux autres ? Pouvez-vous en trouver la cause ? Vous pouvez décocher les points aberrants dans la colonne on/off.
Vous ne devriez normalement pas obtenir des erreurs résiduelles supérieures à 10 ; si nécessaire, supprimez et recréez des points de calage.
Erreur globale : Erreur Quadratique Moyenne
Tout en bas de la table des points de contrôle est indiqué le type de transformation utilisée (polynomiale 1 dans notre cas) et l'erreur moyenne :
En plus de l'erreur résiduelle calculée par pixel, la transformation renvoie une erreur globale appelée Erreur Quadratique Moyenne (EMQ) ou bien Root Mean Square (RMS). Cette erreur est calculée de la manière suivante :
EMQ = √ ( ( Somme dX[pixels] ² + Somme dY[pixels] ² ) / ( nb points – nb points min ) )
Vous pouvez donc constater que si le nombre de points utilisés est égal au nombre de points minimum associé à la transformation, l'EMQ est considérée comme nulle. Une erreur nulle n'est donc pas forcément révélatrice d'un calage précis...
Vérifiez que votre EMQ soit inférieure à 5. Si les erreurs de chacun de vos points sont suffisamment faibles, comme vérifié plus haut, cela devrait être le cas.
Vérifiez ce qui se passe si vous décochez tous les points (colonne on/off) sauf trois. Cochez un quatrième point. Cochez à nouveau tous les points, sauf ceux ayant éventuellement des valeurs d'erreur aberrantes.
Lancement du géoréférencement
Pour procéder au géoréférencement proprement dit : Menu Fichier → Commencer le géoréférencement ou bien cliquez sur l'icône correspondante.
Une barre de progression d'affiche, le processus peut être relativement long, patientez...
Une fois le géoréférencement terminé, l'image calée s'affiche dans QGIS (en plus de s'afficher dans la fenêtre du géoréférenceur).
Fermez la fenêtre du géoréférenceur.
Vérification de la précision du calage
Lecture de la carte et du rapport PDF
Ouvrez tout d'abord la carte PDF, qui se situe à l'emplacement que vous avez choisi précédemment.
Cette carte montre le déplacement des différents points de calage. Attention, ce déplacement n'est pas représenté à l'échelle de l'image, mais selon une échelle en pixels située en bas à gauche de l'image.
Par exemple, le point 0 en haut à gauche s'est déplacé d'environ 2 ou 3 pixels vers le bas et un peu moins d'un pixel vers la gauche. Vous pouvez constater que cette information coïncide avec celle de la table des points :
En effet, les informations des cases dX[pixels] et dY[pixels] indiquent un déplacement de 2,77 pixels en Y (vers le bas) et -0,82 pixels en Y (vers la gauche). Ces chiffres seront différents dans votre cas, mais ils seront cohérents avec votre carte PDF.
Le rapport PDF contient les mêmes informations que la carte PDF, présentées de manière légèrement différente.
Vérification par superposition d'une autre couche
Une bonne manière de vérifier l'exactitude du géoréférencement est de superposer notre couche calée à une couche déjà correctement géoréférencée.
Ici, nous allons utiliser la couche de pays de NaturalEarth.
Si ce n'est pas déjà fait, ajoutez à QGIS votre carte calée de l'île d'Oahu.
Ajoutez ensuite la couche shapefile ne_10m_admin_0_countries, disponible dans le dossier TutoQGIS_04_Georef/donnees.
Les deux couches doivent normalement se superposer (ajustez éventuellement le style de la couche de pays).
Félicitations, votre géoréférencement a fonctionné ! Vous pouvez si vous le voulez découvrir l'autre méthode pour géoréférencer, en se basant sur une couche déjà calée, dans la partie suivante.
IV.6 Points de calage : en se basant sur une couche de référence
- Installation de l'extension OpenLayers
- Ajout des données OpenStreetMap
- Création des points de calage
Comme expliqué dans la partie IV.1.2, il est également possible de se baser sur une couche de référence pour géoréférencer une image.
La manipulation sera la même que décrite dans les précédentes parties, sauf en ce qui concerne la création des points de calage. Seule cette partie sera donc décrite ici.
L'image que nous allons caler est une carte de Doncaster East, dans la banlieue de Melbourne (source : Wikimedia).
Pour caler cette carte, nous allons nous baser sur les données OpenStreetMap. OpenStreetMap est une base de données cartographique libre ; on décrit souvent ce projet comme un "wikipedia cartographique".
Installation de l'extension OpenLayers
Accéder aux données OpenStreetMap dans QGIS requiert l'utilisation d'une extension nommée OpenLayers. Cette extension permet également d'afficher les données Google Maps, Bing, Yahoo...
Ouvrez tout d'abord un nouveau projet QGIS.
Pour installer OpenLayers : Menu Extension → Installer/Gérer les extensions : la fenêtre du gestionnaire d'extensions s'ouvre.
Dans la rubrique Tout, tapez « openlayers » dans la partie Rechercher pour limiter les résultats, sélectionner OpenLayers Plugin puis cliquez sur Installer l'extension en bas à droite de la fenêtre.
Fermez la fenêtre du gestionnaire d'extensions.
Le menu OpenLayers est maintenant visible dans le menu Internet (avant la version 2.6 de QGIS, vous la trouverez dans le menu Extension). Nous n'allons pas utiliser tout de suite cette extension.
L'affichage de données OpenLayers se fait plus facilement lorsque vous avez déjà zoomé sur une zone suffisamment petite dans QGIS. Avant d'ajouter les données OpenStreetMap, nous allons donc zoomer sur notre zone, Doncaster East.
Ajout des données OpenStreetMap
Ajoutez tout d'abord la couche ne_10m_admin_0_countries, située dans le dossier TutoQGIS_04_Georef/donnees.
Comme vous pouvez le voir dans le coin en bas à droite de la fenêtre, ou bien menu Projet, propriétés du projet, le projet est en WGS84 EPSG:4326 (cf. partie II.3.1).
Zoomez sur l'Australie, et plus particulièrement sur la zone de Melbourne :
Ajoutez maintenant les données OpenStreetMap : menu Extension → OpenLayers Plugin → Add OpenStreetMap Layer .
Zoomez éventuellement un peu, et si ce n'est pas déjà le cas passez la couche de pays par-dessus la couche OSM :
Le projet est maintenant en WGS84 projection Pseudo Mercator, EPSG:3857.
A l'ajout de données de l'extension OpenLayers, le SCR du projet est automatiquement modifié en WGS84 Pseudo-Mercator, qui est le SCR utilisé notamment par Google Maps.
Il est toujours possible de modifier à nouveau le SCR du projet ; cependant, tant que des données OpenLayers sont affichées, cela pourrait donner lieu à des bugs d'affichage. Pour la suite des opérations, nous travaillerons donc uniquement en Pseudo-Mercator.
Zoomez maintenant sur Doncaster East (pour vous aider : carte OpenStreetMap de Doncaster Est).
Nous allons maintenant pouvoir procéder à la création des points de calage.
Création des points de calage
Ouvrez la fenêtre du géoréférenceur et ajoutez l'image à caler : Doncaster_east_locality_map.PNG située dans le dossier TutoQGIS_04_Georef/donnees (si nécessaire, aidez-vous pour cela du début de la partie IV.3.1).
Lorsque QGIS vous demande dans quel SCR est cette image, choisissez le WGS84 / Pseudo-Mercator EPSG:3857.
Cliquez sur une intersection de routes, par exemple entre Reynolds Road et Blackburn Road. La fenêtre de saisie des coordonnées apparaît : cliquez sur le bouton Depuis le canevas de la carte.
Dans la fenêtre de QGIS, cliquez sur cette intersection sur les données OSM : les coordonnées de la fenêtre de saisie sont automatiquement remplies avec les coordonnées du point sur lequel vous venez de cliquer.
Cliquez sur OK.
Procédez de la même manière pour obtenir au moins six points de calage.
Ensuite, choisissez les paramètres du géoréférencement (cf. partie IV.4) : vous pouvez choisir les mêmes que précédemment, mais n'oubliez pas de sélectionner le SCR WGS84 Pseudo-Mercator EPSG:3857 au lieu du WGS84 EPSG:4326.
Lancez le calage (cf. partie IV.5).
Une fois le calage terminé, vous pouvez en vérifier la précision en donnant de la transparence à votre image calée (dans les propriétés de la couche, rubrique Transparence) :
L'image est calée, son SCR est WGS84 Pseudo-Mercator (vous pouvez le vérifier en allant dans les propriétés de la couche, rubrique Général). Si vous désirez modifier le SCR de cette couche, comme indiqué dans la partie II.4.2, clic-droit sur le nom de la couche, Enregistrer sous...
V. Numérisation
La numérisation consiste à « dessiner » par exemple les contours de parcelles en se basant sur une couche déjà existante, ordinairement un raster. On obtient ainsi une couche vecteur, plus facilement exploitable. Le principe est le même que lorsqu'on superpose une feuille de papier calque à une carte pour y dessiner les éléments qui nous intéressent. Il est ensuite possible de lier des données attributaires à cette couche.
Dans ce chapitre, nous allons numériser des données de la carte de l'île d'Oahu (Hawaii) de 1902 (source : Wikimedia ) géoréférencée dans le chapitre précédent. Si vous ne l'avez pas géoréférencée, pas de problème : elle est inclue dans les données du chapitre.
Notions abordées :
- Création d'une couche vide
- Numérisation de points, lignes et polygones
- Remplir les données attributaires
- Notions de topologie
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
V.1 Création d'une couche vide
- Choix du type (point, ligne, polygone) et du SCR
- Définition des colonnes de la table attributaire
- Enregistrement de la couche
Le but va être ici de créer une couche de points qui contiendra les écoles et les postes de l'île d'Oahu, qui sont représentées dans la carte sous forme de points bleus ou rouges :
Choix du type (point, ligne, polygone) et du SCR
La première étape consiste à créer une couche vierge, qui accueillera les données que nous allons créer.
Dans QGIS, ouvrez un nouveau projet
Rendez-vous dans le Menu Couche → Nouveau → Nouvelle couche shapefile... ou bien cliquez sur l'icône correspondante (vous pouvez aussi utiliser le raccourci clavier Ctrl+Maj+N).
La fenêtre suivante apparaît :
- Type : choisir Point
- SCR : afin que cette couche soit dans le même système que la carte, vérifier que le SCR soit bien le WGS84
Ne cliquez pas encore sur OK...
Définition des colonnes de la table attributaire
Vous pouvez ensuite choisir les champs que contiendra la table attributaire, c'est-à-dire les colonnes de la table. Trois types de champs sont possibles : texte, entier et décimal (nombre à virgule).
Ici, nous allons créer une couche avec un seul champ dans la table, qui renseignera le type de bâtiment (ce champ aura donc deux valeurs possibles : école ou poste).
Il sera toujours possible d'ajouter ou de supprimer des champs par la suite !
Ajout d'une colonne
Pour ajouter une colonne :
- Nom : ce sera le nom de la colonne, tapez par exemple type
- Type : le type de données que contiendra la champ. Ici, données texte permettra de taper du texte dans cette colonne
- Largeur : pour un champ de type texte, ceci correspond au nombre maximum de caractères que pourra contenir le champ. Les mot "école" et "poste" comportent tous deux 5 caractères : une largeur de 5 suffirait ici. Pour avoir un peu de marge (supposons que l'on veuille par la suite ajouter un 3ème type de bâtiment), choisissons une largeur de 10.
Cliquez ensuite sur le bouton Ajouter à la liste d'attributs pour créer ce champ.
Suppression d'une colonne
Nous allons supprimer le champ id créé par défaut. Pour cela, sélectionnez la ligne du champ id et cliquez sur le bouton Supprimer l'attribut.
Terminez en cliquant sur le bouton OK pour valider vos choix.
Enregistrement de la couche
Dans la fenêtre qui apparaît alors, choisissez :
- l'emplacement (par exemple dossier TutoQGIS_05_Numerisation/donnees)
- et le nom : batiments_oahu (dans tous les cas le nom de doit comporter que des lettres non accentuées, des chiffres ou le caractère _ )
Cliquez sur Enregistrer pour créer la couche. Elle est automatiquement ajoutée à QGIS.
Vous pouvez vérifier son SCR (propriétés de la couche, rubrique Général) :
Vous pouvez également ouvrir sa table attributaire, qui ne doit contenir qu'une seule colonne nommée type et aucune ligne.
Pour ajouter maintenant des données à cette couche, rendez-vous au chapitre suivant...
V.2 Ajout de points dans une couche
Nous allons ajouter à la couche créée dans le chapitre précédent les points correspondant aux postes et aux école de la carte de l'île d'Oahu.
Créez un nouveau projet QGIS, et ajoutez-y :
- la carte géoréférencée Oahu_Hawaiian_Islands_1906_wgs84.tif située dans le dossier TutoQGIS_05_Numerisation/donnees
- la couche vide créée dans le chapitre précédent : batiments_oahu.shp
Rendre une couche éditable
Par défaut, toutes les couches ajoutées dans QGIS sont « verrouillées » donc non modifiables (modifier la couleur, le style ne modifie pas les données mais seulement leur représentation).
Pour rendre une couche éditable, que ce soit pour modifier les données de la table attributaire ou la géométrie d'un élément, il faut donc passer en mode édition. Nous allons faire cette manipulation pour la couche batiments_oahu afin de pouvoir y ajouter des points.
Vérifiez tout d'abord que votre couche de bâtiments soit au-dessus de la carte.
Pour passer en mode édition : Clic droit sur le nom de la couche → Basculer en mode édition
ou bien :
sélectionnez la couche dans la table des matières puis cliquez sur l'icône Basculer en mode édition
ou encore :
sélectionnez la couche dans la table des matières puis Menu Couche → Basculer en mode édition .
Certains outils de la barre d'outil d'édition deviennent actifs, et dans la table des matières un symbole de crayon apparaît à gauche du nom de la couche :
La couche est maintenant modifiable.
Dans QGIS, le passage en mode édition est géré « par couches » : certaines couches peuvent être éditables et d'autres non. Il est facile de voir dans la tables des matières quelle couche est éditable.
De manière générale, il vaut mieux quitter le mode édition dès que vous n'en avez plus besoin, et limiter le nombre de couches éditables.
Les couches raster ne sont jamais modifiables : si vous sélectionnez la carte de l'île d'Oahu, le passage en mode édition n'est pas possible pour cette couche.
Ajout d'un point
Commencez par repérer une école ou une poste, représentées respectivement par un point bleu ou rouge, par exemple la poste de la baie de Kaneohe :
Assurez-vous que votre couche de bâtiments soit bien sélectionnée dans la table des matières, puis cliquez sur l'icône Ajouter une entité.
Cliquez sur l'école ou la poste que vous avez choisie; une fenêtre s'ouvre vous demandant de renseigner les attributs pour ce point (un seul attribut dans notre cas). Renseignez le type de bâtiment et cliquez sur OK.
Si cette fenêtre ne s'ouvre pas, menu Préférences → Options → rubrique Numérisation : décochez la case « Supprimer la fenêtre de saisie des attributs lors de la création de chaque nouvelle entité » (tout en haut).
Le point s'affiche sur la carte, avec le style de la couche (ici un rond turquoise) :
Si vous ouvrez la table attributaire de la couche, vous pouvez voir une ligne correspondant au point que vous venez de créer.
Ajoutez d'autres points pour les écoles et postes de l'île.
N'oubliez pas de sauvegarder vos modifications en sélectionnant la couche puis en cliquant sur l’icône sauvegarder les modifications.
Vous pouvez modifier le style des points dans les propriétés de la couche, rubrique Style (cf.partie partie I.2.3a).
Choisissez le style catégorisé sur la colonne type, cliquez sur classer puis double cliquez sur chacun des symboles pour les modifier à votre convenance. Le troisième symbole sera utilisé si certains points ne sont ni des écoles ni des postes. Cliquez sur OK pour valider et fermer la fenêtre.
Modification d'un point
Il peut arriver bien sûr de vouloir modifier un point déjà existant, soit que vous vouliez le déplacer, soit que vous souhaitiez modifier ses données attributaires.
Déplacement
Imaginons qu'un de vos points soit mal placé et que vous vouliez le déplacer.
La couche doit être en mode édition.
Sélectionnez votre couche de bâtiments dans la table des matières, puis cliquez sur l'icône Déplacer une entité.
Le curseur prend la forme d'une croix blanche. Cliquez sur le point à déplacer, et faites-le glisser en maintenant le bouton de la souris enfoncé. Relâchez le bouton de la souris une fois le point à l'emplacement de votre choix.
Modification des données attributaires
Que faire dans le cas où vous voulez modifier les données attributaires d'un point, par exemple le passer de poste à école?
La couche doit être en mode édition.
Ouvrez la table attributaire de la couche.
Double-cliquez sur la case de la table à modifier. Vous pouvez ensuite modifier le texte de cette case.
Quitter le mode édition
Une fois vos ajouts et modifications terminées, il est important de quitter le mode édition, pour plusieurs raisons :
- éviter de faire de modifications par erreur
- sauvegarder les modifications effectuées
- certains outils SIG ne peuvent fonctionner sur une couche en cours d'édition
Sélectionnez votre couche dans la table des matières et cliquez sur l'icône basculer en mode édition.
Une fenêtre apparaît vous demander si vous souhaitez :
- Fermer sans enregistrer : quitte le mode édition sans sauvegarder vos modifications
- Annuler : ne quitte pas le mode édition
- Enregistrer : quitte le mode édition en enregistrant vos modifications.
Cliquez sur Enregistrer.
L'icône de crayon à côté de nom de la couche disparaît :
V.3 Saisie des données attributaires : en savoir plus
- Saisir les données : à la création de l'entité ou dans la table
- Pour une saisie plus facile : les outils d'édition
Cette partie est tout à fait optionnelle pour suivre la suite du chapitre. Elle pourra néanmoins vous faire gagner du temps si vous vous apprêtez à saisir des données sous QGIS...
Saisir les données : à la création de l'entité ou dans la table
Vous avez remarqué que la saisie des données attributaires se fait dans une fenêtre qui apparaît directement après avoir créé une entité.
Il est possible de modifier ce comportement :
Rendez-vous dans le menu Menu Préférences → Options :
Dans la rubrique Numérisation, cochez la case Supprimer la fenêtre de saisie des attributs lors de la création de chaque entité. Cliquez sur OK pour valider et fermer la fenêtre.
Créez un nouveau point dans la couche de bâtiments : aucune fenêtre ne s'affiche. Si vous ouvrez la table attributaire, vous pouvez voir que le point créé a un type NULL (valeur par défaut).
Il est ensuite possible de rentrer les données attributaires directement dans la table. La calculatrice de champ offre la possibilité de remplir plusieurs cases avec une requête (cf. partie VII.3).
Pour une saisie plus facile : les outils d'édition
Il est possible de définir des règles pour la saisie d'attributs : vous pouvez par exemple saisir vos données en choisissant une valeur dans une liste déroulante.
Ouvrez les propriétés de la couche batiments_oahu créée en V.1 , rubrique Champs.
Cliquez sur Edition de texte.
Cette fenêtre propose différents outils pour faciliter la saisie. Le mode Edition de texte est le mode par défaut que vous avez utilisé jusqu'ici.
Par exemple, il est possible de faciliter la saisie de date à l'aide d'un calendrier, de voir un champ sous forme de case à cocher, de créer des listes déroulantes...
Sans passer en revue tous les outils possibles, nous nous bornerons à créer une liste déroulante avec les deux valeurs « ecole » et « poste » .
Cliquez sur Liste de valeurs dans la colonne de gauche.
Ajoutez les valeurs ecole et poste dans la colonne Valeur du tableau (vous pouvez laisser la colonne Description vide).
Cliquez sur OK.
Passez en mode édition si ce n'est pas déjà fait. Ouvrez la table attributaire.
Double-cliquez dans une case : une liste déroulante avec les deux valeurs poste et école apparaît.
Notez que cette liste déroulante sera également utilisable dans la fenêtre de saisie des attributs, si la case Supprimer les fenêtres d'avertissement lors de la création de chaque entité des options de numérisation est décochée (cf. plus haut).
Pour en savoir plus, les différents outils d'édition sont décrits dans le manuel QGIS.
V.4 Numériser des lignes
Nous avons vu précédemment comment numériser des points. Comment procéder quand le but est de numériser des lignes ? Nous allons numériser des fleuves de la carte de l'île d'Oahu.
Création d'une couche de lignes
Reportez-vous à la partie V.1 pour créer une couche de ligne, en choisissant cette fois :
- le type ligne
- un seul champ de type texte, de longueur 80, nommé nom (il contiendra le nom des fleuves)
- nommez cette couche fleuves_oahu.
Vérifiez que cette couche soit bien chargée dans votre projet, ainsi que la carte Oahu_Hawaiian_Islands_1906_wgs84.tif
Ajout d'une ligne
Première ligne
Zoomez sur un fleuve, par exemple dans le nord est de l'île, dans la région de Makaha :
Passez en mode édition pour votre couche de fleuves.
Cliquez sur l'icône Ajouter une entité (vous remarquerez que cette icône varie en fonction du type de la couche éditée, point, ligne ou polygone).
Cliquez sur le début du fleuve pour créer un premier sommet, puis rajoutez d'autres points à votre ligne. Pour terminer, faites un clic-droit n'importe où.
Quelques astuces
- Si pendant la numérisation vous avez des difficultés à voir votre ligne : menu Préférences, Options, rubrique Numérisation : réglez l'épaisseur de la ligne, par exemple 2, et la couleur. Pour la couleur , n'oubliez pas de mettre le cana alpha, c'est-à-dire la transparence, à 255 pour éliminer toute transparence (une fois la ligne terminée, elle prend le style spécifiée dans les propriétés de la couche)
- Supprimer le dernier point créé : touche suppr ou retour arrière (backspace)
- Se déplacer tout en numérisant : utilisez les flèches du clavier, ou bien maintenez la molette de la souris ou la touche espace enfoncée et bougez la souris
- Abandonner la ligne en cours : terminez-la avec un clic droit, puis si les fenêtres de saisie d'attributs sont activées cliquez sur annuler, sinon utilisez ctrl + z
Modification du tracé d'une ligne
Il est possible de modifier le tracé d'une ligne existante en déplaçant des sommets, en en rajoutant ou supprimant.
Vérifiez que vous êtes bien en mode édition pour la couche de fleuves. Sélectionnez-la dans la table des matières, puis cliquez sur l'icône Outil de nœud.
Cliquez sur une ligne existante : les sommets prennent la forme de carrés rouges.
Si vous cliquez sur un sommet, il est sélectionné et devient bleu. Vous pouvez grâce à l'outil de nœud :
- déplacer un sommet en le faisant glisser
- supprimer un sommet : cliquez dessus pour le sélectionner, puis appuyez sur la touche suppr
- rajouter un sommet : double-cliquez sur la ligne à l'endroit où vous voulez créer un sommet. Vous pouvez ensuite déplacer ce nouveau sommet.
Une fois vos modifications terminées, n'oubliez pas de quitter le mode édition en enregistrant vos modifications.
V.5 Numériser des polygones
- Création d'une couche de polygones
- Ajout d'un polygone
- Découpage d'un polygone
- Frontière commune entre 2 polygones : comment est-elle gérée ?
- Ajout d'un élément en s'appuyant sur un autre : l'accrochage
- Éviter les intersections entre polygones jointifs
Pour numériser des polygones, les choses se compliquent un peu... Nous n'allons pas ici numériser toutes les zones de l'île, mais passer en revue quelques techniques d'édition de polygones au moyen de quelques exemples.
Création d'une couche de polygones
Reportez-vous à la partie V.1 pour créer une couche de polygones, en choisissant cette fois :
- le type polygone
- deux champs de type texte, de longueur 80, nommés type1 et type2 (ils contiendront les types de zone, tels qu'indiqués dans la légende)
- nommez cette couche zones_oahu.
Vérifiez que cette couche soit bien chargée dans votre projet, ainsi que la carte Oahu_Hawaiian_Islands_1906_wgs84.tif
Ajout d'un polygone
Nous allons commencer par numériser la réserve forestière de l'île :
Passez en mode édition pour votre couche de polygones. Zoomez sur la réserve forestière.
Cliquez sur l'icône Ajouter une entité qui a pris la forme d'un polygone.
Cliquez sur un point du polygone, puis ajoutez d'autres sommets comme pour une ligne. La forme du polygone évolue au fur et à mesure.
Lorsque le polygone est complet, faites un clic droit n'importe où pour le terminer. Il est inutile de cliquer à nouveau sur le premier sommet !
Vous pouvez maintenant remplir les données attributaires pour ce polygone, par exemple en donnant la valeur "Forest Reserves" en type1, et aucune valeur en type2.
Découpage d'un polygone
La partie Nord de notre réserve est occupée par des terres publiques (Public Lands) puis par une réserve fédérale (Federal Reservation). Comment diviser notre polygone pour faire apparaître ces zones ?
Vérifiez que la barre d'outils Numérisation avancée soit activée : Numérisation avancée doit être cochée dans le Menu Vue → Barres d'outils .
Dans la barre d'outils Numérisation avancée, cliquez sur l'icône Séparer les entités.
Cliquez à l'extérieur du polygone, puis de l'autre côté du polygone en suivant la ligne selon laquelle le découper. Terminez par un clic droit n'importe où. Il est possible de créer des points à l'intérieur du polygone mais il faut terminer par un point à l'extérieur du polygone.
Procédez de la même manière pour découper la bande de terrain public de Waimano, et la petite langue de terre de Aiea.
Frontière commune entre 2 polygones : comment est-elle gérée ?
A l'aide l'outil de nœud (cf. partie V.4.3), déplacez un sommet de la petite langue de terre d'Aiea.
A l'aide de l'outil de sélection, sélectionnez successivement le polygone d'Aiea, et celui qui l'entoure.
Les deux polygones ne sont plus jointifs. Le déplacement d'un sommet d'un des polygones n'a pas eu d'effet sur le sommet correspondant du deuxième polygone.
Rendez-vous maintenant dans le Menu Préférences → Options d'accrochage et cochez la case Activer l'édition topologique en bas à gauche de la fenêtre.
Déplacez à nouveau un sommet d'un des polygones et sélectionnez successivement les deux polygones.
Les deux polygones sont toujours jointifs. Le déplacement d'un sommet d'un des polygones a provoqué le déplacement du sommet correspondant du deuxième polygone.
Ajout d'un élément en s'appuyant sur un autre : l'accrochage
Pour rajouter un élément qui en touche un autre, il est possible de s'aimanter sur les sommets ou les segments de l'élément déjà existant. Cette propriété n'est bien sûr pas propre seulement aux couches de polygones mais fonctionne aussi pour les couches de lignes et de points.
Ceci permet de faire en sorte que deux polygones soient parfaitement contigus, sans aucun trou ou superposition.
Par exemple, comment faire pour rajouter la partie Ouest de la bande de Waimano en s'aimantant aux polygones déjà existants ?
Rendez-vous dans le Menu Préférences → Options d'accrochage :
Cette fenêtre permet de définir à quelle(s) couche(s) le curseur sera aimanté, s'il sera aimanté uniquement par les sommets ou également par les segments, et à quelle distance d'un sommet ou segment l'aimantage prend effet.
Par exemple, pour être automatiquement aimanté à votre couche de polygone dès que votre curseur approche à moins de 10 pixels d'un sommet de cette couche, en mode d'accrochage avancé, cochez la case de zones_oahu, choisissez le mode sur un sommet et fixez la tolérance à 10 pixels.
Cliquez sur l'icône Ajouter une entité, et approchez-vous d'un sommet d'un polygone déjà créé : votre curseur est aimanté par ce sommet, qui apparaît alors en rose.
Profitez-en pour numériser la partie Est de la bande d'Aiea, de manière à ce que les deux parties soient parfaitement jointives.
Éviter les intersections entre polygones jointifs
L'accrochage est une propriété pratique pour quelques sommets, mais si vous souhaitez créer un polygone contigu à une autre sur une longue portion (par exemple le polygone en pointillés bleus sur la carte), cela peut être fastidieux de cliquer un à un sur tous les sommets communs.
Pour éviter cela, rendez-vous à nouveau dans le menu Préférences → Options d'accrochage et cochez la case Éviter les intersections pour la couche zones_oahu.
Cliquez sur l'icône Ajouter une entité, et dessinez un par exemple le polygone en pointillés bleu correspondant à la surface des terres forestières qui ne sont pas en réserve. Ce polygone est contigu sur une longue portion à des polygones que vous avez déjà créés : ne suivez pas les bords pour cette partie mais contentez-vous de passer au milieu des polygones déjà existants.
Faites un clic droit pour terminer le polygone : les parties du polygone que vous venez de dessiner qui étaient superposées à des polygones déjà existants ont été automatiquement supprimées.
V.6 Quelques notions de topologie
- Qu'est-ce que la topologie ?
- Pour aller plus loin : comment vérifier la topologie d'une couche ?
- Corriger les erreurs de topologie : quelques pistes
Au cours de la dernière partie notamment, nous avons vu comment éviter que deux polygones soient "presque" jointifs, au moyen de propriétés telles que l'accrochage, ou par l'utilisation d'outils de découpage par exemple. Nous avons également vu comment utiliser le mode d'édition topologique de QGIS.
Nous allons ici en apprendre un peu plus sur ce qu'est la topologie, et comment vérifier la topologie d'une couche.
Qu'est-ce que la topologie ?
Définition et exemples
La topologie est la « partie de la géométrie qui considère uniquement les relations de position » (Aur.-Weil 1981).
En géomatique, la topologie est utilisée pour décrire les relations entre les géométries des entités. Des règles de topologie peuvent être définies, et les erreurs de topologie détectées.
Par exemple, on peut décider qu'il ne doit y avoir aucune superposition de polygones dans une couche :
Ou bien qu'il ne doit pas y avoir de trous entre les polygones :
Les règles de topologie peuvent aussi mettre en jeu plusieurs couches. Par exemple, tous les points d'une couche doivent être dans un polygone d'une autre couche :
Il est bien sûr possible de combiner plusieurs règles. Vous trouverez dans le manuel de QGIS la description d'un certain nombre de règles de topologie.
Pour en savoir plus, vous pouvez également consulter cet article du portail SIG.
Pourquoi faire attention à la topologie ?
Ne pas respecter les règles de topologie peut poser des problèmes lors de l'utilisation d'outils d'analyse spatiale, qui donneront alors des résultats inattendus.
Pour aller plus loin : comment vérifier la topologie d'une couche ?
Cette partie est pour « aller un peu plus loin » : vous pouvez donc passer directement à la partie suivante si vous le désirez !
Vérification simple
Pour vérifier rapidement la topologie d'une couche, rendez-vous dans le menu Vecteur → Outils de géométrie → Vérifier la validité de la géométrie :
Sélectionnez la couche zones_oahu et cliquez sur OK : les éventuelles erreurs sont listées, un double clic sur une erreur zoome dessus.
Utilisation du vérificateur de topologie
Le vérificateur de topologie est un outil plus perfectionné qui permet de spécifier un certains nombre de règles, et de de voir les erreurs à ces règles.
Pour accéder au vérificateur de topologie : menu Vecteur → Vérificateur de topologie → Vérificateur de topologie :
Cliquez sur le bouton Configuration pour ajouter ou supprimer des règles de topologie. Nous allons ajouter une règle pour interdire les superpositions de polygones dans la couche zones_oahu.
Sélectionnez la couche zones_oahu dans la liste déroulante, puis la propriété must not overlap et cliquez enfin sur le bouton Ajouter une règle. Cliquez sur OK.
Pour visualiser les erreurs à cette règle, cliquez sur le bouton Valider tout du vérificateur de topologie.
La liste des éventuelles erreurs apparaît ; il est possible de zoomer sur une erreur en double-cliquant sur la ligne correspondante.
Corriger les erreurs de topologie : quelques pistes
Pour corriger les erreurs de topologie d'une couche, vous pouvez procéder « à la main » , en corrigeant les erreurs une à une avec les outils d'édition de QGIS. Cliquer sur la ligne correspondant à une erreur dans le vérificateur de topologie zoome sur cette erreur.
Si vous avez un grand nombre d'erreurs à corriger, vous pouvez aussi utiliser des outils de correction automatique, notamment ceux de grass. Ces outils sont disponibles dans QGIS via la boîte à outils du menu Traitements . Tapez clean dans le filtre pour accéder à l'outil v.clean.
En double-cliquant sur cet outil, une aide est accessible dans l'onglet Help, ou bien ici : https://grass.osgeo.org/grass70/manuals/v.clean.html. Regardez également ici pour plus de documentation.
VI. Sélectionner des données : les requêtes
A partir d'une couche vecteur, il est possible de sélectionner des éléments répondant à un ou plusieurs critères, en se basant sur les données contenues dans la table attributaire ou bien sur la position de ces éléments.
Vous pouvez ainsi sélectionner par exemple des communes dans la population est supérieure à 10 000 habitants, ou les communes à l'intérieur d'un département...
Ceci vous permet par exemple de compter le nombre d'éléments répondant à vos critères, ou bien de créer une nouvelle couche à partir de votre sélection, pour y réaliser ensuite d'autres traitements.
Notions abordées :
- Requêtes attributaires
- Requêtes spatiales
- Opérateurs
- Fonctions
- Utiliser une sous-sélection
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
VI.1 Sélectionner des éléments en fonction de leurs données attributaires : requêtes attributaires
- Faire une requête simple
- Créer une nouvelle couche à partir d'une sélection
- Quelques opérateurs
- Combiner plusieurs critères
- Quelques exemples à tester
Nous allons voir ici comment utiliser les données de la table attributaire pour sélectionner des éléments d'une couche, par exemple comment sélectionner les départements dans le nom commence par « A » .
Beaucoup d'opérateurs sont disponibles pour les requêtes attributaires; nous ne les passerons pas tous en revue mais allons simplement utiliser quelques uns des plus courants.
Pour une description de tous les opérateurs et fonctions possibles : voir le manuel de QGIS (cette partie correspond à la calculatrice de champ mais est valable également pour les requêtes attributaires).
Faire une requête simple
Ajoutez la couche departements située dans le dossier TutoQGIS_06_Requetes/donnees.
Ouvrez la table attributaire de cette couche.
Pour sélectionner le département du Nord (59), vous pouvez cliquez sur le numéro de la ligne correspondante ou bien directement sur ce département sur la carte. Vous pouvez aussi utiliser une requête attributaire.
Dans la barre d'outils située en haut de la table attributaire, cliquez sur l'icône Sélectionne les entités en utilisant une expression.
Cette icône est aussi accessible dans la barre d'outils attributs, à condition que vous ayez au préalable sélectionné la couche dans la table des matières.
La fenêtre de requête attributaire s'ouvre :
Pour faire une requête simple, par exemple pour sélectionner le département du Nord :
- Cliquez sur Champs et valeurs dans la colonne du milieu : la liste des champs de la table apparaît
- Double-cliquez sur le champ NOM_DEPT pour le faire apparaître dans la case Expression à gauche de la fenêtre (notez les guillemets doubles)
- Cliquez sur l'opérateur =
- Cliquez sur le bouton Toutes pour voir dans la case Valeurs la liste des valeurs uniques du champ sélectionné (ici, NOM_DEPT)
- Double-cliquez sur la valeur 'NORD' (notez les guillemets simples)
- A ce stade, la case Expression doit contenir : "NOM_DEPT" = 'NORD'
- Cliquez sur le bouton Sélection en bas de la fenêtre
Il est également possible de taper la requête « à la main » directement dans la case Expression. Attention dans ce cas à bien respecter la syntaxe utilisée par QGIS : par exemple, les noms de champs sont entourées de guillemets doubles et les chaînes de caractères de guillemets simples.
La fenêtre de requête attributaire ne se ferme pas automatiquement ; vous pouvez ou la fermer en cliquant sur le bouton Fermer ou bien simplement la déplacer pour vérifier sur la carte le résultat de votre sélection.
Vous pouvez lire le nombre d'éléments sélectionnés en haut de la table attributaire :
Vous venez d'effectuer une requête attributaire simple. Il est important de comprendre qu'une requête ne modifie pas les données, elle les sélectionne simplement.
Bien sûr, il est plus intéressant d'utiliser les requêtes pour sélectionner plusieurs éléments en même temps!
Pourquoi pour cette requête l'aperçu du résultat (en bas à gauche de la fenêtre de sélection) est-il égal à 0 ? Cette expression est traitée pour chaque ligne de la table et est évaluée par vrai ou faux, 0 ou 1 pour l'ordinateur. L'aperçu donne un des résultats trouvés, ici le 0.
Créer une nouvelle couche à partir d'une sélection
Il est possible de créer une nouvelle couche shapefile à partir d'une sélection.
Votre département du Nord étant toujours sélectionné, faites un clic droit sur la couche de départements dans la table des matières et choisissez Enregistrer sous... :
Cette case est cochée automatiquement à partir du moment où une sélection est présente, et est grisée si aucune entité n'est sélectionnée
- Cliquez sur Parcourir pour choisir à quel endroit sera sauvegardée la nouvelle couche, et sous quel nom, dept59 par exemple
- Vérifiez que la case N'enregistrer que les entités sélectionnées soit cochée.
- et cliquez sur OK
La nouvelle couche est automatiquement ajoutée à QGIS. Elle ne contient qu'un seul département, celui du Nord.
Quelques opérateurs
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur = pour notre requête. Il en existe d'autre, comme par exemple les opérateurs mathématiques inférieur à et supérieur à, multiplier, diviser...
Ajoutez la couche communes_NordPasDeCalais située dans le dossier TutoQGIS_06_Requetes/donnees.
Fermez la table attributaire de la couche de départements et ouvrez celle de la couche de communes. Cette table comporte une colonne POPULATION avec la population de chaque commune en milliers d'habitants.
En cliquant une première fois sur le nom de colonne POPULATION pour classer la population par ordre croissant, puis une deuxième fois pour la classer par ordre décroissant, on peut lire que la commune de Lille est la plus peuplée avec 227 600 habitants.
Nous allons faire une requête pour sélectionner les communes de + de 10 000 habitants. Ouvrez la fenêtre de requête pour la couche de communes :
- Cliquez sur Champs et valeurs pour voir la liste des champs, puis double-cliquez sur le champ POPULATION
- Dans la case Expression, tapez > 10 (puisque la population est en milliers d'habitants)
Il est également possible d'aller chercher l'opérateur > dans la liste des opérateurs, dans la colonne de gauche. Il faut ensuite taper la valeur 10 à la main.
Une fois votre requête tapée : "POPULATION" > 10, cliquez sur le bouton Sélection pour voir le résultat :
Les opérateurs qu'on voit en haut à gauche de la fenêtre de sélection (=, +, - ...) ne représentent qu'une petite partie des opérateurs disponibles ; vous pouvez tous les retrouver dans la catégorie Opérateurs de la colonne du milieu. En cliquant sur un opérateur, vous pouvez lire l'aide dans la partie de droite :
Parmi ces opérateurs se trouvent par exemple LIKE et ILIKE. L'opérateur LIKE permet de comparer une chaîne de caractère à une autre chaîne qui peut utiliser le caractère joker %.
Ce caractère peut remplacer un ou plusieurs caractères : par exemple, 'A%' peut correspondre à Ardèche, Allier...
Sélectionnons les communes dont le nom se termine par 'IN' !
Ouvrez la fenêtre de sélection pour la couche de communes. Écrivez la requête suivante : "NOM_COMM" LIKE '%IN' (soit en la tapant à la main soit en double-cliquant sur les différents éléments).
Notez que, pour du texte, si le caractère % n'est pas utilisé, les opérateurs = et LIKE sont équivalents.
L'opérateur ILIKE est équivalent à LIKE mais ne tient pas compte de la casse (majuscules ou minuscules).
Entre deux requêtes, pour être sûr de repartir à zéro, utiliser l'outil tout désélectionner.
Combiner plusieurs critères
Comment faire s'il l'on veut sélectionner par exemple les communes de + de 10 000 habitants dont le nom se termine par 'IN' ?
Il s'agit ici de combiner deux critères. Deux opérateurs permettent cela : AND (et) et OR (ou).
- Avec l'opérateur AND, tous les critères doivent être remplis
- Avec l'opérateur OR, il suffit qu'un seul des critères soit rempli
"NOM_COMM" LIKE 'A%' and "POPULATION" < 10000 : cette requête sélectionne 104 communes.
"NOM_COMM" LIKE 'LILLE' OR "NOM_COMM" LIKE 'TOURCOING' OR "NOM_COMM" LIKE 'ROUBAIX' : cette requête sélectionne 3 communes. L'opérateur OR doit être utilisé car les communes ne peuvent satisfaire qu'un seul des critères à la fois (une commune ne peut s'appeler Lille et Roubaix en même temps).
Quelques exemples à tester
Pouvez-vous sélectionner ? ...
(plusieurs requêtes sont parfois possibles pour un même résultat)
"NOM_COMM" = 'ARRAS' : une commune sélectionnée
"INSEE_COM" = '62041' : une commune sélectionnée
"NOM_DEPT" LIKE 'NORD' : 650 communes sélectionnées
"NOM_COMM" LIKE '%OO%' : 10 communes sélectionnées
"NOM_COMM" LIKE 'M%IN' : 4 communes sélectionnées
"POPULATION" >= 10 AND "POPULATION" <= 50 : 71 communes sélectionnées
"NOM_DEPT" LIKE 'NORD' AND ( "NOM_COMM" LIKE '%W%' OR "NOM_COMM" LIKE '%OO%') AND "POPULATION" <= 10 : 55 communes sélectionnées
VI.2 Sélectionner des éléments en fonction de leur position par rapport à d'autres : requêtes spatiales
Nous venons de voir comment sélectionner des éléments en fonction des données de la table attributaire ; nous allons voir ici comment sélectionner des éléments en fonction de leur position par rapport aux éléments d'une autre couche.
Contrairement aux requêtes attributaires, les requêtes spatiales mettent donc le plus souvent deux couches en jeu : une couche dans laquelle sera faite la sélection, et une couche de référence.
On peut par exemple, à l'aide d'une couche de points et d'une couche de polygones, sélectionner tous les points situés dans les polygones.
Faire une requête spatiale simple
Ouvrez un nouveau projet QGIS et ajoutez-y la couche communes_NordPasDeCalais.
En vous connectant au flux WFS http://ws.carmen.developpement-durable.gouv.fr/WFS/24/profil_env? (cf. partie III.2.3), ajoutez également au projet la couche Installations de traitement de déchêts.
Cette couche est en WGS84 EPSG:4326, seul SCR disponible via ce flux.
Le but va être ici de sélectionner toutes les communes du Nord-Pas-de-Calais sur lesquelles sont implantées une ou plusieurs installations de traitement de déchêts.
Rendez-vous dans le menu Vecteur → Requête spatiale → Requête spatiale .
- Sélection des entités sources depuis : il s'agit de la couche dans laquelle sera faite la sélection, sélectionnez la couche de communes
- Où l'entité : sélectionnez l'opérateur Contient
- Entités références de : il s'agit de la couche par rapport à laquelle seront sélectionnés les éléments, sélectionnez la couche d'installations
- Cliquez sur Appliquer et patientez un peu...
74 communes sur 1545 contiennent une installation ou plus.
Dans la partie droite de la fenêtre de requête spatiale sont listées les objets répondant à la requête; il est possible de zoomer sur chacun de ces objets en cochant la case Zoom sur l'objet puis en cliquant sur une ligne.
Il est également possible dans cette fenêtre de créer une couche temporaire à partir de la sélection, en cliquant sur l'icône Créer une couche depuis la sélection.
Cette couche sera uniquement sauvegardée dans le projet ; pour la sauvegarder définitivement, clic droit sur son nom, enregistrer sous...
Notez que l'outil de requête spatiale fonctionne pour deux couches ayant des SCR différents. Ce n'est pas le cas de tous les outils...
Quelques opérateurs
Dans l'exemple ci-dessus, nous avons utilisé l'opérateur Contient. Il en existe d'autres ; ils varient en fonction de la nature des couches source et de référence (point, ligne, polygone).
Couche de départ : | |||||||
---|---|---|---|---|---|---|---|
Couche de référence : | |||||||
A l'intérieur | |||||||
Chevauche | |||||||
Croise | |||||||
Contient | |||||||
Est disjoint | |||||||
Est égal | |||||||
Intersecte | |||||||
Touche |
Par exemple, un point peut se trouver à l'intérieur d'un polygone mais une ligne ne peut se trouver à l'intérieur d'un point.
Ajoutez la couche dept59 créée dans la partie VI.1.2.
Connectez-vous au flux WFS http://services.sandre.eaufrance.fr/geo/zonage (cf. partie III.2.3) et ajoutez la couche CoursEau1 correspondant aux cours d'eau de + de 100 km.
En utilisant différents opérateurs, pouvez-vous dire ?...
Entre deux requêtes, n'oubliez pas de tout désélectionner :
En sélectionnant les installations disjointes des communes (0/96), ou bien les installations à l'intérieur des communes (96/96), on peut en déduire que toutes les installations sont bien dans le Nord-Pas-de-Calais.
En sélectionnant les communes intersectant les cours d'eau (482/1545), ou bien les communes disjointes des cours d'eau (1063/1545), on peut en déduire que 482 communes sont traversées par un cours d'eau.
VI.3 Combiner des requêtes
- Combiner deux requêtes attributaires
- Combiner deux requêtes spatiales
- Combiner requêtes spatiales et attributaires
Comment faire quand on souhaite combiner plusieurs requêtes, par exemple sélectionner les communes traversées par un cours d'eau et ayant une population de + de 10 000 habitants ?
Combiner deux requêtes attributaires
Pour combiner deux requêtes attributaire (par exemple les communes de + de 10 000 habitants du département du Pas-de-Calais), nous avons vu dans la partie VI.1.4 qu'il est possible d'utiliser les opérateurs AND et OR.
Il est également possible de faire deux requêtes successives.
Ouvrez un nouveau projet QGIS, ajoutez-y la couche communes_NordPasDeCalais.
Ouvrez la table attributaire de cette couche puis la fenêtre de requête attributaire.
Sélectionnez tout d'abord les communes de + de 10 000 habitants :
"POPULATION" > 10
Tapez ensuite la requête suivante, pour sélectionner les communes du Pas-de-Calais...
"NOM_DEPT" = 'PAS-DE-CALAIS'
...Mais cette fois-ci, au lieu de cliquer sur Sélection, sélectionnez dans la liste Sélectionner depuis la sélection :
Ainsi, cette deuxième requête s'appliquera uniquement aux communes déjà sélectionnées : les communes du Pas-de-Calais seront sélectionnées parmi les communes de + de 10 000 habitants.
Utilisez cette fois pour la deuxième requête le bouton Enlever de la sélection : les communes du Pas-de-Calais seront désélectionnées et il ne restera de sélectionnées que les communes de + de 10 000 habitants du Nord.
Combiner deux requêtes spatiales
Comment faire maintenant pour combiner deux requêtes spatiales, par exemple pour sélectionner les communes avec installation et cours d'eau ?
Connectez-vous au flux WFS http://ws.carmen.developpement-durable.gouv.fr/WFS/24/profil_env? et ajoutez la couche Installations de traitement de déchêts.
Connectez-vous au flux WFS http://services.sandre.eaufrance.fr/geo/zonage et ajoutez la couche CoursEau1 correspondant aux cours d'eau de + de 100 km.
Menu Vecteur → Requête spatiale → Requête spatiale : sélectionnez les communes avec installation(s) .
Une fois cette requête effectuée, la case selected geometries (74 dans notre cas) est automatiquement cochée. En laissant cette case cochée, la requête suivante ne portera que sur les communes avec éoliennes. Il ne vous reste donc plus qu'à sélectionner les communes avec cours d'eau :
Au final, les 40 communes sélectionnées sont donc celles avec installation et cours d'eau :
Combiner requêtes spatiales et attributaires
Le principe est le même que précédemment. Sélectionnons par exemple les communes de moins de 100 habitants avec installation.
Commencez par sélectionner au moyen d'une requête attributaire les communes de moins de 100 habitants : "POPULATION" < 0.1. Onze communes sont sélectionnées.
Ensuite, au moyen d'une requête spatiale, sélectionnez parmi ces communes celles avec installation :
Au final, une seule commune reste sélectionnée : Riencourt-Les-Bapaumes dans le Pas-de-Calais.
Il est aussi possible de procéder à l'inverse : sélectionner d'abord les communes avec installations puis parmi celles-ci celles de moins de 100 habitants.
Désélectionnez toutes les communes.
Au moyen d'une requête spatiale, sélectionnez toutes les communes avec installation : 74 communes sont sélectionnées.
Il ne reste plus ensuite qu'à sélectionner en utilisant l'option Depuis la sélection les communes de moins de 100 habitants : la commune de Riencourt reste la seule sélectionnée.
VII. Créer, supprimer, renommer et calculer des champs
Dans les parties V.1 et V.3, nous avons vu comment choisir les champs qui seront ajoutés à une couche lors de sa création, et comment remplir des champs case par case.
Nous allons voir ici comment ajouter, supprimer et renommer et changer l'ordre des champs pour une couche existante, et comment calculer automatiquement des valeurs dans un champ.
Notions abordées :
- Création de champs
- Suppression de champs
- Renommer des champs
- Modifier l'ordre des champs
- Calcul des valeurs d'un champ
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
VII.1 Création et suppression de champs à partir de la table attributaire
Quels sont les champs présents dans une table ?
Ouvrez un nouveau projet QGIS, ajoutez la couche communes_NordPasDeCalais_calcul.
Pour voir les champs de la table attributaire de cette couche, vous pouvez bien sûr ouvrir la table attributaire, mais vous pouvez également ouvrir les propriétés de la couche, rubrique Champs :
Cette fenêtre vous permet de voir d'un seul coup d'œil la liste des champs, leur type : String (texte), Integer (nombre entier) ou Real (nombre décimal), le mode d'édition (cf. partie V.3.2)...
Créer un nouveau champ
Nous allons ajouter deux champs à la couche communes_NordPasDeCalais_calcul, CODE_DEPT et CODE_REG, destinés à contenir par la suite le code de département et le code de région.
Ouvrez la table attributaire de la couche communes_NordPasDeCalais_calcul. Passez en mode édition pour cette couche (cf. partie V.2.1).
Cliquez sur l'icône Nouvelle colonne en haut de la table attributaire :
La fenêtre suivante s'ouvre :
- Nom : Tapez CODE_DEPT
- Commentaire : ce champ peut contenir un commentaire, laissez-le vide
- Type : ce champ peut contenir les valeurs suivantes : texte, nombre entier, nombre décimal et date. Choisissez texte (on pourrait aussi choisir le type nombre entier, mais texte est souvent préférable pour les identifiants)
- Largeur : Dans le cas d'un champ type texte, cette valeur représente le nombre maximum de caractères que pourra contenir le champ. Tapez 3, pour prévoir le cas des départements d'outre-mer.
Cliquez sur OK ; le champ est ajouté à la table, rempli pour l'instant de valeurs nulles.
Procédez de la même manière pour ajouter un champ CODE_REG :
Quittez le mode édition en enregistrant les modifications. Ces champs seront remplis dans la partie VII.3.
Supprimer un champ existant
Nous allons supprimer le champ INSEE_COM (ne vous inquiétez pas, nous recréerons un champ code INSEE à partir du code de département et de commune, dans la partie VII.3).
Passez à nouveau en mode édition pour la couche communes_NordPasDeCalais_calcul.
Cliquez sur l'icône Supprimer la colonne en haut de la table attributaire :
La fenêtre suivante apparaît :
Sélectionnez le champ INSEE_COM puis cliquez sur OK.
Notez qu'il est possible de sélectionner plusieurs champs dans cette fenêtre.
Le champ est supprimé. Quittez le mode édition en enregistrant les modifications.
VII.2 Une extension pratique : le gestionnaire de table
Installation de l'extension du gestionnaire de table
L'extension Gestionnaire de table (Table Manager) permet de créer et supprimer des champs, ainsi que de renommer et changer l'ordre des champs, ce qui n'est pas possible directement dans la table attributaire.
Comment installer cette extension ?
Rendez-vous dans le Menu Extensions → Installer/Gérer les extensions :
- Vérifiez que vous êtes dans la rubrique Tout
- Tapez table dans la partie Rechercher
- Cliquez sur Table Manager dans la liste des extensions
- Puis sur Installer l'extension en bas à droite de la fenêtre
Table Manager est maintenant visible dans la liste des extensions installées. Fermez la fenêtre.
Gérer les champs avec le gestionnaire de table
Sélectionnez la couche communes_NordPasDeCalais_calcul dans la table des matières.
Lancez le gestionnaire de table : soit via l'icône de la barre d'outils Vecteur, soit via le menu Vecteur → Table Manager → Gestionnaire de table .
Le gestionnaire de table permet la création de nouveaux champs via le bouton Insérer. Une fois un champ sélectionné dans la liste, il est possible de le supprimer, renommer ou de changer sa position par rapport aux autres champs.
A tout moment, l'onglet Aperçu de la table permet de prévisualiser la table une fois vos changements effectués.
Pour sauvegarder vos modifications, deux possibilités : le bouton Enregistrer sauvegarde directement les modifications, le bouton Enregistrer sous... crée une nouvelle couche.
Nous allons simplement modifier l'ordre des champs pour remonter CODE_DEPT et CODE_REG : sélectionnez CODE_REG et cliquez sur Vers le haut jusqu'à ce que le champ soit en deuxième position, derrière ID_GEOFLA. Faites également remonter CODE_DEPT en troisième position.
Cliquez sur Enregistrer : une fenêtre apparaît vous demandant si vous souhaitez conserver ou non le style de la couche. Choisissez Oui ou Non, au choix (Oui conservera le style actuel de la couche, Non générera un nouveau style au hasard).
VII.3 Calcul de champs
- Comment fonctionne la calculatrice de champ ?
- Calcul de géométrie : l'exemple de la surface
- Quelques exemples supplémentaires de calculs
Il est possible de calculer automatiquement les valeurs d'un champ au moyen de la calculatrice de champ, un peu à la manière d'une requête attributaire.
Comment fonctionne la calculatrice de champ ?
Toujours dans le même projet QGIS, avec uniquement la couche communes_NordPasDeCalais_calcul, ouvrez sa table attributaire.
Passez en mode édition. Cliquez sur l'icône Ouvrir la calculatrice de champs parmi les icônes de la table attributaire :
La fenêtre suivante s'ouvre :
1 : Si cette case est cochée, seules les lignes sélectionnées seront modifiées (en grisé si aucune entité n'est sélectionnée).
2 : Cocher cette case pour créer un nouveau champ.
3 : Cocher cette case pour mettre à jour un champ existant.
4 : Les opérateurs les plus couramment utilisés.
5 : Expression servant à calculer les valeurs du champ.
6 : Liste des opérateurs et fonctions disponibles pour le calcul de champ.
7 : Si un opérateur ou une fonction est choisi en 6, l'aide correspondante apparaît dans cette partie.
8 : Ici, une fois l'expression remplie, vous pourrez voir un aperçu du résultat du calcul.
Comme vous avez pu le constater, le mode de fonctionnement de la calculatrice de champ est assez similaire à celui d'une requête attributaire (cf. partie VI.1).
Il n'est pas obligatoire de passer en mode édition pour utiliser la calculatrice de champ ; dans ce cas, cliquer sur OK dans la calculatrice enclenche le mode édition.
Calcul de géométrie : l'exemple de la surface
Calcul de la surface
Nous allons ici calculer la surface de chaque département en km2.
- Choisissez Créer un nouveau champ, nommez le SURF_KM2, choisissez le type décimal, une longueur de 10 et une précision de 2 (2 chiffres après la virgule)
- Dans la liste des fonctions, dans la rubrique géométrie, double-cliquez sur la fonction $area puis rajoutez dans la case expression / 1000000 (par défaut, la surface est calculée en unités de la couche, donc en m² puisque cette couche est projetée en Lambert 93)
- Au final, l'expression est donc $area / 1000000
- cliquez sur OK
Avez-vous noté qu'il est possible de créer des champs virtuels ? Ces champs ne sont pas permanents et ne seront pas sauvegardés (il est donc possible d'en créer sans passer en mode édition). Si un champ virtuel est utilisé pour calculer par exemple une surface, et si les polygones sont modifiés, la surface sera automatiquement mise à jour.
Vérification
Vous pouvez vérifier votre calcul au moyen de l'outil Mesurer une aire :
Sélectionnez une commune, mesurez son aire en faisant un clic droit sur le dernier sommet pour terminer, choisissez dans la table l'option Ne montrer que les entités sélectionnées et comparer l'aire que vous avez mesuré et l'aire du champ SURF_KM2.
Les deux aires devraient être sensiblement égales.
Quelques exemples supplémentaires de calculs
La calculatrice de champs offre beaucoup de fonctions que nous ne passerons pas toutes en revue ; nous verrons simplement quelques exemples pour vous donner un aperçu des possibilités.
Opérations mathématiques : calcul de densité
L'objectif sera ici de calculer la densité en habitants par km2 de chaque commune, à partir de la population et la surface.
La densité se calcule en divisant la population par la surface. Si la population est en nombre d'habitants et la surface en km2, alors la densité sera en nombre d'habitants par km2.
Si ce n'est pas déjà fait, ouvrez la table attributaire de la couche communes_NordPasDeCalais_calcul. Ouvrez la calculatrice de champs :
- Choisissez l'option Créer un nouveau champ, nommez-le DENSITE, type Nombre décimal, Longueur 10 et précision 2
- Dans la liste des fonctions, rubrique Champs et valeurs, double-cliquez sur POPULATION, ajoutez * 1000 à la main dans le cadre Expression puisque la population est en milliers d'habitants, le diviseur / puis double-cliquez sur le champ SURF_KM2
- Au final, l'expression est "POPULATION" * 1000 / "SURF_KM2"
- Cliquez sur OK : le champ densité est ajouté et calculé :
Opérations sur du texte : extraction des codes et noms de régions et départements
La couche communes_NordPasDeCalais_calcul comporte deux champs DEPT et REGION remplis par exemple par 59 - NORD pour le département et 31 - NORD-PAS-DE-CALAIS pour la région.
Le but est ici d'extraire le code de la région et du département à partir de ces deux champs. Nous avons déjà créé les champs CODE_DEPT et CODE_REG précédemment (cf. partie VII.1.2, il ne reste plus qu'à les remplir !
Si ce n'est pas déjà fait, ouvrez la table attributaire de la couche communes_NordPasDeCalais_calcul. Ouvrez la calculatrice de champs :
- Vérifiez que la case Ne mettre à jour que les x entités sélectionnées soit décochée, puisque le but est de mettre à jour toutes les lignes de la table
- Choisissez Champ de mise à jour existant puis CODE_DEPT dans la liste déroulante, puisqu'il ne s'agit pas de créer un nouveau champ
- Dans la liste des fonctions, allez dans la rubrique Chaîne (texte) et cliquez sur la fonction left : vous pouvez lire l'aide à droite. Cette fonction extrait les caractères les plus à gauche d'un texte.
- La fonction left nécessite deux paramètres : le texte d'où seront extraits les caractères (ici, le champ DEPT) et le nombre de caractères à extraire (ici, 2 puisque le code de département est codé sur 2 caractères)
- L'expression est donc left( "DEPT", 2)
- Cliquez sur OK : le champ CODE_DEPT est mis à jour :
Comment faire pour maintenant extraire le nom du département du champ DEPT ?
La fonction right permet d'extraire les caractères les plus à droite d'un texte. Le problème est que le nom du département étant variable, le nombre de caractères à extraire l'est aussi.
Mais il est possible de calculer ce nombre de caractères à extraire en fonction de la longueur totale du texte : en effet, ce nombre sera toujours égal à la longueur totale - 5. Cinq correspond au nombre de caractères qui ne font pas partie du nom de département, soit les 2 chiffres du code département, un espace, un tiret et un espace (« 59 - » par exemple).
L'expression est donc :
right ( "DEPT" , length ( "DEPT") - 5 )
length ( "DEPT") - 5 étant le nombre de caractères à extraire du champ DEPT.
Au final, les paramètres de la calculatrice de champs sont donc les suivants :
Pour le code région, il faut mettre à jour le champ CODE_REG avec l'expression left( "REGION", 2). Pour le nom de région, il faut créer un nouveau champ NOM_REG et le remplir en utilisant l'expression right ( "REGION" , length ( "REGION") - 5 ).
Bien sûr, vous pouvez faire plus simple et utiliser les expressions '31' pour le code, et 'NORD-PAS-DE-CALAIS' pour la région, puisque toutes les communes appartiennent ici à la même région !
Opérations sur du texte : concaténation
Le but sera ici de recréer le code INSEE des communes, à partir du code de département et du code de commune. Par exemple, la commune de Winnezeele a pour code département 59 et pour code commune 662 : son code INSEE est 59662.
Ouvrez la calculatrice de champ :
- Créez un nouveau champ, nommé CODE_INSEE, de type Texte et de longueur 10
- Dans la liste des champs, double-cliquez sur CODE_DEPT (créé précédemment), puis cliquez sur l'opérateur de concaténation de chaîne ||, et double-cliquez pour terminer sur le champ CODE_COMM
- L'aperçu du réultat doit être par exemple 59662
- Cliquez sur OK. Le champ CODE_INSEE est créé et mis à jour :
Il est aussi possible d'utiliser la formule concat ( "CODE_DEPT", "CODE_COMM" ), pour le même résultat.
VIII. Lier des données de deux sources différentes : les jointures
Nous allons aborder ici la notion de jointure : comment partir de deux couches de données, ou d'une couche et d'un tableau, pour au final n'obtenir qu'une seule couche avec toutes les données qui nous intéressent ?
Notions abordées :
- Jointure attributaire
- Jointure spatiale
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
VIII.1 Lier des données en fonction de leurs attributs : jointures attributaires
- Comment fonctionne une jointure attributaire ?
- Application : population au Bhoutan
- Quelques exemples supplémentaires
Comment fonctionne une jointure attributaire ?
Dans un logiciel SIG, une jointure attributaire consiste à lier à une couche des données provenant d'une table ou d'une autre couche. On se base pour cela sur les données attributaires.
Un champ de la couche de départ et un champ de la table contenant les données à joindre servent de champs clé. Ces champs doivent être de même type (texte, nombre) et contenir les mêmes données. Le logiciel se base sur le contenu de ces champs pour déterminer quel élément de la table est lié à quel élément de la couche.
Dans l'illustration ci-dessus, les données de départ sont :
- une couche de polygone avec les régions du bhoutan. La table attributaire comporte le nom et le code de chaque région, mais pas leur population.
- un tableau avec le code de chaque région et sa population en 1995
Les données de la table sont jointes aux données du shapefile, en se basant sur le code région : champ CODEREGION pour le shapefile et champ REG_CODE pour le tableau.
Au final, on obtient une couche shapefile des régions du Bhoutan, avec en données attributaires les données de la couche de départ et les données du tableau, donc la population.
Il arrive qu'un élément de la couche de départ corresponde à plusieurs éléments de la table. Différentes stratégies sont alors possibles selon les logiciels et le type de champ : ne prendre en compte que les données du premier élément lié, calculer la moyenne des données...
Application : population au Bhoutan
Ouvrez un nouveau projet QGIS et ajoutez-y la couche des régions du Bhoutan regions_bhutan.shp.
Ajoutez également au projet la table pop_bhutan.csv : pour cela, procédez comme pour ajouter une couche shapefile mais choisissez Tous les fichiers comme format de fichier :
Le format CSV est un format texte contenant des colonnes séparées par un caractère délimiteur, habituellement la virgule, le point-virgule ou la tabulation.
Vous devez donc avoir dans QGIS ces deux données (notez l'icône de tableau pour le CSV) :
Ouvrez les deux tables attributaires.
Le champ clé pour regions_bhutan est CODEREGION et le champ clé pour pop_bhutan est REG_CODE.
Allez dans les propriétés de la couche regions_bhutan, rubrique Jointure :
Cliquez sur le symbole pour ajouter une jointure :
- Joindre la couche : choisissez la couche qui sera jointe, ici le CSV pop_bhutan
- Champs de jointure des couches jointe et cible : choisissez les deux champs clés qui permettront de trouver les correspondances d'une table à l'autre
- Mettre la couche jointe en cache dans la mémoire virtuelle : si cette case est cochée, l'affichage de la table sera plus rapide, mais les données ne seront pas mises à jour si des modifications sont effectuées dans la couche jointe
- Choisir les champs à joindre : ici, nous voulons joindre tous les champs donc vous pouvez laisser cette case décochée
- Personnaliser le préfixe du champ : les champs joints peuvent avoir le préfixe de votre choix, pour bien les différencier des champs originaux ou issus d'autres jointures. Choisissez un préfixe court, par exemple tab_
Cliquez sur OK pour créer la jointure : la ligne correspondante apparaît dans la fenêtre des propriétés.
Ouvrez la table attributaire de la couche regions_bhutan.shp : les données de la table ont été ajoutées (champ tab_POPEST95).
Cependant, la couche n'a pas été modifiée, la jointure n'est que temporaire. Pour sauvegarder définitivement la jointure, il faut sauvegarder la couche sous un autre nom.
Quelques exemples supplémentaires
Jointure d'une couche et d'une table : recensement de la population au Kenya
Ouvrez un nouveau projet QGIS. Ajoutez-y la couche KEN_adm2.shp et le fichier CSV County_Urbanization-2009.
Il est possible de faire la jointure en utilisant le nom du district : champ NAME_2 pour KEN_adm2 et champ County pour County_Urbanization-2009.csv.
Le champ étant un nom et non un code, il est possible que des lignes ne soient pas jointes si les noms sont orthographiées de manière légèrement différente.
Faites la jointure.
Quatre districts n'ont pas de données jointes : Trans-Nzoia, orthographié "Trans Nzoia" dans le fichier CSV, Elgeyo-Marakwet, orthographié "Elgeyo Marakwet" dans le fichier CSV, Nithi, orthographié "Tharaka Nithi" dans le fichier CSV et Kwale, orthographié "Kwale " (avec un espace à la fin) dans le fichier CSV.
Pour que tous les enregistrements soit joints, vous pouvez modifier à la main les noms des districts qui posent problème dans le fichier CSV, en l'ouvrant avec un éditeur de texte, et refaire la jointure.
Jointure de deux couches : entrées de cinéma et célibat en France
Ouvrez un nouveau projet QGIS. Ajoutez-y les couches depts_celib15ansplus_2009 et depts_entrees_cinema_2011.
Il est possible de faire la jointure sur les champs ID_GEOGLA, ou CODE_DEPT, ou bien NOM_DEPT. Evitez le champ NOM_DEPT, au cas où les noms de départements soient orthographiés de manière différente dans les deux couches (accents, majuscules).
Joignez les données attributaires d'une couche à l'autre couche.
VIII.2 Lier des données en fonction de leur position : jointures spatiales
- Comment fonctionne une jointure spatiale ?
- Deux outils possibles (voire plus...)
- Quelques exemples supplémentaires
Comment fonctionne une jointure spatiale ?
Pour faire une jointure, il est possible de se baser sur la position des éléments et non plus sur leurs données attributaires : il s'agit alors d'une jointure spatiale.
Ce type de jointure ne peut se faire qu'entre deux couches SIG, de type point, ligne ou polygone. Il est possible par exemple de partir d'une couche de polygones et d'une couche point, et de lier à chaque polygone les données attributaires du point contenu par ce polygone.
Notez bien que comme pour une jointure attributaire, les données qui seront jointes sont toujours les données attributaires.
Dans l'exemple ci-dessus, les deux couches de départ sont une couche de département et une couche de chef-lieux. Les données attributaires des chef-lieux (leur nom, code et coordonnées) sont jointes aux départements en se basant sur leur position : chaque département récupère les données du chef-lieu intersectant ce département.
Il existe plusieurs outils pour cela dans QGIS ; nous utiliserons celui présentant a priori le plus de possibilités.
Deux outils possibles (voire plus...)
Comme souvent dans QGIS, il existe plusieurs manières de faire les choses. Deux outils de jointure spatiale vous seront présentés ici ; il en existe d'autres !
En passant par le menu vecteur
Ouvrez un nouveau projet QGIS, ajoutez les deux couches depts_france et cheflieux_france.
Rendez-vous dans le menu Vecteur → Outils de gestion de données → Joindre les attributs par localisation :
Notez que cet outil ne propose pas le choix de l'opérateur (intersecte, contient, est disjoint...). L'opérateur intersecte sera toujours utilisé.
Fermez cette fenêtre sans lancer la jointure.
En passant par la boîte à outils Traitement
Si la boîte à outils Traitement n'est pas visible, menu Traitement → Boîte à outils.
Dans cette boîte à outils, en mode avancé (liste déroulante en bas de la boîte), rubrique Géotraitements QGIS → Vector general tools → Join attributes by location :
Au contraire de l'outil précédent, il est ici possible de choisir l'opérateur spatial. C'est donc cet outil que nous utiliserons par la suite.
Essayons, comme dans la partie VIII.2.1, de joindre les données attributaires des chef-lieux aux départements, en fonction de leur position.
- Indiquez une couche vecteur : choisissez la couche à laquelle joindre les données; ici, les départements.
- Joindre la couche vecteur : choisissez la couche avec les données à joindre ; ici, les chef-lieux.
- Prédicat géométrique : les opérateurs intersecte et contient auront ici le même résultat
- Résumé de l'attribut : cette rubrique permet soit de ne garder que les attributs de la première entité rencontrée, soit de faire des statistiques si plusieurs entités sont rencontrées. Comme il n'y a qu'un seul chef-lieu par département, il est inutile de calculer des statistiques : choisissez la 1ère option.
- Statistiques pour le résumé : ces informations ne seront prises en compte que si la 2ème option a été choisie dans la liste déroulante du résumé de l'attribut.
- Joined table : cette option est importante dans le cas où des entités de la couche de départ n'ont pas de correspondance dans la couche à joindre. Dans notre cas, chaque département ayant un chef-lieux, les deux options sont équivalentes.
- Joined layer : cliquez sur ... pour choisir Enregistrer dans un fichier (nommez la future couche depts_join_cheflieux par exemple)
Cliquez sur OK, patientez... la nouvelle couche est automatiquement ajoutée au projet.
Ouvrez la table attributaire de la nouvelle couche. Pour chaque département, il est maintenant renseigné le nom et le code du chef-lieu, ainsi que ses coordonnées.
Il existe encore d'autres moyens pour faire une jointure spatiale, notamment en passant par une base de données relationnelle type PostgreSQL avec son extension spatiale PostGIS, ou bien à l'aide du plugin mmqgis...
Quelques exemples supplémentaires
Écoles secondaires du Kenya
Le but sera ici, à partir d'une couche du district de Nakuru et d'unecouche de points représentant les écoles secondaires de ce district, de déterminer combien d'école compte chaque zone du district.
Dans un nouveau projet QGIS, ajoutez les couches KEN_adm4_Nakuru et kenya_ecoles_nakuru.
Choisissez les paramètres de la jointure spatiale :
Le nombre d'écoles dans la zone sera automatiquement calculé à partir du moment où vous choisissez l'option Take summary of intersected features. Vous pouvez choisir de ne calculer aucune statistique.
Choisissez également Keep all records : ainsi, même si une zone ne comporte aucune école, elle ne sera pas supprimée de la couche résultat.
Lancez la jointure, ajoutez la nouvelle couche.
En lisant les informations par exemple de la zone de Bahati, on peut lire que cette zone comporte 22 écoles :
Jointure de deux couches de polygones : un comportement étonnant
Ouvrez un nouveau projet QGIS, ajoutez les couches regions_france_geofla et depts_france_geofla.
Que se passe-t-il si l'on essaye de trouver par une jointure spatiale le nombre de départements de chaque région ?
Testez-le, avec les mêmes paramètres que pour les écoles secondaires du Kenya : vous devriez obtenir les nombres de départements suivants par région :
A part pour la Corse, ces nombres sont erronés; en effet, il semble que la jointure ait pris en compte pour une région non seulement les départements à l'intérieur de la région mais également les départements adjacents.
Comment cela se fait-il ? Si vous testez une requête spatiale pour sélectionnez tous les départements intersectant une région (après avoir sélectionné une région), vous constaterez que les départements limitrophes sont également sélectionnés. L'opérateur d'intersection fonctionne donc ainsi. Bug ou feature ? A vous de voir !
IX. Analyse spatiale
Dans cette partie, nous allons aborder un domaine particulièrement utile des SIG : comment croiser spatialement des données, ou créer des données à partir d'autres données.
Nous verrons quelques exemples de traitements possibles sur des données vecteur et raster (pour un rappel de ce qu'est une donnée vecteur ou raster : cf. partie I.1.2b).
Notions abordées :
- découpage d'une couche vecteur
- intersection de deux couches
- création de zones tampon
- découpage d'une couche raster
- création de courbes de niveau à partir d'un MNE
- calcul de pente à partir d'un MNE
- Calcul de la valeur d'un point en fonction d'un raster
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
IX.1 Analyse spatiale : quelques exemples d'opérations sur des données vecteur
- Découper des données par d'autres données
- Création d'une zone tampon autour d'un cours d'eau
- Données communes entre deux couches : intersection
Nous aborderons ici quelques traitements possibles sur des données vecteur. Il en existe bien sûr beaucoup d'autres !
Découper des données par d'autres données
Le but sera ici de découper des cours d'eau pour ne garder que ceux dans notre zone d'étude, en l'occurrence les départements de Côtes d'Armor et d’Île-et-Vilaine.
Premier essai...
Ouvrez un nouveau projet QGIS. Ajoutez les couches COURS_D_EAU_NTFL2 et communes_22_35_osm.
Le but sera donc de découper les cours d'eau par les communes, pour ne garder que les parties à l'intérieur des communes. Cette opération crée une nouvelle couche.
Rendez-vous dans le Menu Vecteur → Outils de géotraitement → Découper :
- Couche vectorielle de saisie : choisir la couche à découper, en l'occurrence les cours d'eau
- Couche de découpage : choisir la couche servant de masque de découpe, en l'occurrence les communes
- Fichier de sortie : cliquez sur Parcourir, choisissez l'endroit où la couche sera créée, et son nom : COURS_D_EAU_dep22_35
- La case Ajouter le résultat au canevas de la carte est présente depuis la version 2.2 de QGIS. Cochez-la si possible.
- Cliquez sur OK
Les cases Utiliser uniquement les valeurs sélectionnées permettent, comme leur nom l'indique, de ne prendre en compte que certaines entités, que ce soit pour la couche à découper ou le masque de découpe.
Ajoutez la nouvelle couche si ce n'est pas fait automatiquement.
Que se passe-t-il ? La nouvelle couche ne semble contenir aucune entité, ce que vous pouvez vérifier en ouvrant la table attributaire. Supprimez cette couche.
...Et correction du problème
Comme vous vous rappelez, nous avons vu dans la partie II.4.2 que certaines opérations nécessitent que toutes les couches soient dans le même SCR. Est-ce bien le cas ici ?
La couche COURS_D_EAU_NTFL2 est en système NTF, projection Lambert 2 (EPSG 27572), et la couche communes_22_35_osm en système RGF93, projection Lambert 93 (EPSG 2154).
Passez la couche de cours d'eau en RGF93 Lambert 93 (EPSG 2154), puisqu'il s'agit du système officiel français, le NTF Lambert 2 étant obsolète : nommez la nouvelle couche COURS_D_EAU_RGF93L93. Référez-vous si besoin à la partie II.4.2.
Supprimez la couche COURS_D_EAU_NTFL2. Vous avez donc dans votre projet deux couches, une de cours d'eau et une de communes, toutes deux dans le même SCR : RGF93 Lambert 93.
Procédez à nouveau au découpage, avec comme couche de saisie COURS_D_EAU_RGF93L93 et comme couche de découpage communes_22_35_osm.
Nommez la nouvelle couche COURS_D_EAU_dep22_35 et sauvegardez-là au même endroit que précédemment, afin de remplacer la couche avec 0 entités.
Patientez... et ajoutez la nouvelle couche :
Contrairement à une requête spatiale, le découpage modifie les entités en les découpant suivant les limites de la couche de découpage. Une requête se borne à sélectionner par exemple les cours d'eau à l'intérieur des communes, ou intersectant les communes.
Création d'une zone tampon autour d'un cours d'eau
Qu'est-ce qu'une zone tampon ?
Une zone tampon (aussi appelée « buffer ») est une zone épousant la forme des objets d'une couche, d'une largeur donnée. Si elles sont tracées autour de points, les zones tampons seront des cercles. Autour de lignes et de polygones, ce sera des polygones de forme variable. Une zone tampon peut servir par exemple à modéliser une zone inondable, un périmètre de sécurité, une zone d'achalandage...
L'objectif est ici de créer une zone tampon d'1 km autour du cours d'eau du Trieux. Cette zone pourra représenter par exemple une zone inondable, ou bien une zone s'interposant entre rivière et cultures.
Sélection d'un cours d'eau
Vous pouvez soit cliquer sur le numéro de la ligne où le toponyme est « le Trieux » (pour la trouver plus facilement, cliquez sur l'intitulé de colonne Toponyme pour classer les lignes par toponyme), soit utiliser une requête attributaire : "Toponyme" = 'le Trieux'.
Création d'une zone tampon autour de la sélection
Pour créer la zone tampon : menu Vecteur → Outils de géotraitement → Tampon(s) :
- Couche vectorielle de saisie : il s'agit de la couche autour de laquelle sera créée la ou les zones tampons, donc ici la couche de cours d'eau COURS_D_EAU_dep22_35
- Utiliser uniquement les valeurs sélectionnées : vérifier que cette case soit bien cochée (elle l'est par défaut à partir du moment où une sélection existe dans la couche), afin de ne créer de zone tampon qu'autour du Trieux
- Segments pour l'approximation : plus cette valeur est élevée, plus les contours de la zone seront « arrondis ». Une valeur de 10 sera suffisante dans notre cas
- Distance tampon : la couche étant projetée en Lambert 93, son unité est le mètre. Taper donc 1000 pour obtenir une zone d'une largeur de 1km. L'option Champ de distance tampon permet quant à elle de faire varier la largeur de la zone en fonction des valeurs d'un champ ; nous ne l'utiliserons pas ici
- Union des résultats du tampon : cette case permet de fusionner toutes les zones tampon qui seront créées. Dans la mesure où une seule zone sera créée ici, la cocher ou décocher ne changera rien au résultat
- Fichier de sortie : cliquez sur Parcourir, choisir le nom : Trieux_Tampon1km_RGF93L93 par exemple) et l'emplacement de la couche qui sera créée
Cliquez sur OK, ajoutez la nouvelle couche : vous devez obtenir un résultat similaire à celui de l'illustration ci-dessus.
Données communes entre deux couches : intersection
Qu'est-ce qu'une intersection ?
L'intersection entre deux couches crée une troisième couche, avec uniquement les parties communes aux deux couches.
Intersection entre communes et zone tampon
Rendez-vous dans le menu Vecteur → Outils de géotraitement → Intersection :
- Couche vectorielle de saisie : choisir la couche de communes. Ne pas cocher la case « Utiliser uniquement les entités sélectionnées » puisqu'il s'agit d'intersecter toutes les communes
- Couche d'intersection : choisir la couche contenant la zone tampon. Idem, ne pas cocher la case « Utiliser uniquement les entités sélectionnées »
- Fichier de sortie : cliquez sur Parcourir, choisir le nom (intersection_communes_tampon par exemple) et l'emplacement de la couche qui sera créée
Cliquez sur OK, ajoutez la couche.
Vous devez obtenir une couche similaire à celle de l'illustration.
Ouvrez la table attributaire de cette couche : notez que les champs des deux couches sont présents.
IX.2 Analyse spatiale : quelques exemples d'opérations sur des données raster
- Découpage d'un raster
- Création de courbes de niveaux
- Création d'une couche de pente à partir de l'altitude
Vous verrez ici quelques manipulations sur un raster d'altitude, appliquées au modèle d'élévation numérique (MNE) de la Jamaïque (pour savoir ce qu'est un MNE : cf. partie III.1.2).
Découpage d'un raster
Le but sera ici de découper un raster pour ne garder que la zone qui nous intéresse. Cette manipulation permet d'alléger les données et les futurs traitements.
Ouvrez un nouveau projet QGIS. Ajoutez la couche raster srtm_21_09.tif située dans TutoQGIS_09_AnalyseSpat/donnees.
Le but va être de ne garder que la partie du MNE correspondant à la Jamaïque, en éliminant les parties de Cuba et des îles Caïman.
Rendez-vous dans le Menu Raster → Extraction → Découper :
- Fichier source : sélectionnez srtm_21_09
- Fichier en sortie : cliquez sur Sélection..., choisissez où la nouvelle couche sera créée, et son nom : srtm_jamaique
- Valeur nulle : laissez la case décochée
- Mode de découpage : choisissez Emprise
- Vérifiez que la case Charger dans la carte une fois terminé soit bien cochée
- Il faut ensuite dessiner l'emprise à garder, toujours dans l'outil de découpage. Dessinez un rectangle autour de l'île de la Jamaïque :
- Cliquez ensuite sur OK.
Une fois l'opération terminée, fermez la fenêtre de l'outil de découpage. Le nouveau raster ne comprend que la Jamaïque.
Notez qu'il est également possible de découper un raster suivant une couche de polygones, en utilisant l'option couche de masquage. Vous pouvez aussi directement rentrer à la main les coordonnées de l'emprise à conserver.
Création de courbes de niveaux
Les courbes de niveaux sont des lignes imaginaires joignant tous les points situés à la même altitude. Nous allons créer des courbes de niveau distantes de 100 mètres à partir du MNE de la Jamaïque.
Rendez-vous dans le Menu Raster → Extraction → Création de contours :
- Fichier source : sélectionnez srtm_jamaique
- Fichier de sortie pour les contours : cliquez sur Sélection..., sélectionnez l'emplacement de la couche qui sera créée, tapez son nom : jamaique_courbes_100m par exemple
- Intervalle entre les lignes de contour : tapez 100
- Nom d'attribut : il s'agit du nom du champ qui contiendra l'altitude de la courbe. Cochez la case, et laissez la valeur ELEVATION par exemple
- Pour finir, cochez la case Charger dans la carte une fois terminé, et cliquez sur OK.
Une couche de lignes a été créée. Chaque ligne possède en attribut son élévation, qui varie ici de 100 à 2200 mètres.
Création d'une couche de pente à partir de l'altitude
Il est également possible de créer à partir d'un raster d'altitude un raster de pente : chaque pixel aura la valeur de la pente en ce point. Pour en savoir plus sur la manière dont est calculée la pente, vous pouvez vous référer à l'aide d'ArcGIS sur ce point.
La pente est calculée en fonction de la distance horizontale et de la hauteur. Dans notre cas, la hauteur est en mètres, et la distance horizontale en degrés. Les deux unités étant différentes, le calcul de pente donnera des valeurs aberrantes.
La première étape est donc de projeter notre raster, pour obtenir des unités identiques verticalement et horizontalement.
Projection d'un raster
Quelle projection utiliser pour notre raster ?
En règle générale, il y a deux possibilités quand on cherche une projection pour un pays : utiliser une projection nationale, ou bien une projection UTM.
Pour savoir s'il existe dans QGIS des projections nationales pour la Jamaïque, vous pouvez faire une recherche dans les SCR proposés.
Rendez-vous dans les propriétés du projet, rubrique SCR, par exemple en cliquant sur l'icône de sphère tout en bas à droite de la fenêtre de QGIS :
Tapez jamaica dans la rubrique Filtre : plusieurs réponses sont proposées, dont 3 SCR projetés. Une rapide recherche internet semble indiquer que le SCR JAD2001 est le plus récent (source : http://www.jamaicancaves.org/jad2001.htm). C'est donc ce SCR que nous utiliserons.
Sélectionnez JAD2001 (code EPSG:3448) et cliquez sur OK.
Nous venons de changer le SCR du projet, mais pas celui de notre raster (pour rappel : cf. partie II.3).
Une étape préliminaire avant de projeter le raster : ouvrez les propriétés du raster, rubrique Métadonnées, et dans le bas de la fenêtre, en faisant défiler les propriétés, recherchez Aucune valeur de données. Vous devriez avoir -32768, notez cette valeur. C'est celle utilisée pour les pixels « sans valeur » (qui ont donc en réalité la valeur -32768), en-dehors de l'île.
Ensuite, pour changer le SCR du raster : Menu Raster → Projections → Reprojection :
- Fichier source : sélectionnez srtm_jamaique dans la liste
- Fichier en sortie : cliquez sur Sélection..., choisissez l'emplacement de la couche qui sera créée et tapez son nom : srtm_jamaique_JAD2001 par exemple
- SCR source : vérifiez que cette case soit cochée, et que le SCR actuel de la couche (WGS84, code EPSG:4326) soit bien sélectionné
- SCR cible : cochez cette case, et cliquez sur Sélection pour rechercher le SCR JAD2001 code EPSG:3448
- Données sans valeur : tapez la valeur notée précédemment : -32768
- Charger dans la carte une fois terminé : cochez cette case
- Laissez les autres paramètres par défaut, cliquez sur OK.
Patientez... La nouvelle couche est ajoutée, vous pouvez vérifier dans ses propriétés (rubrique Général) que son SCR est bien le JAD2001.
Supprimez les autres couches, pour ne garder dans le projet que la couche srtm_jamaique_JAD2001.
Calcul de pente à partir du raster projeté
Rendez-vous dans le Menu Raster → Analyse → MNT/DEM (Modèles de terrain) :
- Fichier source : sélectionnez srtm_jamaique_JAD2001
- Fichier en sortie : cliquez sur Sélection... et sélectionnez l'emplacement de la couche qui sera créée, tapez son nom : pente_jamaique_JAD2001
- Mode : choisir Pente dans la liste déroulante
- Cochez la case Charger dans la carte une fois terminé
- Laissez les autres paramètres par défaut (pour plus d'infos sur les méthodes de Zevenberger & Thorne et Horn : http://www.macaulay.ac.uk/LADSS/documents/DEMs-for-spatial-modelling.pdf, pp. 12 et 13).
Cliquez sur OK, patientez... la couche s'affiche :
Ici, les pixels sombres représentent des pentes faibles et les pixels clairs de fortes pentes.
En cliquant sur un pixel avec l'outil Identifier les entités, vous pouvez connaître la valeur de la pente pour ce pixel :
Ici, le pixel a une pente de 13,5° environ.
IX.3 Analyse spatiale : croisement de données vecteur et raster
- Préparation des données : un seul SCR pour tous
- Trouver l'outil : installation d'une extension
- Calcul de pente pour chacun des points d'une couche
Pour compléter ce chapitre, voici un exemple d'analyse mettant en jeu données vecteur et raster : en partant d'une couche de pente, et d'une couche de points représentant des échantillons, nous allons calculer la valeur de la pente pour chacun des échantillons.
Préparation des données : un seul SCR pour tous
Ouvrez un nouveau projet QGIS, ajoutez-y la couche créée en IX.2.3 pente_jamaique_JAD2001.tif.
Ajoutez également la couche echantillons_jam fournie dans le dossier TutoQGIS_09_AnalyseSpat/donnees.
La couche pente_jamaique_JAD2001.tif est en JAD2001 EPSG:3448 et la couche echantillons_jam en WGS84 EPSG:4326.
Il est possible soit de changer le SCR du raster, soit de changer le SCR du vecteur. Néanmoins, le temps de calcul est généralement moins long lorsqu'il s'agit de modifier le SCR d'une couche vecteur, en particulier pour une couche de points.
Sauvegardez la couche echantillons_jam avec le SCR JAD2001 EPSG:3448, sous le nom echantillons_jam_JAD2001. Référez-vous si nécessaire à la partie II.4.2. Ajoutez cette couche à QGIS.
Trouver l'outil : installation d'une extension
Comment faire pour donner à chacun des points sa valeur de pente ?
Il ne semble pas y avoir d'outil correspondant dans les menus vecteur et raster de QGIS. L'étape suivante est donc de faire une recherche parmi les extensions disponibles (ou bien dans un moteur de recherche, avec par exemple « qgis raster point value » comme mots clés).
Rendez-vous dans le menu Extension → Installer/gérer les extensions :
Dans la rubrique En obtenir plus, tapez sampling dans la partie filtre : plusieurs extensions sont trouvées. Lisez leurs descriptifs ; Point sampling tool semble correspondre à notre besoin. Installez cette extension.
Fermez la fenêtre du gestionnaire d'extensions.
Calcul de pente pour chacun des points d'une couche
Point sampling tool est accessible soit via l'icône correspondante, soit via le menu Extension → Analyses → Point sampling tool .
Onglet General :
- Layer containing sampling points : vérifiez que echantillons_jam_2001 soit bien sélectionnée dans la liste
- Layer with fields/bands to get values from : il s'agit des couches dans les attributs seront repris dans la nouvelle couche. Faites bien attention à sélectionner les deux couches, pour garder à la fois les identifiants des points et leur pente
- Output point vector layer : cliquez sur Parcourir, sélectionnez l'emplacement où la couche de points sera créée, tapez son nom : echantillons_jam_pente_JAD2001
- Add created layer to the TOC : vérifiez que cette case soit cochée pour ajouter directement la couche créée à QGIS
Avant de cliquer sur OK, passez à l'onglet Champs :
Si vous avez bien sélectionné les deux couches dans l'onglet général, vous voyez ici les champs de ces deux couches : id pour les points, et la pente pour le raster. Vous pouvez renommer les champs qui seront créés : renommez par exemple pente_jama en pente.
Pour terminer, cliquez sur OK, fermez la fenêtre de l'extension.
Vérifiez que la nouvelle couche contienne bien les mêmes 22 points qu'echantillons_jam_2001.
Ouvrez sa table attributaire : les 2 champs id et pente sont présents. La pente est renseignée pour chacun des points.
X.2 Mettre en page une carte
- Préparation de la mise en page
- Mise en page : le composeur d'impression
- Sauvegarder une mise en page
Une fois vos données représentées de manière satisfaisante, il peut être utile d'en faire une carte. Cette partie n'a pas pour but d'expliquer les bonnes et mauvaises pratiques en matière de cartographie, mais se bornera à décrire quelques fonctionnalités du mode mise en page de QGIS.
L'exercice consistera ici à mettre en page une carte de la densité de population par communes (carte choroplèthe) en France.
Préparation de la mise en page
Commencez par ajouter toutes les couches dont vous avez besoin, et supprimez toutes les couches inutiles.
Choisissez le style de chacune des couches.
N'oubliez pas également de choisir un SCR adapté pour votre projet (projeté si vous souhaitez créer une échelle en mètres par exemple) (cf. Modifier le SCR du projet).
Mise en page : le composeur d'impression
Le mode mise en page se nomme composeur d'impression dans QGIS. C'est dans le composeur d'impression que vous pourrez ajouter une échelle, un titre etc. à votre carte.
Menu Projet → Nouveau composeur d'impression
Tapez un titre, par exemple densité communes.
Le principe du composeur d'impression est simple : l'onglet Composition permet de fixer les paramètres de la page (format A4, paysage ou portrait...), et l'onglet Propriétés de l'objet les paramètres de l'objet actuellement sélectionné.
Créer une carte sur une page au format de votre choix
La première étape consiste à déterminer les dimensions de la page dans l'onglet composition. S'il s'agit d'une figure destinée à être intégrée dans un rapport, vous pouvez très bien choisir une taille personnalisée, par exemple 15 x 15 cm.
Dans l'onglet Composition → Options du papier, choisissez Personnalisation au lieu de A4. Fixez ensuite la largeur et la hauteur à 150 mm.
Pour zoomer sur votre page : cliquez sur l'icône Zoom sur l'emprise totale (ou menu Vue → Zoom sur l'emprise totale).
Cliquez ensuite sur l'icône Ajouter une nouvelle carte (ou menu Mise en page → Ajouter une carte).
Dessinez un rectangle n'importe où sur la page, de la taille que vous voulez. Puis rendez-vous dans l'onglet Propriétés de l'objet, rubrique Position et taille, et fixez X et Y à 0 et la largeur et hauteur à 150 mm pour que la carte coïncide avec la page.
La carte ainsi créée est synchronisée avec les données visibles dans QGIS : si vous changer le style d'une des couches dans la fenêtre principale de QGIS et revenez au composeur, la carte aura été mise à jour (si besoin en cliquant sur le bouton actualiser).
Pour centrer la carte : cliquez sur l'icône Déplacer le contenu de l'objet et faites glisser le contenu de la carte.
Pour zoomer et dézoomer : modifiez l'échelle dans les propriétés de la carte.
Paramétrer la légende
Il existe de nombreuses possibilités pour paramétrer la légende. Elles ne seront pas toutes passées en revue ici, mais n'hésitez pas à explorer par vous-même !
Pour ajouter une légende : icône Ajouter une nouvelle légende, puis cliquez n’importe où sur la carte.
La légende reprend celle de la couche dans QGIS : si vous modifiez les étiquettes de la légende dans la propriété de la couche, la légende du composeur prendra en compte ces modifications.
Dans la fenêtre principale de QGIS, ouvrez les propriétés de la couche, rubrique Style. Vous pouvez :
- Modifier les bornes des classes en double-cliquant sur une ligne dans la colonne valeur
- Modifier l'étiquette des classes en double-cliquant sur une ligne dans la colonne étiquette
Revenez ensuite dans le composeur et cliquez sur votre légende avec l'outil Sélectionner / Déplacer un objet.
Ces modifications seront directement prises en compte dans la légende si la case Mise à jour auto est cochée. Cette case présente néanmoins l'inconvénient de ne pas vous donner la main sur la légende ; si vous la décochez, vous pourrez changer l'ordre des couches, en ajouter et en supprimer... grâce aux icônes situées sous la légende, et mettre à jour leur légende en cliquant sur le bouton Tout mettre à jour.
Vous pouvez également modifier les étiquettes directement dans la légende, en cliquant sur une ligne puis sur le bouton d'édition.
Voici une dernière astuce (à vous d'en trouver d'autres !) pour faire un retour à la ligne, dans le titre par exemple. Dans la case Activer le retour à la ligne après, tapez un caractère dont vous ne vous servez habituellement pas, par exemple $. Ce caractère ne sera pas représenté mais provoquera un retour à la ligne.
Dans la case Titre, tapez le titre souhaité pour votre légende, avec un $ quand vous souhaitez passer à la ligne : Densité population$nb habitants / km² par exemple.
Le $ provoquera également une retour à la ligne pour les autres objets de la légende (étiquettes, nom de la couche...).
N'hésitez pas à explorer les autres rubriques des propriétés de la légende.
Un exemple de légende :
Paramétrer l'échelle
Pour ajouter une échelle : outil Ajouter une nouvelle échelle graphique puis cliquez sur la carte.
Comme pour la légende, il est possible de régler assez finement les différents paramètres de cette échelle.
Par exemple, si vous voulez une échelle en Km, indiquez d'abord l'unité des de votre projet : le mètre (votre projet doit utiliser un SCR projeté), puis tapez 1000 dans la case Unités de carte par unité de l'échelle graphique.
Vous pouvez également régler le nombre de segments de l'échelle, et la largeur du trait :
Différents styles d'échelle peuvent être choisis dans la rubrique Propriétés principales de l'échelle :
Voici quelques exemples d'échelle :
Ajout d'éléments supplémentaires : titre, logo, flèche nord...
Pour ajouter du texte, par exemple un titre, les sources, l'auteur... : outil Ajouter une nouvelle étiquette.
Dans les propriétés de cet objet, vous pouvez ensuite modifier le texte, la police, la couleur...
Si vous voulez ajouter une image, par exemple un logo : outil Ajouter une image puis dessinez un rectangle sur la page.
Dans les propriétés principales, choisissez ensuite une image sur votre ordinateur :
Par convention, le Nord est situé en haut de votre carte. Ajouter une flèche Nord si tel est bien le cas n'est donc pas indispensable et peut même alourdir inutilement votre carte et donc nuire à sa lisibilité.
Peut-être avez-vous néanmoins besoin d'une flèche Nord, par exemple si le Nord n'est pas en haut de votre carte ?
Dans ce cas, utilisez également l'outil Ajouter une image et choisissez comme image un symbole de flèche Nord. Pour cela, vous pouvez utiliser la bibliothèque de symboles de QGIS, dans la rubrique Rechercher dans les répertoires.
Il est possible d'ajouter de nouveaux symboles au format SVG à cette bibliothèque, au moyen du bouton Ajouter...
Pour synchroniser votre flèche Nord avec votre carte, afin que cette flèche indique toujours le Nord : cocher la case Synchroniser avec la carte dans la rubrique Image rotation.
Pour régler la rotation de la carte, dans les propriétés principales de la carte (toujours dans le composeur), réglez le paramètre Rotation de la carte.
Vous pouvez également ajouter une deuxième carte à votre page, qui servira par exemple de carte de situation.
Ajouter une carte, réglez son emprise et son échelle, et allez dans la rubrique Aperçu des propriétés de cette carte, pour visualiser l'emprise de votre première carte :
Il peut être nécessaire de choisir les bonnes couches pour une des cartes dans QGIS, mettre à jour cette carte dans le composeur puis cocher la case Verrouiller les couches pour cette carte avant de faire la même chose pour l'autre carte.
De manière générale, si vous avez plusieurs cartes, la manière la plus facile de les gérer est peut-être de créer un groupe de couches par carte dans QGIS, quitte à dupliquer certaines couches.
Exporter la carte
Vous êtes satisfait de votre carte ? Voici venu le moment de l'exporter !
Vous pouvez soit l'exporter au format image (PNG, JPG) pour l'intégrer directement dans un rapport par exemple, soit l'exporter au format vectoriel SVG ou PDF pour la retravailler dans un logiciel de dessin type Inkscape ou Adobe Illustrator. Vous pouvez également l'imprimer directement !
Pour exporter au format image : vous pouvez tout d'abord paramétrer la résolution à laquelle votre carte sera exportée : onglet Composition, Options du papier :
On considère généralement qu'une résolution de 300 dpi est suffisante pour une impression. Pour en savoir plus sur ce qu'est la résolution d'une image : http://fr.wikipedia.org/wiki/R%C3%A9solution_%28imagerie_num%C3%A9rique%29
Pour ensuite exporter votre mise en page au format image : à partir du composeur, menu Composeur → Exporter comme image...
De nombreux formats sont disponibles : PNG, JPEG, TIFF, EPS...
Pour exporter au format SVG : à partir du composeur, menu Composeur → Exporter au format SVG...
Pour imprimer la carte : à partir du composeur, menu Composeur → Imprimer... ou bien Ctrl + P
L'export au format SVG peut poser quelques problèmes, en particulier pour gérer la transparence. L'export au format PDF peut parfois être plus pratique pour ensuite retoucher la carte dans un logiciel de dessin.
Un exemple de carte réalisée dans QGIS :
A noter également, l'existence d'un module permettant la génération d'atlas (il s'agit du troisième onglet dans le composeur d'impression). Ce module est décrit dans le manuel QGIS, ou bien ici (en anglais).
Sauvegarder une mise en page
Dans QGIS, les mises en page sont sauvegardées dans les projets QGS. Pour sauvegarder votre mise en page, il vous suffit donc de sauvegarder votre projet.
Dans la fenêtre principale de QGIS, rendez-vous dans le menu Projet → Sauvegarder sous....
Choisissez un emplacement : dossier TutoQGIS_10_Representation/projets par exemple, et un nom : carte_densite_01 par exemple.
XI. Automatisation de traitements
Cette onzième partie vous permettra d'aller plus loin dans votre utilisation de QGIS. Le but est ici de voir comment automatiser des traitements sous QGIS : par exemple, au lieu de découper une couche par une autre au moyen de l'outil découper, vous avez 30 couches à découper par une même autre.
Nous allons utiliser 3 méthodes différentes pour cela.
Notions abordées :
- Exécution d'un outil "par lot"
- Modeleur de traitement (graphical modeler)
- script Python
Les données pour cette partie ainsi qu'une version PDF du tutoriel sont accessibles dans la rubrique téléchargement.
X.1 Traitement de base pour une seule couche
Il s'agit ici d'un rappel de la manipulation à effectuer pour découper une couche par une autre ; c'est ce traitement que nous allons ensuite automatiser.
Lancer QGIS et ouvrir le projet visualisation.qgs situé dans TutoQGIS_11_automatisation/projets.
Vérifier que toutes les couches aient bien le même SCR.
Pour découper la couche de routes par la commune : menu Vecteur → Outils de géotraitement → Découper
Une nouvelle couche est créée, qui ne contient que les portions de routes à l'intérieur de la commune.
XI.2 Exécuter un outil « par lot »
L'outil de découpage utilisé en XI.1 est accessible via le menu vecteur. Vous pouvez également utiliser la version disponible dans la boîte à outils Traitements. Cette boîte à outils rend accessible un grand nombre d'algorithmes, issus de QGIS ou d'autres logiciels SIG ou de télédétection, tels que Grass, SAGA, OrfeoToolbox...
Pour activer cette boîte à outils : menu Traitement → Boîte à outils .
L'outil QGIS Clip se trouve dans Géotraitements QGIS → Vector overlay tools.
Vous pouvez également taper Clip dans la partie Rechercher en haut de la boîte à outils.
Il peut être plus pratique de choisir le mode Advanced interface dans la liste déroulante en bas de la boîte.
Si vous double-cliquez sur l'outil pour le lancer, une fenêtre similaire à celle utilisée en XI.1 s'ouvre (fermez cette fenêtre sans lancer l'outil).
Il est également possible d'utiliser l'outil en mode « par lot » : clic droit sur Clip, Exécuter par lot. Dans la fenêtre qui s'ouvre, chaque ligne correspond à une instance de l'outil. Chaque colonne correspond à un paramètre : la 1ère colonne à la couche en entrée, la 2ème à la couche de découpage (masque), la 3ème à la couche qui sera créée.
Pour remplir chacune des colonnes :
- Input layer : cliquer sur les … de la première ligne → Sélectionner depuis les couches ouvertes et cochez les 4 couches OSM à découper (si ces couches n'étaient pas chargées dans QGIS, utiliser l'option Sélectionner depuis le système de fichiers).
- Clip layer : comme précédemment, cliquer sur les … de la première ligne → Sélectionner depuis les couches ouvertes et cocher SAINTE_RADEGONDE. La première ligne est maintenant remplie. Pour remplir toutes les lignes de manière identique : double-cliquez sur l'en-tête de colonne Clip layer.
- Clipped : cliquer sur les …, rendez-vous dans le dossier où vous voulez créer les nouvelles couches, tapez decoupe_.shp et positionnez le curseur entre le « _ » et le « . » et cliquer sur Enregistrer . Dans la fenêtre suivante : choisir Remplir avec les valeurs du paramètre, Input Layer, afin que le nom de chaque couche qui sera créée soit complété par le nom de la couche OSM de départ.
Au final, vous devez obtenir quelque chose de similaire à ceci :
Cliquer sur Run, patienter… Les 4 couches sont créées et ajoutées à QGIS. Il est possible qu'elles soient toute nommées « Clipped ». Dans ce cas, vous pouvez les supprimer et les rajouter.
Tous les outils de la boîte Traitements sont exécutables par lot.
XI.3 Construire et utiliser un modèle
Les modèles sont surtout utiles pour chaîner plusieurs traitements. Par exemple, imaginons que notre but soit non seulement de découper une couche par une autre, mais ensuite de changer le SCR de la couche découpée pour la passer en WGS84 par exemple. Il est possible de créer un modèle enchaînant les deux outils.
Dans la boîte à outils Traitements, rubrique Modèles puis Outils, double-cliquez sur Créer un nouveau modèle.
La fenêtre qui s'ouvre comporte une partie à gauche avec 2 onglets, Entrées et Algorithmes, qui vont vous servir à créer le modèle, et une partie vide à droite où votre modèle sera représenté.
Notre modèle comportera 2 paramètres en entrée : une couche vecteur qui sera découpée et une couche vecteur qui servira de masque de découpe. L'outil de découpage va utiliser ces deux paramètres en entrée pour créer une nouvelle couche temporaire. Cette couche temporaire sera utilisée comme paramètre d'entrée pour l'outil de reprojection, qui produira la couche finale.
Création d'un modèle
Création du premier paramètre en entrée : couche à découper
Dans l'onglet Entrées, double-cliquez sur Vector layer :
- Nom du paramètre : input layer
- Type de forme : N'importe lequel, puisque cette couche peut aussi bien être de type point, ligne ou polygone
- Requis : oui, ce paramètre est obligatoire
Le paramètre est ajouté au modèle sous forme d'une boîte violette. Vous pouvez éditer ses caractéristiques en cliquant sur l'icône de crayon de cette boîte.
Création du deuxième paramètre en entrée : masque de découpe
Dans l'onglet Entrées, double-cliquez à nouveau sur Vector layer :
- Nom du paramètre : mask layer
- Type de forme : polygone
- Requis : oui, ce paramètre est obligatoire
Création du premier algorithme : découpage
Dans l'onglet Algorithmes, double-cliquez sur l'outil Clip (Géotraitements QGIS → Vector overlay tools → Clip) :
- Description : Clip
- Couche en entrée : input layer
- Couche de découpage : mask layer
- Découpé<OutputVector> : ne rentrez rien dans cette partie, pour que la couche créée soit temporaire
L'algorithme apparaît sous forme d'une boîte blanche ; de même, vous pouvez éditer ses caractéristiques en cliquant sur l'icône de crayon de cette boîte.
Création du second algorithme : modification du SCR
Toujours dans la fenêtre du modeleur de traitement, onglet Algorithmes, double-cliquez sur l'outil Reproject layer (Géotraitements QGIS → Vector general tools → Reproject layer) :
- Description : Reproject layer
- Couche en entrée : 'Découpé' créé par l'algorithme 'Clip'
- Target CRS : laissez EPSG:4326, ce qui correspond au WGS84
- Reprojected<OutputVector> : result
Enregistrement et édition du modèle
Vous devriez obtenir quelque chose de similaire à ceci :
Pour sauvegarder ce modèle, tapez d'abord son nom en haut à gauche de la partie droite de la fenêtre (clip and project par exemple) et le nom de son groupe en haut à droite de la partie droite de la fenêtre (tests par exemple).
Cliquez ensuite sur l'icône de disquette et sauvegardez le modèle dans le répertoire par défaut : processing/models dans le dossier qgis. Notez que les modèles ont l'extension .model.
Pour éditer un modèle à partir de la boîte à outils de traitements, clic droit sur son nom, Editer modèle.
Application
Découpage et reprojection d'une couche
L'objectif est de découper une couche de routes par une commune, pour ne garder que les routes à l'intérieur de cette commune, la couche obtenue devant être en WGS84.
Ajoutez à QGIS les couches OSM_routes et SAINTE_RADEGONDE situées dans le dossier TutoQGIS_11_Automatisation/donnees.
Les 2 couches sont en RGF93 Lambert 93, code EPSG 2154 (cf. partie II.3.2 : SCR d'une couche ).
Lancer le modèle clip and project : vous pouvez soit cliquer sur l'icône d'engrenages du modeleur de traitement si ce modèle est en cours d'édition, soit à partir de la boîte à outils traitements : Modèles → tests → clip and project.
- input layer : OSM_routes
- mask layer : SAINTE_RADEGONDE
- result : cliquez sur les ..., choisir Enregistrer dans un fichier..., choisir l'emplacement et nommez la future couche OSM_route_radegonde_wgs84
- cochez la case Ouvrir le fichier en sortie après l'exécution de l'algorithme pour que la couche soit automatiquement ajoutée à QGIS
Découpage et reprojection de plusieurs couches (utilisation « par lot »)
Le but est ici de découper et reprojeter plusieurs couches, sans avoir à lancer plusieurs fois le modèle.
A partir de la boîte à outils de traitements, clic droit sur le modèle clip and project, Exécuter par lot. Remplissez les différents paramètres, en vous aidant éventuellement de la partie XI.2.
Vérifiez les couches obtenues.
XI.4 Comprendre et lancer un script Python
Chaque manipulation que nous faisons dans QGIS via l'interface graphique (ajouter une couche, découper une couche etc.) peut également être faite sous forme d'une ligne de commande dans le langage Python.
Par exemple, pour ajouter la couche SAINTE_RADEGONDE.shp, située dans le dossier /mnt/travail/temp, vous pouvez soit l'ajouter à la main comme nous l'avons fait jusqu'ici, soit taper la commande Python suivante :
qgis.utils.iface.addVectorLayer("/mnt/travail/temp/SAINTE_RADEGONDE.shp", "SAINTE_RADEGONDE", "ogr")
Ce qui revient à lancer l'outil d'ajout de couche vecteur addVectorLayer de QGIS, avec 3 paramètres :
- l'emplacement de la couche : /mnt/travail/temp/SAINTE_RADEGONDE.shp
- le nom avec lequel la couche sera affichée dans QGIS : SAINTE_RADEGONDE
- le nom du fournisseur de données : ogr car QGIS utilise en interne une bibliothèque nommée ogr pour accéder aux shapefiles
Nous allons ici ouvrir un script Python existant qui découpe et reprojette en WGS84 toutes les couches shapefiles présentes dans un même dossier. Sans rentrer dans le détail, nous verrons comment est constitué ce script, comment le paramétrer et le lancer.
Lancer une commande Python dans QGIS
Rendez-vous dans le menu Extension → Console Python.
La console s'ouvre en bas de la fenêtre de QGIS. Dans cette console, vous pouvez taper des commandes Python qui seront exécutées une à une.
Tapez print ('hello !') en bas de la console :
Puis appuyez sur la touche entrée. Vous devriez voir votre commande, suivie du résultat, en haut de la console :
Vous venez d’utiliser la commande Print, qui permet d'afficher du texte dans la console. Vous pouvez également tester la commande citée plus haut pour ajouter une couche vecteur :
qgis.utils.iface.addVectorLayer("/mnt/travail/temp/SAINTE_RADEGONDE.shp", "SAINTE_RADEGONDE", "ogr")
En adaptant le chemin vers la couche.
Il est possible de travailler uniquement en lançant ainsi des commandes une à une ; seulement, les commandes utilisées ne seront pas sauvegardées et ne pourront donc être réutilisées sans tout retaper à la main (même s'il est possible de faire défiler les dernières commandes utilisées en appuyant sur la touche flèche haut du clavier).
Ouvrir un script Python
Pour sauvegarder et réutiliser facilement votre travail, le plus simple est d'utiliser ce qu'on appelle un script. Il s'agit simplement d'un fichier texte comportant une suite de commandes, et qui porte l'extension PY puisqu'il s'agit d'un script Python.
Cette formation n'étant pas une formation Python, nous nous contenterons d'ouvrir un script existant plutôt que d'en créer un nous-mêmes.
Pour ouvrir un script : cliquez sur l'icône Afficher l'éditeur de la console : l'éditeur de script s'ouvre.
Dans l'éditeur, cliquez sur l'icône Ouvrir fichier (celle du haut) et allez chercher le script clip_and_reproject.py situé dans TutoQGIS_11_Automatisation/scripts.
N'hésitez pas à agrandir la partie consacrée à la console dans QGIS, au détriment de la fenêtre de visualisation des données.
Lisez le contenu du script. Les lignes commençant par un # sont des commentaires : leur contenu ne sera pas pris en compte, ils sont uniquement utiles pour mieux comprendre le script.
L'objectif n'est pas de comprendre dans le détail tout ce que fait ce script, mais de comprendre globalement ce qui s'y passe, notamment au moyen des commentaires. Il s'agit ici d'un script faisant le même travail que le modèle que vous avez réalisé en XI.3 en mode par lot, à savoir découper plusieurs couches par une même couche et reprojeter les couches obtenues en WGS84.
Paramétrer le script
Au début du script, vous trouverez ces lignes :
Il s'agit des paramètres en entrée et sortie du script :
- input folder : le dossier où sont situées les couches à découper
- mask layer : la couche qui servira de masque de découpe
- output folder : le dossier où seront enregistrées les couches créées
A vous de modifier ces paramètres suivant l'emplacement des données sur votre ordinateur !
Sur Windows, les chemins seront de la forme 'C:/…' par exemple.
Lancer le script
Pour lancer le script, cliquez sur l'icône Exécuter le script en bas de l'éditeur (il est possible que cette icône soit masquée et qu'il faille agrandir la console pour la voir apparaître).
Vérifiez que tout ait bien fonctionné.
Quelles modifications apporter au script pour que :
Ligne 57, remplacer 'EPSG:4326' par 'EPSG:27572'. Vous pouvez également remplacer ligne 55 '_wgs84.shp' par '_ntfl2.shp' (il s'agit du suffixe qui sera ajouté au nom de la nouvelle couche).
Dans la boîte à outils de traitements → géotraitements QGIS → Vector Overlay To
Ajouter un commentaire
Commentaires
1 cleaning services Le 12/07/2018