Explorer, filtrer et exporter sans écrire de SQL
Ce guide passe en revue chaque partie du panneau FilterMate, avec des captures d'écran prises dans QGIS 4.2 (interface en anglais). Lisez-le de haut en bas la première fois, puis utilisez le sommaire comme référence. Tout ce qui est montré ici fonctionne à l'identique sur QGIS 3.x (Qt5) et QGIS 4.x (Qt6).
1Comment fonctionne FilterMate
FilterMate applique un filtre de sous-ensemble à vos couches vectorielles. Rien n'est supprimé ni copié : la couche filtrée n'affiche que les entités qui correspondent, exactement comme si vous aviez saisi un filtre fournisseur dans les propriétés de la couche. FilterMate construit ce filtre pour vous, dans le langage natif de la source de données (SQL PostGIS, SQL SpatiaLite ou expression QGIS pour les fichiers).
Chaque filtre spatial suit le même schéma en trois parties :
1. Couche source
La couche dans laquelle vous choisissez une géométrie de référence, via la zone Exploring : une entité, plusieurs entités ou une expression.
2. Prédicat spatial
La relation à tester : Intersect, Contain, Are within, Touch, etc., avec éventuellement une distance tampon.
3. Couches cibles
Les couches qui sont filtrées. Seules leurs entités qui vérifient le prédicat vis-à-vis de la géométrie source restent visibles.
Les filtres purement attributaires fonctionnent aussi : sans couche cible ni prédicat, FilterMate filtre la couche source
elle-même sur les entités choisies dans la zone Exploring. Les filtres s'enchaînent avec AND, OR
et AND NOT, s'annulent, se rétablissent, se sauvegardent en favoris et s'exportent vers un nouveau fichier ou un projet GeoPackage.
2Installation
Depuis le dépôt de plugins QGIS (recommandé)
- Dans QGIS, ouvrez Extensions → Installer/Gérer les extensions…
- Cherchez FilterMate dans l'onglet Toutes et cliquez sur Installer l'extension.
- Un bouton FilterMate apparaît dans la barre d'outils des extensions. Cliquez dessus pour ouvrir le panneau.
Installation manuelle
Téléchargez le ZIP depuis les releases GitHub, puis utilisez Installer depuis un ZIP dans le gestionnaire d'extensions, ou décompressez-le dans le dossier des extensions de votre profil :
| Système | Dossier des extensions |
|---|---|
| Windows | %APPDATA%\QGIS\QGIS3\profiles\default\python\plugins\ |
| Linux | ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/ |
| macOS | ~/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/ |
QGIS4 sur certaines plateformes.
Préférences → Profils utilisateurs → Ouvrir le dossier du profil actif ouvre toujours le bon endroit.
Optionnel : PostgreSQL / PostGIS
FilterMate filtre les couches PostGIS côté serveur. Cela nécessite le paquet Python psycopg2 dans l'environnement Python de QGIS :
pip install psycopg2-binary
Sous Windows, lancez la commande depuis l'OSGeo4W Shell livré avec QGIS. Sans ce paquet, les couches PostgreSQL fonctionnent quand même via le backend OGR générique, simplement plus lentement.
3Le panneau en un coup d'œil
FilterMate est un panneau ancrable. Par défaut il s'ouvre à droite de la fenêtre QGIS et se déplace, se détache ou se redimensionne comme n'importe quel panneau QGIS.
Le panneau se compose de quatre zones, de haut en bas :
| Zone | Rôle |
|---|---|
| Badges d'en-tête | Le badge ★ n compte les favoris enregistrés et ouvre leur menu. Le badge coloré indique le backend qui gère la couche courante : PostgreSQL Spatialite OGR Memory. |
| Zone Exploring | Choix des entités de référence sur la couche courante : sélection simple, multiple ou par expression, plus une colonne de boutons de navigation. |
| Onglets d'outils | Trois onglets repliables : Filtering, Exporting et Configuration. Un seul est ouvert à la fois. |
| Barre d'actions | Les six boutons qui agissent réellement : Filter, Undo, Redo, Unfilter, Export, About. |
4Explorer une couche
La zone Exploring travaille sur la couche courante, affichée dans la première ligne de l'onglet Filtering. Par défaut elle suit la couche sélectionnée dans le panneau Couches de QGIS (bouton auto current layer, premier de la colonne de l'onglet Filtering). Désactivez ce bouton pour choisir la couche à la main dans la liste déroulante.
Trois modes de sélection sont proposés. Cocher l'un décoche les autres, et l'en-tête de chaque bloc le déplie ou le replie.
Sélection simple
Choisissez une entité dans une liste déroulante avec recherche. La seconde ligne est l'expression d'affichage :
FilterMate détecte automatiquement un champ de nom pertinent (name, label, id…) mais vous pouvez saisir n'importe quelle expression QGIS,
par exemple "code" || ' - ' || "nom". Les flèches bleues passent à l'entité précédente ou suivante.
Sélection multiple
Cochez autant d'entités que nécessaire. La liste charge au plus 1000 lignes (paramétrable) pour que les très grosses couches ne figent jamais QGIS. Quand la liste est tronquée, la saisie dans le champ de filtre cherche dans toute la couche, et Select All dans le menu contextuel charge tout.
Sélection personnalisée (expression)
Écrivez une expression QGIS ; chaque entité qu'elle retient entre dans la géométrie de référence. C'est le mode à utiliser pour
« toutes les entités » : une expression toujours vraie comme 1 ou TRUE prend toute la couche source.
La colonne de boutons Exploring
Les boutons verticaux à gauche des blocs de sélection, de haut en bas :
| Bouton | Effet |
|---|---|
| Identify | Identifie l'entité sélectionnée sur la carte (comme l'outil d'identification de QGIS). |
| Zoom | Zoome le canevas sur la ou les entités sélectionnées. |
| Selecting (bascule) | Reflète votre sélection FilterMate en sélection QGIS sur la carte, et inversement : sélectionner sur le canevas met à jour les blocs Exploring. |
| Tracking (bascule) | Zoome automatiquement à chaque changement d'entité sélectionnée. |
| Linking (bascule) | Garde les trois blocs de sélection synchronisés : changer de mode conserve les entités courantes. |
| Reset | Efface toutes les propriétés d'exploration mémorisées pour la couche (expression d'affichage, sélection, mode). |
Chaque couche mémorise ses propres réglages d'exploration dans le projet : changer de couche puis y revenir restaure votre sélection.
5L'onglet Filtering
Chaque ligne de l'onglet Filtering s'active et se désactive par le bouton de la colonne à sa gauche. Une ligne désactivée est ignorée quand vous lancez Filter, ce qui permet de garder un tampon ou un prédicat configuré sans l'utiliser.
Ligne par ligne
| Bouton | Ligne | Signification |
|---|---|---|
| Auto current layer | Couche source | Activé, la couche source suit le panneau Couches de QGIS. Désactivé, choisissez-la dans la liste. La petite icône et la case à droite activent l'option centroïde pour la géométrie source. |
| Layers to filter | Couches cibles | Liste à cocher de toutes les autres couches vectorielles du projet. Clic droit pour Select All, Deselect All ou par type de géométrie. La case à droite utilise les centroïdes pour les couches cibles. |
| Combine operator | Deux listes | Comment un nouveau filtre se combine avec celui déjà appliqué. À gauche : pour la couche source. À droite : pour les couches cibles. Valeurs : AND, OR et AND NOT. |
| Geometric predicates | Liste de prédicats | Liste à cocher des relations spatiales. Plusieurs peuvent être cochées ; elles sont combinées par OR. |
| Buffer value | Distance en mètres | Agrandit (positif) ou rétrécit (négatif) la géométrie source avant le test du prédicat. Cliquez sur la petite flèche pour passer à une expression QGIS, p. ex. "largeur" * 2. |
| Buffer type | Style et segments | Style d'extrémité (Round, Flat, Square) et nombre de segments par quart de cercle (5 par défaut). Moins de segments accélère le calcul sur des géométries très complexes. |
Les huit prédicats
| Prédicat | Conserve une entité cible quand… | Usage typique |
|---|---|---|
| Intersect | elle partage au moins un point avec la géométrie source. | Tout ce qui touche une zone. Le défaut, et de loin le plus courant. |
| Contain | elle contient entièrement la géométrie source. | Quelle parcelle contient ce point ? |
| Are within | elle est entièrement à l'intérieur de la géométrie source. | Bâtiments entièrement dans une commune. |
| Touch | elle touche la limite sans chevaucher l'intérieur. | Parcelles voisines. |
| Overlap | elle chevauche partiellement la source (même dimension, aucune ne contient l'autre). | Zones à cheval sur une limite. |
| Cross | elle croise la source (une ligne à travers un polygone, deux lignes qui se croisent). | Routes qui franchissent une rivière. |
| Equal | sa géométrie est identique à la source. | Repérer des doublons entre couches. |
| Disjoint | elle n'a aucun point commun avec la source. | Tout ce qui est hors d'une zone. Avec un tampon, pour des anneaux d'exclusion. |
Tampons
- Tampon positif, p. ex. 50 m : « tout ce qui est à moins de 50 m de la route sélectionnée ». Utilisez Intersect comme prédicat.
- Tampon négatif, p. ex. -20 m sur un polygone : ne garde que les entités bien à l'intérieur, loin des bords.
- Tampon par expression : la distance est évaluée pour chaque entité source, une distance réglementaire peut donc venir d'un attribut.
- Les distances sont toujours en mètres. Les couches en CRS géographique (degrés) sont reprojetées à la volée.
Centroïdes
Les deux cases « centroïde » remplacent les polygones par un point représentatif (garanti sur la surface) pendant le test. Avec des polygones très détaillés, une cascade peut devenir plusieurs fois plus rapide, au prix de l'exactitude sur les bordures. FilterMate garde l'index spatial utilisable dans les deux cas.
6Tutoriel : votre premier filtre spatial
Objectif : n'afficher que les bâtiments et haies situés à moins de 50 m d'une route. Les captures utilisent un petit extrait BD TOPO (une commune, 373 bâtiments, 130 tronçons de route) stocké dans un GeoPackage, mais n'importe quel projet avec une couche de lignes et une couche de polygones convient.
Chaque étape ci-dessous montre la fenêtre QGIS complète, pour comparer le canevas et le panneau avec votre propre écran. L'emprise de la carte est la même de l'étape 2 à l'étape 6.
-
Choisir la couche source. Chargez vos couches et ouvrez FilterMate. Dans le panneau Couches, cliquez sur la couche de routes : elle devient la couche source (le bouton auto current layer est actif par défaut) et la zone Exploring bascule dessus.
Étape 1. La couche de routes est la couche courante : son nom apparaît dans la première ligne de l'onglet Filtering. Aucune entité n'est encore choisie. -
Choisir la route de référence. Dans la zone Exploring, cochez Single selection et choisissez une route dans la liste. Le canevas la sélectionne (en jaune). Si la liste affiche des identifiants plutôt que des noms, changez le champ d'affichage dans la ligne en dessous.
Étape 2. La route sélectionnée est surlignée sur le canevas ; tous les bâtiments et haies sont encore visibles. -
Choisir les couches cibles. Ouvrez l'onglet Filtering. Activez Layers to filter (deuxième bouton de la colonne) et cochez batiment et haie dans la liste.
Étape 3. La deuxième ligne de l'onglet Filtering affiche maintenant les deux couches cibles. -
Choisir le prédicat. Activez Geometric predicates et vérifiez qu'Intersect est coché.
Étape 4. Intersect est le prédicat : un bâtiment est conservé s'il touche la route (avec son tampon). -
Ajouter un tampon. Activez Buffer value et saisissez
50. La ligne du type de tampon (Round, 5 segments) peut rester telle quelle.
Étape 5. Tout est configuré : route source, deux cibles, Intersect, tampon de 50 m. Rien n'a encore changé sur la carte. -
Lancer le filtre. Appuyez sur le bouton Filter (premier bouton de la barre d'actions). Le canevas est gelé le temps de la tâche et redessiné une seule fois à la fin.
Étape 6. Même emprise qu'à l'étape 5 : seuls les bâtiments (rose) et les haies (vert) à moins de 50 m de la route restent. Undo est désormais actif dans la barre d'actions.
Ce que FilterMate a généré pour la couche de bâtiments GeoPackage, tel qu'on le lit dans Propriétés de la couche → Source → Filtre d'entités du fournisseur :
ROWID IN (SELECT id FROM "rtree_batiment_geom"
WHERE minx <= 598540.4 AND maxx >= 598349.4
AND miny <= 6265342.3 AND maxy >= 6265157.7)
AND ST_Intersects("geom",
ST_Buffer(ST_MakeValid(ST_GeomFromText('LineString (…)', 2154)), 50.0))
La première clause interroge le R-tree du GeoPackage pour que SQLite n'évalue le prédicat coûteux que sur les lignes candidates. C'est ce qui fait passer une cascade de 6 minutes sur un projet de 37 couches à 3 secondes.
AND, la nouvelle condition restreint le résultat précédent ; avec OR elle l'élargit ; AND NOT retire des entités.
Les propriétés de la couche montrent l'expression combinée complète.
7Barre d'actions, annulation et historique
| Bouton | Action |
|---|---|
| Filter | Construit et applique le filtre décrit par la zone Exploring et l'onglet Filtering. |
| Undo | Restaure l'état de filtre précédent des couches concernées. L'historique est propre à chaque projet et survit à un redémarrage de QGIS. |
| Redo | Réapplique un filtre que vous venez d'annuler. |
| Unfilter | Retire le filtre FilterMate de la couche source et de ses cibles, sans toucher aux autres couches. Contrairement à Undo, il ne remonte pas l'historique. |
| Export | Lance l'export configuré dans l'onglet Exporting. |
| About | Ouvre le site web de FilterMate dans votre navigateur. |
Les boutons sont grisés quand ils ne s'appliquent pas : Undo avant tout filtre, Redo quand rien n'a été annulé, Export tant que l'onglet Exporting n'est pas configuré.
8Favoris
Un favori enregistre un filtre complet : couche source, sélection, prédicats, tampon et couches cibles. Le réappliquer prend un clic, ce qui fait des favoris le moyen naturel de conserver des requêtes réglementaires ou récurrentes.
Le menu des favoris
- Add filter enregistre le filtre actuellement appliqué. Il est désactivé quand aucun filtre n'est actif.
- Les favoris enregistrés sont listés dans la section Filtrage rapide en haut : un clic les applique.
- Manage favorites… ouvre le gestionnaire décrit ci-dessous.
- Export… / Import… échangent des favoris sous forme de fichiers JSON entre projets ou collègues.
- Global favorites liste les favoris partagés par tous vos projets.
- Maintenance regroupe les statistiques de la base et les outils de nettoyage.
Le gestionnaire de favoris
- General : renommer le favori, ajouter une description et des tags, voir sa couche source, son fournisseur et son nombre d'utilisations. Visibility bascule entre This project et All projects (global).
- Expression : l'expression de filtre exacte, modifiable par les utilisateurs avancés.
- Remote : publication vers un dépôt git partagé. FilterMate utilise le gestionnaire d'authentification de QGIS pour les identifiants, une équipe peut donc entretenir une bibliothèque commune de filtres. Nécessite l'extension optionnelle QGIS Resource Sharing.
Apply exécute le favori sur le projet courant, Save Changes enregistre vos modifications, Delete le supprime. Les favoris sont stockés dans la base SQLite propre à FilterMate dans votre profil QGIS et, pour ceux limités au projet, dans le fichier de projet aussi.
9Exporter
L'onglet Exporting écrit sur disque les entités actuellement visibles des couches choisies, filtres compris. Comme dans l'onglet Filtering, chaque ligne s'active par son bouton de colonne.
| Ligne | Signification |
|---|---|
| Layers | Liste à cocher des couches à exporter. |
| Projection | CRS de sortie. Les couches dans un autre CRS sont reprojetées pendant l'export. |
| Styles | Enregistre les styles de couche à côté des données en QML (natif QGIS) ou SLD (interopérable). En sortie GeoPackage, le style est intégré au fichier. |
| Output format | Tout format vectoriel que QGIS sait écrire : GeoPackage (défaut), Shapefile, GeoJSON, KML, CSV, FlatGeobuf… |
| Output folder | Où les fichiers sont écrits. Le mode batch écrit un fichier par couche au lieu d'un seul fichier multi-couches. |
| ZIP | Regroupe le résultat dans une archive unique, en mode batch aussi si souhaité. |
Projets GeoPackage
Quand le format de sortie est GeoPackage et que plusieurs couches sont exportées ensemble, FilterMate intègre un projet QGIS dans le fichier, avec
la hiérarchie des groupes, les styles et le CRS préservés. Avant l'écriture, un dialogue récapitulatif liste ce qui sera exporté et permet de conserver ou d'aplatir la structure des groupes.
Ouvrir le .gpkg obtenu dans QGIS restaure la carte complète.
10Configuration
L'onglet Configuration expose les réglages de FilterMate sous forme d'arbre. Double-cliquez sur une valeur pour la modifier ; les valeurs à choix proposent leurs options. La plupart des changements s'appliquent à chaud, quelques-uns (position du panneau, profil d'interface) demandent de fermer et rouvrir le panneau.
| Réglage | Valeurs | Notes |
|---|---|---|
AUTO_ACTIVATE | true / false | Ouvre le panneau automatiquement au chargement d'un projet contenant des couches vectorielles. |
FEEDBACK_LEVEL | minimal / normal / verbose | Quantité de messages dans la barre de messages QGIS. verbose est utile pour signaler un problème. |
LANGUAGE | auto ou l'une des 34 langues | auto suit la langue de QGIS. L'interface se retraduit sans redémarrage. |
UI_PROFILE | auto / compact / normal / hidpi | Taille des contrôles. auto se base sur la taille et la mise à l'échelle de l'écran ; forcez hidpi sur un écran 4K si les contrôles paraissent petits. |
DOCK_POSITION | left / right / top / bottom | Côté où le panneau s'ancre à l'ouverture. |
ACTION_BAR_POSITION | top / bottom / left / right | Position des six boutons d'action. |
ACTIVE_THEME | auto / default / dark / light | auto suit le thème de QGIS. |
feature_picker_limit | nombre, 1000 par défaut | Nombre maximal de lignes chargées dans la liste de sélection multiple. |
L'arbre contient aussi les seuils de performance (quand activer les optimisations), la taille du cache d'expressions, les valeurs par défaut d'export et la
section Extensions (partage de favoris, QFieldCloud). Le fichier complet se trouve dans config/config.json du dossier du plugin ;
config/config.default.json à côté documente chaque clé et peut être recopié pour tout réinitialiser.
11Backends et performances
FilterMate choisit un backend par couche, selon son fournisseur de données, et l'affiche dans le badge d'en-tête. Le backend décide où s'exécute le test spatial : dans la base de données chaque fois que c'est possible, dans QGIS sinon.
| Badge | Utilisé pour | Mode de filtrage |
|---|---|---|
| PostgreSQL | Couches PostGIS, avec psycopg2 installé | SQL natif avec les fonctions ST_*, un test d'emprise && qui exploite l'index, détection de la clé primaire, et vues matérialisées temporaires (fm_temp_mv_*) pour les très grosses cascades. |
| Spatialite | Fichiers GeoPackage et SpatiaLite | SQL SpatiaLite. Sur GeoPackage, la clause de candidats R-tree est placée en tête pour que le prédicat ne s'exécute que sur les candidats. |
| OGR | Shapefile, GeoJSON, KML et tous les autres formats de fichier | Expressions QGIS évaluées par le moteur GEOS, avec simplification des géométries et union en cascade des entités sources. |
| Memory | Couches temporaires et en mémoire | Évaluation en mémoire. |
Mesures sur des projets réels avec la version 4.8.9 (chronos issus de filtermate.log) :
| Scénario | Avant | Maintenant |
|---|---|---|
| 37 couches GeoPackage filtrées par une commune (Toulouse) | 371 s | 1,6 à 3 s |
| 17 couches PostGIS, cinq communes, option centroïde | 49,6 s | moins de 4 s |
| Première connexion à un serveur PostgreSQL local | 21 s d'attente | immédiat |
- Le canevas est gelé pendant une tâche de filtrage et redessiné une seule fois, l'interface reste donc réactive.
- Cliquez sur le badge backend pour voir les backends disponibles pour la couche courante et en forcer un si le choix automatique ne convient pas.
- Chaque étape de plus de quelques millisecondes est journalisée avec le préfixe
⏱; comparez deux exécutions en filtrant le journal.
12Boîte à outils Processing
FilterMate enregistre un fournisseur Processing. Son premier algorithme, filtermate:batch_filter, applique une expression de filtre à plusieurs couches vectorielles en une seule exécution.
Comme c'est un algorithme Processing ordinaire, il s'utilise dans le modeleur graphique, en mode batch ou depuis Python :
import processing
processing.run("filtermate:batch_filter", {
"INPUT_LAYERS": ["batiment", "haie"],
"EXPRESSION": "\"etat_de_l_objet\" = 'En service'",
})
13Dépannage
Où regarder d'abord
- Panneau Messages du journal de QGIS, onglet FilterMate : avertissements et erreurs de la session en cours.
logs/filtermate.logdans le dossier du plugin : le journal complet, y compris les lignes de chrono⏱. Définissez la variable d'environnementFILTERMATE_LOG_LEVEL=DEBUGavant de lancer QGIS pour un journal détaillé.- Passez
FEEDBACK_LEVELà verbose dans l'onglet Configuration pour voir tous les messages dans la barre de messages.
Questions fréquentes
| Symptôme | Cause et solution |
|---|---|
| Le filtre ne renvoie aucune entité | Vérifiez que le prédicat correspond aux types de géométrie (une ligne ne contient jamais un polygone), que le signe du tampon est bien celui voulu, et qu'aucune sélection QGIS résiduelle ne traîne sur la couche source avec une expression « toutes les entités ». |
| « Pas de couche cible » ou rien ne se passe | La ligne Layers to filter est désactivée ou vide. Les filtres attributaires seuls demandent au moins une sélection dans la zone Exploring. |
| Une couche ne peut pas être filtrée | Elle est en mode édition : répondez au dialogue, ou désactivez l'édition dans QGIS. |
| Le badge indique OGR sur une couche PostGIS | psycopg2 manque dans le Python de QGIS. Installez-le et relancez QGIS. |
| Les contrôles sont minuscules sur un écran 4K | Mettez UI_PROFILE sur hidpi. |
| Le panneau s'ouvre dans la mauvaise langue | Fixez LANGUAGE explicitement au lieu d'auto. |
| Un filtre d'une ancienne session est toujours appliqué | Les filtres vivent dans le fichier de projet. Utilisez Unfilter, ou effacez le filtre fournisseur dans les propriétés de la couche. |
Obtenir de l'aide
- Signalez les bugs avec un extrait du journal sur GitHub Issues.
- Posez vos questions sur le serveur Discord.
- Regardez les tutoriels vidéo.