5 Sélectionner des entités

Un chapitre plus léger, les requêtes c’est chouette ! Ou bien :

  • comment sélectionner des entités en fonction de leurs données attributaires
  • comment sélectionner des entités en fonction de leur position par rapport aux entités d’une autre couche

Nous allons voir ici comment faire des requêtes attributaires, par exemple pour sélectionner toutes les communes ayant une population de + de 10 000 habitants, et des requêtes spatiales, par exemple sélectionner toutes les communes contenant des éoliennes.

Données utilisées (pas la peine de les télécharger !)

5.1 Requêtes attributaires

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 communes dont le nom commence par « Plou ».

Nous ne passerons en revue que quelques unes des possibilités de QGIS en matière de requête attributaire. Pour une description de tous les opérateurs et fonctions possibles : voir le manuel QGIS.

5.1.1 Faire une requête simple

Créez un nouveau projet QGIS. Ajoutez la couche communes_bretagne.shp située dans le dossier 5_requetes/donnees. Ouvrez la table attributaire de cette couche.

Nous avons vu précédemment comment sélectionner une entité en cliquant sur le numéro de la ligne correspondante ou bien directement sur cette entité sur la carte. Vous pouvez aussi passer par une requête attributaire.

Pour commencer, nous sélectionnerons la commune de Rennes par une requête attributaire. Ce sera donc une requête sur le nom de la commune.

Repérez d’abord quel est le nom du champ contenant les noms des communes (ici il y en a 2, un avec les noms “normaux” et l’autre avec les noms en majuscules).

Dans la barre d’outils située en haut de la table attributaire, cliquez sur l’icône Sélectionner les entités en utilisant une expression :

Barre d’outils de la table attrib
Barre d’outils de la table attrib

La fenêtre de requête attributaire s’ouvre.

Fenêtre de sélection par expression
Fenêtre de sélection par expression

Pour faire une requête simple, par exemple pour sélectionner la commune de Rennes

  • 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 pour le faire apparaître dans la case Expression à gauche de la fenêtre (notez les guillemets doubles)
  • Cliquez sur l’opérateur = en haut à gauche
  • Cliquez sur le bouton Tous uniques pour voir la liste des valeurs uniques du champ (ici, NOM_DEP) en bas à droite
  • Double-cliquez sur la valeur ‘Rennes’, ou sur votre commune préférée (notez les guillemets simples)
  • A ce stade, la case Expression doit contenir : "NOM" = 'Rennes'
  • Cliquez sur le bouton Sélectionner des entités en bas de la fenêtre

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 : la commune de Rennes doit être en jaune.

Vous pouvez lire le nombre d’éléments sélectionnés en haut de la table attributaire :

Nb d’éléments sélectionnés en haut de la table attributaire
Nb d’éléments sélectionnés en haut de la table attributaire

Vous venez d’effectuer une requête attributaire simple. 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 !

5.1.2 Quelques opérateurs

Dans l’exemple ci-dessus, nous avons utilisé l’opérateur = pour notre requête. Il en existe d’autres, comme par exemple les opérateurs mathématiques < et >, *, /…

Icône de sélection par expression 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 :

Fenêtre de l’outil de sélection par expression, avec sélection des communes de + de 10 000 habitants
Fenêtre de l’outil de sélection par expression, avec sélection des communes de + de 10 000 habitants
  • 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 du milieu. Il faut ensuite taper la valeur 10 à la main.

Une fois votre requête tapée, cliquez sur le bouton Sélection pour voir le résultat.

Résultat de la requête : les communes de + de 10 000 habitants sont en jaune
Résultat de la requête : les communes de + de 10 000 habitants sont en jaune

La ligne Opérateurs visible dans la fenêtre de sélection n’en comporte que quelques uns; 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 de la fenêtre.

Intéressons-nous aux opérateurs LIKE et ILIKE. Ces deux opérateurs sont utilisées sur du texte.

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…

L’opérateur ILIKE est équivalent à LIKE mais ne tient pas compte de la casse (majuscules ou minuscules).

Sélectionnons les communes dont le nom se termine par ‘Plou’ :

Écrivez la requête suivante :

"NOM" LIKE 'Plou%'

(soit en la tapant à la main soit en double-cliquant sur les différents éléments).

Pour ne voir que les communes sélectionnées dans la table, vous pouvez choisir Ne montrer que les entités sélectionnées dans la liste déroulante en bas à gauche de la table.

5.1.3 Combiner plusieurs critères

Comment faire si l’on veut sélectionner par exemple les communes de + de 10 000 habitants dont le nom se termine par ‘Plou’ ?

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

Quelle requête utiliser pour sélectionner les communes de plus de 10 000 habitants dont le nom commence par ‘Plou’ ? (indice : 3 communes seront sélectionnées)

Quelle requête utiliser pour sélectionner les communes de Rennes et Dinard ? (plusieurs possibilités)

