VI. Sélectionner des données : les requêtes

VI.1 Sélectionner des éléments en fonction de leurs données attributaires : 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 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.

Faire une requête simple

Ajoutez la couche DEPARTEMENT 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 cliquer 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électionner les entités en utilisant une expression.

barre d'outils de la table attributaire avec icône sélection entourée en rouge

La fenêtre de requête attributaire s'ouvre :

fenêtre de sélection, avec une requête simple

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_DEP 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 Tous uniques pour voir dans la case Valeurs la liste des valeurs uniques du champ sélectionné (ici, NOM_DEP)
  • Double-cliquez sur la valeur 'NORD' (notez les guillemets simples)
  • A ce stade, la case Expression doit contenir : "NOM_DEP" = 'NORD'
  • Cliquez sur le bouton Sélectionner des entités 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és 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.

carte avec le département du Nord sélectionné

Vous pouvez lire le nombre d'éléments sélectionnés en haut de la table attributaire, ou encore en bas à gauche de la fenêtre de QGIS, dans la barre d'état :

ligne indiquant le nombre d'éléments sélectionnés, en haut de la table et dans la barre d'état

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 le 1er résultat trouvé, ici 0 pour le département de l'Ain.

Créer une nouvelle couche à partir d'une sélection

Il est possible de créer une nouvelle couche vecteur à partir d'une sélection.

Votre département du Nord étant toujours sélectionné, faites un clic droit sur la couche de départements → Exporter → Sauvegarder les entités sélectionnées sous...

fenêtre pour sauvegarder la sélection
  • Choisissez le format GeoPackage
  • Cliquez sur ... 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.

Désélectionner des entités

Par défaut, une nouvelle requête attributaire « part de zéro », en ne tenant pas compte des entités déjà sélectionnées (pour au contraire tenir compte d'une requête précédente, cf. partie VI.3.1 : Combiner deux requêtes attributaires).

Néanmoins, pour plus de clarté, il peut être utile de désélectionner des entités.

icône de désélectionPour désélectionner toutes les entités dans toutes les couches : cliquez sur le bouton Désélectionner toutes les entités de la barre d'outils Sélection.

Pour désélectionner les entités d'une seule couche, cliquez sur la flèche à côté du même bouton, pour choisir l'option Désélectionner les entités de la couche courante, ou bien cliquez sur le bouton Désélectionner toutes les entités de la couche en haut de la table attributaire de celle-ci.

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_Bretagne 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 nombre 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 Rennes est la plus peuplée avec 216 268 habitants.

icône de sélection de la table attributaireNous 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 sélection avec une requête pour les communes de population supérieure à 10
  • Cliquez sur Champs et valeurs pour voir la liste des champs, puis double-cliquez sur le champ POPULATION
  • Dans la case Expression, tapez > 10000

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 10000 à la main.

Une fois votre requête tapée : "POPULATION" > 10000, cliquez sur le bouton Sélectionner des entités pour voir le résultat :

résultat de la requête pour les communes de population supérieure à 10

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 :

liste des opérateurs avec aide pour l'opérateur <>

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 commence par 'PLOU' !

Ouvrez la fenêtre de sélection pour la couche de communes. Écrivez la requête suivante : "NOM_COM_M" like 'PLOU%' (soit en la tapant à la main soit en double-cliquant sur les différents éléments).

communes dont le nom commence par PLOU

Pour lire les noms des communes sélectionnées dans la table attributaire, vous pouvez sélectionner l'option Ne montrer que les entités sélectionnées en bas de la table attributaires. N'oubliez pas de revenir à Montrer toutes les entités ensuite !

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

icône de désélectionEntre 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 commence 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

"NOM_COM_M" like 'PLOU%' and "POPULATION" > 10000 : cette requête sélectionne 3 communes.

"NOM_COM_M" LIKE 'BREST' OR "NOM_COM_M" LIKE 'PLOUZANE' : cette requête sélectionne 2 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 Brest et Plouzané en même temps).

Une autre possibilité, moins lourde, consiste à utiliser l'opérateur IN : "NOM_COMM_M" IN ('BREST', 'PLOUZANE')

Petite astuce : vous pouvez retrouver les dernières requêtes utilisées dans la rubrique Récent, il suffit de double-cliquer sur une requête pour qu'elle apparaisse dans la case Expression :

Accès aux requêtes attributaires récentes

Quelques exemples à tester

Voici quelques exemples à tester, plusieurs requêtes sont parfois possibles pour un même résultat.

Pouvez-vous sélectionner ? ...

"NOM_COM_M" like 'POULDREUZIC' : une commune sélectionnée

"INSEE_DEP" = '22' : 348 communes sélectionnées

"NOM_COM_M" like '%SAINT%' : 189 communes sélectionnées

"NOM_COM_M" like 'PLOU%' AND "NOM_COM_M" like '%EC' : 5 communes sélectionnées

"POPULATION" >= 10000 AND "POPULATION" <= 50000 : 32 communes sélectionnées

"INSEE_DEP" LIKE '56' AND ( "NOM_COM_M" LIKE '%PLOU%' OR "NOM_COM_M" LIKE '%EC%') AND "POPULATION" <= 10000 : 12 communes sélectionnées

Nous avons vu ici comment sélectionner des entités en fonction de leurs données attributaires. Au chapitre suivant, nous verrons comment sélectionner des entités en fonction de leur position par rapport aux entités d'une autre couche !


chapitre précédent chapitre suivant
haut de page