1.6 Sélections et Jointures

1.6.1 Sélections

1. Sélection spatiale à la souris

Bouton de Sélection graphique La sélection spatiale peut se faire directement sur la carte via les boutons de Sélection des entités de la barre d’outils Sélection.

Il faut que la couche cible soit sélectionnée dans le panneau Couches. La sélection se fait ensuite par un clic-gauche sur les entités. Pour ajouter des entités à une sélection déjà existante, il faut maintenir la touche Maj enfoncée. Pour en retirer c'est avec la touche Ctrl.

Les fichiers générés dans les exercices suivants seront à enregistrer dans le répertoire data/mon_travail/1_6_selection_jointure.

Créez un nouveau projet dans data/mon_travail dénommé 1_6_selection_jointure_occitanie_hydro.qgz.

Ouvrez les couches COMMUNE.shp et DEPARTEMENT.shp incluses dans le répertoire data\IGN_ETALAB\ADMIN-EXPRESS-COG, et les couches CoursEau_76_Occitanie.shp et PlanEau_76_Occitanie.shp incluses dans le répertoire data\IGN_ETALAB\BD_Carthage.

Enregistrez le projet.

Dans le panneau Couches, positionnez la couche CoursEau_76_Occitanie.shp au-dessus des autres couches.

Testez différents modes de sélection sur la couche CoursEau_76_Occitanie.shp.

Bouton de désélection permet de désélectionner les entités préalablement sélectionnées (sans les supprimer de l'affichage).

2. Sélection via les attributs

Bouton de Sélection via les attributs La sélection se fait via une fenêtre permettant de construire la requête. Elle s’ouvre soit en cliquant sur la couche dans la légende puis sur le bouton Sélectionner les entités en utilisant une expression soit via la table d’attributs de cette couche, en cliquant sur le même bouton.

Fenêtre de Sélection

Sur la droite de cette fenêtre, sont listés un certain nombre d’opérateurs et de fonctions (AND, OR, +, sqrt, log, $area, etc.) ainsi que l’ensemble des Champs de la table. Lorsque l’on clique sur un de ces éléments, l’aide s’affiche à droite et, dans le cas d’un champ de la table, une zone permet de visualiser les valeurs contenues dans ce champ.

Pour ajouter un nom de champ ou une fonction à la requête il faut double-cliquer sur son nom.

L’opérateur != signifie "différent de". Pour les champs de type texte, les valeurs doivent être encadrées de guillemets simples (). Lorsque que le caractère joker (%) est employé, les opérateurs LIKE ou ILIKE doivent être utilisés (attention, ils sont sensibles à la casse).

L’aperçu du résultat, en bas à gauche de la fenêtre permet de valider la syntaxe de la requête.

Exercice 11. Visualisez la couche DEPARTEMENT puis ouvrez la table d'attributs de cette couche. Sélectionnez les départements dont le code "INSEE_REG" est '76' (code de la région Occitanie, attention ici champ texte donc mettre dans l'expression "INSEE_REG" ='76' et non "INSEE_REG" =76).

Enregistrez les entités sélectionnées dans une nouvelle couche : DEPARTEMENT_Occitanie.shp avec Clic-droit sur la couche DEPARTEMENT + Exporter/Sauvegarder les entités sélectionnées sous ... dans data/mon_travail/1_6_selection_jointure.

Pensez ensuite à désélectionner les polygones de la couche DEPARTEMENT.

Voir la solution

3. Sélection spatiale en fonction d’une autre couche

La sélection spatiale permet de faire des sélections en se basant sur la position d’entités d’une couche par rapport à d’autres couches. Les deux couches doivent impérativement être dans le même système de coordonnées.

Bouton de Sélection par localisation Cet outil de sélection se trouve dans le menu Vecteur/Outils de recherche/Sélection par localisation. La couche sur laquelle la sélection sera effectuée et la couche d’intersection sont à choisir parmi celles chargées dans QGIS. L’outil permet de créer une nouvelle sélection, ajouter à une sélection ou retirer d’une sélection.

Fenêtre de Sélection par localisation

Exercice 12. Dans la couche CoursEau_76_Occitanie, sélectionnez le fleuve Aude (manuellement ou à l'aide d'une expression). Puis, à l'aide de l'outil Sélection par localisation, sélectionnez les communes traversées par ce cours d'eau. Combien y a t-il de communes concernées ?

Sélection Spatiale Aude