Vous pouvez retrouver les dernière requêtes utilisées dans la partie Récent, dans la partie du milieu de la fenêtre de requête attributaire, avec les autres fonctions et opérateurs :

Requêtes récentes
Requêtes récentes

5.1.4 Quelques exemples à tester

Pouvez-vous sélectionner ? … (plusieurs requêtes sont parfois possibles pour un même résultat)

Les préfectures ? (3 communes)

Les communes ayant une population entre 10 000 et 20 000 habitants inclus ?

Les communes du département du Finistère (29) ? (277 communes)

Les communes dont le nom se termine par ‘ec’ ? (52 communes)

Les communes dont le nom commence par ‘Plou’ et se termine par ‘ec’ ? (5 communes)

Les communes du département du Finistère, dont le nom contient ou ‘plou’ ou ‘ker’ (avec ou sans majuscule !), et dont la population est inférieure ou égale à 1000 habitants ? (8 communes)

5.2 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.

5.2.1 Ajout d’une couche d’éolienne : connexion à un flux WFS

Les requêtes spatiales que nous allons faire mettront en jeu la couche de communes déjà chargées et une couche d’éoliennes. Nous sélectionnerons par exemple les communes contenant une ou plusieurs éoliennes, les éoliennes situées dans le département des Côtes d’Armor…

Mais cette fois, au lieu d’ajouter la couche d’éoliennes à partir des données que vous avez téléchargées, nous allons nous connecter au serveur de GéoBretagne pour l’ajouter grâce à un flux WFS !

Si vous avez des soucis de connexion, la couche est également disponible avec les autres données dans le dossier 5_requetes.

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 non modifiables : vous pourrez simplement régler leur transparence
  • Les flux WFS vous permettront d’afficher des couches vecteur, non éditables mais dont vous pourrez changer le style, et que vous pourrez télécharger au format shapefile ou autre.

La première chose à faire est d’obtenir l’adresse du flux WFS de GéoBretagne : l’info est disponible ici : https://geobretagne.fr/geoserver/ows?service=WFS

Dans le panneau Explorateur, faites un clic droit sur WFS / OGC API - Features > Nouvelle connexion…

rubrique WFS dans le panneau explorateur Nouvelle connexion WFS : nom et URL

La connexion est maintenant ajoutée, vous devriez la voir dans l’arborescence des couches WFS. Vous pouvez voir les couches disponibles en cliquant sur le petit triangle devant la connexion.

Naviguez jusqu’à la couche Eoliennes implantations en Bretagne et double-cliquez dessus pour l’ajouter au projet (ou bien clic droit > Ajouter la couche au projet).

Cette couche est maintenant utilisable comme n’importe quelle couche vecteur, à ceci prêt qu’elle n’est pas éditable. Si vous aviez besoin de la modifier, vous pourriez la sauvegarder par un clic droit > Exporter > Sauvegarder les entités sous…

5.2.2 Faire une requête spatiale simple

Votre projet doit maintenant contenir 2 couches : une de communes et une d’éoliennes, sur la Bretagne.

Le but va être ici de sélectionner toutes les communes sur lesquelles sont implantées une ou plusieurs éoliennes.

Dans la boîte à outils, trouvez l’outil Sélection par localisation :

Fenêtre de l’outil de sélection par localisation
Fenêtre de l’outil de sélection par localisation
  • Sélectionnez les entités depuis : il s’agit de la couche dans laquelle sera faite la sélection, sélectionnez la couche de communes
  • Où les entités : choisissez l’opérateur contient
  • En comparant les entités de : sélectionnez la couche d’éoliennes
  • Créer une nouvelle sélection
  • Cliquez sur Exécuter, vous pouvez ensuite fermer la fenêtre.

Les communes sélectionnées apparaissent en jaune, on peut lire en bas à gauche de la fenêtre de QGIS le nombre d’entités sélectionnées : ici 256 (ce nombre pourra cependant varier selon la date à laquelle vous faites le test, la couche d’éoliennes pouvant être mise à jour).

5.2.3 Quelques exemples

Icône de l’outil de désélection Entre deux requêtes, pour être sûr-e de repartir à zéro, utiliser l’outil Désélectionner toutes les entités.

En utilisant différents opérateurs, pouvez-vous dire ?…

  • S’il y a des éoliennes qui ne sont pas dans une commune bretonne ? (0 éoliennes)
  • Combien le département du Morbihan comporte-t-il d’éoliennes ? Pour cela, il faut procéder à une requête attributaire au préalable. (598 éoliennes)

Toujours à partir de la connexion WFS à GéoBretagne, ajoutez la couche NATURA 2000 - Directive Oiseaux en Bretagne (ZPS).

Pouvez-vous dire :

  • Combien de communes intersectent une zone Natura 2000 ? (166 communes)
  • Combien de communes ont à la fois une partie de leur territoire en zone Natura 2000 et des éoliennes ? Pour cela, procéder à 2 requêtes spatiales successives. (16 communes)