Filtrage avec le constructeur de requête

Méthode1ère méthode

Pour accéder au Constructeur de requête  :

  • Faire un clic droit sur le nom de la couche (active) dans le panneau Couches

  • Cliquer sur Filtrer

Menu FiltrerInformations[1]

Méthode2ème méthode

Cliquer sur Ouvrir Propriétés de la couche

Dans l'onglet Source, cliquer sur le bouton Constructeur de requête en bas à droite :

Fenêtre Propriétés de la couche

Méthode3ème méthode

Menu Couche Filtrer

La boîte de dialogue Constructeur de requête se présente comme suit :

Boîte de dialogue Constructeur de requête

La boîte de dialogue Constructeur de requête est composée des zones suivantes :

1 : Nom de la table sur laquelle est effectuée la sélection attributaire

2 : Cadre Champs : contient tous les attributs de la couche. Pour ajouter un attribut à la clause WHERE (cadre expression), double-cliquer sur son nom dans la liste.

3 : Cadre Valeurs : liste tout ou partie des valeurs (attributs) du champ sélectionné dans le cadre Champs.

Pour lister la totalité des valeurs, cliquer sur le bouton [Tout]. Pour lister uniquement les 25 premières valeurs, cliquer sur [Échantillon].

Pour ajouter une valeur à la clause WHERE (cadre expression), double-cliquer dessus.

Attention : si la couche a déjà fait l'objet d'un filtrage au moyen du constructeur de requête, seules les valeurs résultant de cette sélection sont affichées et la sélection sera effectuée sur le sous-ensemble déjà sélectionné.

Pour obtenir la liste de toutes les valeurs du champ, cocher la case ‘Utiliser la couche non filtrée'.

4 Cadre Opérateurs Les opérateurs principaux utilisés dans les requêtes figurent sous forme de boutons à cliquer. Pour ajouter un opérateur à la requête SQL, cliquez sur le bouton correspondant.

5 Cadre expression (‘Expression de filtrage spécifique au fournisseur') Ce cadre contient l'expression littérale de la sélection. C'est la clause WHERE de la requête SQL .

  • Le bouton [Tester] affiche une fenêtre comptabilisant le nombre d'entités correspondant à la requête, permettant de savoir si la requête est correctement écrite.

  • Le bouton [Effacer] annule le texte de la requête.

  • Le bouton [OK] effectue la sélection en fonction de la recherche définie et ferme la boîte de dialogue Constructeur de requête. Si la requête a été effacée avant, la couche entière réapparaît.

  • Le bouton [Annuler] ferme la fenêtre, sans effectuer la requête

Remarque

Il est aussi possible d'écrire directement l'expression de la sélection dans le cadre expression, mais l'utilisation des double-clics est plus ergonomique et évite les erreurs d'écriture, notamment pour les valeurs des attributs.

Exemple

Dans la couche COMMUNE (BD_TOPO/H_ADMINISTRATIF) on souhaite sélectionner les communes du canton de MALICORNE-SUR-SARTHE.

Couche COMMUNE

A – Choix du champ

Après avoir ouvert la couche et l'avoir sélectionnée (surbrillance dans le panneau Couches), faire apparaître le constructeur de requête (clic droit sur la couche active → Filtrer ):

Double-cliquer sur le champ CANTON dans le cadre champs (1)

Le texte ‘'CANTON‘' apparaît dans le cadre expression (2) (QGIS a ajouté les doubles quotes autour de CANTON, c'est la syntaxe SQL):

Choix du champ

B – Choix de l'opérateur

Choisir l'opérateur '=' en cliquant sur le bouton '=' (3)

L'opérateur '=' est ajouté à l'expression avec l'espace qui le sépare de « CANTON » (4) :

Choix de l'opérateur

Le curseur de texte clignotant est en attente après l'opérateur '='

C – Choix de la valeur du champ

Pour écrire la valeur qui convient (MALICORNE-SUR-SARTHE) on a le choix entre taper directement la chaîne de caractères (fastidieux et source d'erreurs) ou bien la choisir dans un échantillon de valeurs affichées.

Pour afficher toutes les valeurs du champ CANTON, il suffit de sélectionner le champ CANTON (un seul clic sur CANTON dans le cadre Champs) puis de cliquer sur le bouton Tout dans le cadre Valeurs à droite (5).

Toutes les valeurs présentes dans le champ CANTON de la table d'attributs sont affichées dans le cadre Valeurs (6):

Choix de la valeur

Un double -clic sur la valeur MALICORNE-SUR-SARTHE permet de l'écrire dans le cadre expression ("Expression de filtrage spécifique au fournisseur").

QGIS ajoute les simples quotes autour de la valeur (syntaxe SQL).

L'expression complète de la clause WHERE est :

"CANTON" = 'MALICORNE-SUR-SARTHE'

Requête complète

La requête complète en langage SQL est la suivante (c'est celle qui est exécutée par le logiciel) :

SELECT * FROM COMMUNE WHERE "CANTON" = 'MALICORNE-SUR-SARTHE'

En langage courant :

Sélectionner (SELECT)

tous les champs (*) (on prend toutes les colonnes de la table attributaire)

de la couche COMMUNE (FROM COMMUNE)

lorsque la valeur du champ CANTON est égale à MALICORNE-SUR-SARTHE (WHERE "CANTON" = 'MALICORNE-SUR-SARTHE')

La syntaxe peut paraître un peu lourde au début, mais avec un peu d'habitude, le langage SQL est praticable et il est très puissant !

Les notions fondamentales du langage SQL sont présentées dans le stage QGIS perfectionnement.

Un clic sur le bouton Tester donne le résultat suivant :

Information sur le résultat de la requête

(dommage pour l'accord du participe passé, le français est souvent plus compliqué que le SQL !)

Après avoir cliqué sur OK pour effectuer la requête, seules les entités sélectionnées apparaissent dans la carte :

Sous-ensemble de la couche COMMUNE résultant de la requête

Il en est de même dans la table attributaire :

Table attributaire du sous-ensemble

Remarque

Dans l'onglet Source de la boîte de dialogue Propriétés de la couche, l'expression de la sélection (la clause WHERE de la requête SQL) apparaît dans le cadre Sous-ensemble (sous-ensemble d'entités) :

Cadre Sous-ensemble de l'onglet Source

Attention

Tant que la requête n'a pas été effacée, c'est le sous-ensemble contenant les entités sélectionnées qui est affiché.

Dans le panneau de couches un symbole de filtrage (voir ci-dessous) indique les couches filtrées.

L'info-bulle qui apparaît avec un petit temps d'arrêt de la souris sur le nom de la couche affiche une information qui indique le filtre :

Il ne faut pas hésiter à consulter le constructeur de requête ou l'onglet général des propriétés de la couche, pour visualiser l'expression de la requête .

Pour effacer la requête, il faut lancer à nouveau le constructeur de requête et cliquer sur le bouton « Effacer ».

Remarque

Pour enregistrer le sous-ensemble sélectionné comme une nouvelle couche, faire un clic droit sur la couche et cliquer sur “Sauvegarder sous...”, et préciser le nom de la couche sauvegardée.

Rappel

La sélection est sauvegardée en enregistrant le projet et le sous-ensemble sera affiché dans la fenêtre carte à la réouverture du projet.