Exportez la liste des communes intersectées dans un nouveau fichier COMMUNE_fleuve_Aude dans data/mon_travail/1_6_selection_jointure : Clic-droit sur la couche + Exporter/Sauvegarder les entités sélectionnées sous .... Utilisez le format ODS de manière à pouvoir l’ouvrir avec un tableur. Bien spécifiez Type de géométrie = Aucune géométrie dans les options de sortie.

Voir la solution

1.6.2 Jointures

1. Jointure via la table d’attributs

La jointure par attributs permet de joindre les champs d’une table (ou d'une couche) à une table d’attributs d’une couche existante.

Pour que la jointure soit possible, il faut que les deux tables aient un champ en commun (un champ d’identifiant par exemple). Les noms des champs peuvent être différents mais leur type doit être de même nature (idéalement numérique).

Onglet Jointure attributaire Pour joindre une table à une table d’attributs d’une autre couche, il faut aller dans l’onglet Jointures de la fenêtre de Propriétés de la couche cible. Une jointure s’ajoute en cliquant sur le bouton Jointure ajouter.

Fenêtre de Jointure attributaire

La table à joindre est à choisir parmi la liste des couches vectorielles et des tables chargées dans QGIS. Se choisissent ensuite le Champ de jointure de la table à joindre puis le champ de jointure de la couche cible (Champ dans la couche cible), avec le choix d'un préfixe court adapté pour faciliter leur repérage.

En résultat, les champs de la table jointe viennent s’ajouter "virtuellement" à la table initiale de la couche. Ils sont donc ensuite disponibles pour les sélections, les calculs de champs, etc. Ils ne seront cependant pas modifiables.

Attention

Les informations de jointure sont stockées dans le fichier de projet QGIS. Pour utiliser la couche avec sa jointure dans un autre projet ou dans d’autres traitements, il faut exporter la couche (clic-droit sur la couche puis Exporter/Sauvegarder les entités sous...).

Exercice 13. Ouvrez dans un tableur (LibreOffice Calc ou Microsoft Excel) la base Comparateur de communes de l'INSEE : base_cc_comparateur_occitanie.xls (répertoire: data/INSEE). Le but de cet exercice est d'importer ce fichier dans QGIS et de le joindre à la couche COMMUNE.

Pour que les données INSEE soient exploitables dans QGIS, il faut que la 1ère ligne du tableau contienne les noms des colonnes ("CODGEO", "LIBGEO", "REG", "DEP", etc.). Dans votre tableur, supprimez les 5 premières lignes de la feuille COM_occitanie. Enregistrez la feuille modifiée dans un nouveau fichier com_comparateur_occitanie.ods (ou format .xlsx, ou .xls), et fermez le tableur.

Dans QGIS, pour ouvrir la feuille COM_occitanie du classeur com_comparateur_occitanie.ods, vous allez utiliser l'extension Spreadsheet Layers qu'il faut activer dans le menu Extension / Installer-Gérer les extensions. Vous trouverez ensuite l'outil dans le menu Couche/Ajouter une couche/Ajouter une couche feuille de calcul (cf. Astuce pour charger une table mal formatée). Vérifiez le type de chaque champ et validez.

Vous allez joindre les données INSEE à la couche COMMUNE. Les champs qui nous intéressent pour la suite de l'exercice sont "P16_LOG" et "P16_RSECOCC" (nombre total de logements, et nombre de résidences secondaires ou occasionnelles en 2016 par commune). Ouvrez les propriétés de la couche COMMUNE, ajoutez une jointure avec la table COM_occitanie basée sur les champs "CODGEO" et "INSEE_COM". Dans les champs joints, choisissez : "P16_LOG" et "P16_RSECOCC" et comme préfixe : "j_". N'oubliez pas de valider avec Appliquer+OK. Ouvrez la table attributaire de la couche COMMUNE et vérifiez que les 2 champs joints se trouvent bien à droite.

Exportez la couche COMMUNE avec la jointure sous le nom : commune_logemt_occitanie.shp (clic droit + Exporter/Sauvegarder les entités sous...) dans data/mon_travail/1_6_selection_jointure.

Ouvrez la table attributaire de la couche commune_logemt_occitanie.shp. Basculer en mode Edition, ouvrez la calculatrice de champ et calculez dans une nouvelle colonne "p_rsec" le pourcentage de résidences secondaires et logements occasionnels en 2016 (utilisez les champs "P16_RSECOCC" et "P16_LOG" pour le calcul). Enregistrez et quittez le mode édition.

Ensuite, réalisez une cartographie du pourcentage de résidences secondaires et logements occasionnels dans les communes de l'Occitanie : classez les pourcentages avec le mode Jolies ruptures (5 classes dans l'exemple ci-dessous) et utilisez le dégradé de couleurs de votre choix.

