🧭 Explore, 🔍 filter and 📦 export vector 🗺️, raster 🏔️ and LiDAR point cloud ☁️ layers in QGIS, from one panel.
Pick a layer, select what matters on it, and FilterMate filters every other layer of the project by its relation to that selection: buildings near main roads, parcels on steep slopes, LiDAR points beneath rooftops, a DTM clipped around a church. The filters stay on the existing project layers, keep their styles, can be undone, saved as favorites, exported, and replayed from Processing or a script.
The panel follows the current layer: a raster on the left, a LiDAR point cloud on the right.
🌐 Website · 📖 User guide · 🇫🇷 Guide utilisateur · 💡 Use cases · 📥 Install from the QGIS repository
The panel has four sections, used top to bottom.
| Section | What you do there |
|---|---|
| 🧭 EXPLORING | Select on the current layer. Vector: one feature, several, or an expression. Raster: a band, a pixel value (picked on the map), a value range on a live histogram, classes of a paletted raster, a raster calculator expression. Point cloud: ASPRS / LiDAR HD classes, Z, intensity and return ranges, chained attribute conditions, height above a DTM. |
| 🔍 FILTERING | Choose the layers to filter and how they relate to the selection: geometric predicates (intersects, within, disjoint…), a buffer, AND / OR with existing filters, a minimum coverage for polygons. |
| 📦 EXPORTING | Write the filtered layers as they are: vector formats, GeoTIFF / COG for rasters, LAZ / LAS / COPC / GPKG / CSV for point clouds, or a GeoPackage with an embedded QGIS project. |
| 🔧 CONFIGURATION | Backends, theme, layer kinds, cache and other options, from the panel. |
Nine combinations. One panel. Every kind of layer can be the source or a target. Each cell links to a detailed use case:
| Source ↓ / Target → | 🗺️ Vector | 🏔️ Raster | ☁️ Point cloud |
|---|---|---|---|
| 🗺️ Vector (features) | Buildings near main roads | DTM around the church | Point cloud around the church |
| 🏔️ Raster (value range, classes…) | Parcels on steep slopes | NDVI mask on an RGB orthophoto | LiDAR points beneath rooftops |
| ☁️ Point cloud (classes, ranges…) | Building heights measured by LiDAR | DTM beneath ground points | High vegetation near power lines |
Filtered layers keep their id, style and place in the layer tree. Unfilter, Undo / Redo and unloading the plugin put the original source back, and project files are always saved with the original sources.
- ⚡ Fast on large data. Filters run as SQL on PostgreSQL / PostGIS, SpatiaLite and GeoPackage (spatial index used, no reload), with an OGR path for everything else. In the documented Saint-Gaudens run, 12 layers from a 2.9 GB department-wide GeoPackage were filtered in under a second. Timings depend on the data, hardware and cache.
- 🌐 Web services and remote files (WFS, OGC API Features, ArcGIS, WMS / WMTS / XYZ, WCS, vector tiles, remote COPC / EPT): filtered and explored with bounded, cancellable reads, never on the main thread, and with an explicit refusal rather than a silently partial result.
- 🎯 Pipettes on the map: similar pixels, the clicked object or every similar object on a raster; a value condition on a point cloud attribute.
- ↩️ Undo / Redo of every filter, per layer, and a global history.
- ⭐ Favorites: save a filter with its layers and settings, replay it in a click, share it with a team through a git repository (docs/favorites_sharing/USER_GUIDE.md).
- 🤖 Automation: nine Processing algorithms and four ready-made models,
qgis_process, a Python API for scripts and other plugins, an optional REST API and an MCP server for AI assistants (docs/AUTOMATION.md). - 🧩 QGIS 3.22 to 4.x, Qt5 and Qt6, 🌗 light and dark themes, 🌍 34 languages.
In QGIS: Plugins → Manage and Install Plugins, search for FilterMate, then Install Plugin. The FilterMate button appears in the plugin toolbar.
Manual install: download a zip from GitHub Releases and use Plugins → Manage and Install Plugins → Install from ZIP.
| 🟢 QGIS | 3.22 or later, QGIS 4.x included. Point cloud layers need QGIS 3.26+. |
| 🐘 PostgreSQL / PostGIS (optional) | psycopg2, shipped with most QGIS installs; otherwise pip install psycopg2-binary in the QGIS Python. |
| ☁️ PDAL (optional) | PDAL 2.4+ (pdal command, shipped with QGIS on Windows) for the height above a DTM and direct COPC writing. Without it, point clouds are clipped by the QGIS exporter. |
| 🌐 REST API (optional) | pip install -r requirements-api.txt (FastAPI, Uvicorn, Pydantic). |
from qgis.utils import plugins
api = plugins["filter_mate"].get_public_api()
api.cross_filter("mnt", ["parcelle", "lhd"], coverage_min=50,
raster_selection={"band": 1, "mode": "range", "minimum": 1200, "maximum": 1300})The same operation is available as the filtermate:cross_filter_from_raster Processing algorithm, from
qgis_process, and as POST /filters/cross on the REST API. See docs/AUTOMATION.md.
| 📖 User guide · Guide utilisateur | Step by step: first filter, exploring, predicates and buffers, rasters and point clouds, favorites, export, backends, configuration. |
| 💡 Use cases · Cas d'usage | Sixteen business questions covering all nine combinations: twelve QGIS recordings and four illustrated recipes, in English and French. |
| 🤖 docs/AUTOMATION.md | Processing algorithms and models, qgis_process, Python API, REST API. |
| ⭐ docs/favorites_sharing/ | Sharing favorites through git repositories. |
| 🏗️ docs/ARCHITECTURE.md · CONTRIBUTING.md | Source tree, code rules, tests and releases, for contributors. |
| 📝 CHANGELOG.md | Release notes. |
pip install -r requirements-test.txt
python -m pytest tests/ -o "addopts=" # unit tests, no QGIS needed (qgis.* is mocked)The CI also loads the plugin in the official QGIS Docker images (3.22 → nightly) and drives the dock with its GUI
(tests/qgis_headless/). Start with docs/ARCHITECTURE.md for a map of the source tree and
CONTRIBUTING.md for the code rules (Qt5 / Qt6 guards, translations, zip build, pull requests).
🐛 Bugs and 💬 ideas: GitHub issues.
GNU General Public License v3.0, see LICENSE. Developed by imagodata · simon.ducournau+filter_mate@gmail.com. Map data in the screenshots: BD TOPO® and LiDAR HD © IGN, Licence Ouverte 2.0.