Enregistrez le projet.

Voir la solution

Voici une "suggestion de présentation" réalisée avec QGIS 3.10.

Occitanie Pourcentage Résidences Secondaires

2. Jointure spatiale

La jointure spatiale permet de joindre les attributs d’une couche à une autre couche en se basant uniquement sur leurs localisations respectives.

Boite à outils Les outils de jointure spatiale se trouvent dans la Boîte à outils (menu Traitement) puis dans Outils généraux pour les vecteurs/Joindre les attributs par localisation et Joindre les attributs par localisation (résumé).

Fenêtre de Jointure spatiale Fenêtre de Jointure spatiale avec résumé

Une jointure spatiale peut être effectuée entre tous les types de couches (entre deux couches de points, une couche de lignes et une couche de polygones, etc.).

Cet outil crée une nouvelle couche issue de la jointure spatiale. Le type de la nouvelle couche vecteur est toujours identique à celui de la couche cible : par exemple, si on joint les attributs d’une couche de polygones à une couche de lignes (couche cible), la couche en sortie est une couche de lignes et sa table d’attributs reprend les attributs des lignes auxquels sont joints les attributs du ou des polygones intersectés par les lignes et, si l’option résumé est choisie, avec un calcul de la moyenne, la somme, la médiane, etc. des attributs de type numérique du ou des polygones.

Exercice 14. Dans cet exercice, vous allez déterminer pour chaque plan d'eau, dans quel département il est situé.

Ouvrez l'outil Joindre les attributs par localisation. À la couche source PlanEau_76_Occitanie, joignez la couche DEPARTEMENT_Occitanie avec les options suivantes :

  • Prédicat = intersecte
  • Champs à ajouter = "INSEE_DEP" et "NOM_DEP_M"
  • Type de jointure = Prendre uniquement les attributs de la première entité localisée (correspondance unique) (car certains plans d'eau sont à cheval sur plusieurs départements).
  • Ne cochez pas la case "Supprimer les enregistrements qui ne peuvent être joints"
  • Couche issue de la jointure spatiale : le chemin et le nom du fichier de sortie doivent être spécifiés, par exemple : plando_dept_joinspat.shp (attention bien spécifiez le chemin vers data/mon_travail/1_6_selection_jointure).

Inspectez le résultat : la couche en sortie a-t-elle le même nombre d'entités que la couche PlanEau_76_Occitanie en entrée ? Combien de plans d'eau ne sont pas à l'intérieur d'1 département d'Occitanie ? Combien de plans d'eau sont à cheval sur plusieurs départements d'Occitanie ?


A l'inverse, vous allez maintenant déterminer le nombre de plans d'eau par département.

Ouvrez l'outil Joindre les attributs par localisation (résumé). A la couche source DEPARTEMENT_Occitanie, joignez la couche PlanEau_76_Occitanie avec les options suivantes :

  • Prédicat = contient
  • Champs à résumer = "CdEntiteHy" (un seul champ et n'importe lequel suffit car il stocke le résultat du comptage)
  • Résumés à calculer = compte
  • Ne cochez pas la case "Supprimer les enregistrements qui ne peuvent être joints"
  • Couche issue de la jointure spatiale : spécifiez le chemin et le nom du fichier de sortie, par exemple : dept_plando_count.shp dans data/mon_travail/1_6_selection_jointure.

Inspectez le résultat et enregistrez le projet.

Voir la solution

Pour plus de détail sur les prédicats géométriques (intersecte, touche, contient, chevauche, croise, etc.), référez-vous à la documentation de QGIS.

1.6.3 À RETENIR

  • Pour une sélection spatiale ou pour une sélection par expression, la couche cible doit être sélectionnée dans le panneau Couches.
  • Le constructeur d’expression a un onglet Expression (avec des fonctions prédéfinies, une zone d’écriture et de vérification...), et un onglet Éditeur de fonctions (pour écrire vos propres fonctions en langage Python).
  • La sélection par localisation, selon des prédicats géométriques, fonctionnent entre deux couches ayant le même système de coordonnées.
  • La jointure par attributs permet d’associer les attributs d’une couche vecteur (ou table) chargée dans QGIS à la couche cible, grâce à un attribut commun et de même type.
  • La jointure par localisation applique un critère spatial pour sélectionner les valeurs de la deuxième couche qui sont ajoutées à chaque entité de la première couche. Les deux couches doivent être dans le même système de coordonnées.
  • La jointure par localisation (résumé) calcule en plus un résumé statistique (valeur maximale, valeur moyenne, etc.).