Plugin QGIS d’intersection spatiale automatique pour l’analyse territoriale et la production de GeoPDF multicouches.
1. Charger un projet QGIS
2. Sélectionner une parcelle
3. Cliquer sur "Réaliser l’intersection"
4. Exporter en CSV ou GeoPDF
- ⚡ Quick Start
- 🎯 Présentation
- 👥 Contexte et besoin métier
- ✂️ Fonctionnalités
- 🌱 Prérequis
- 📦 Installation
- 🚀 Utilisation détaillée
- 🎨 Personnalisation des modèles QPT
- 🏗️ Architecture technique
- 🛠️ Développement
- 🧯 Dépannage
- Limitations connues
- 🙏 Remerciements
- 🧭 Crédit
Sécateur est un plugin QGIS permettant d’automatiser des opérations d’intersection spatiale sur un grand nombre de couches géographiques.
Le plugin a été conçu pour répondre à des besoins d’instruction territoriale et réglementaire :
- identification automatique des zonages impactant une parcelle ;
- croisement rapide de données métiers ;
- génération de rapports exploitables ;
- production de GeoPDF multicouches.
Le fonctionnement repose sur un principe simple :
- sélectionner une seule entité ;
- lancer l’intersection ;
- générer automatiquement les couches résultats ;
- exporter les résultats au format CSV et/ou GeoPDF.
Le plugin s’inspire directement des problématiques rencontrées lors de l’instruction ADS (Application du Droit des Sols) en DDT, notamment dans le cadre de l’analyse :
- des Servitudes d’Utilité Publique (SUP),
- des zonages réglementaires,
- des risques,
- des contraintes environnementales,
- des documents d’urbanisme.
Dans de nombreux contextes métier, les instructeurs doivent consulter une grande quantité de couches thématiques afin de déterminer quels enjeux concernent une parcelle cadastrale donnée. Cette opération devient rapidement longue, répétitive et source d’erreurs lorsqu’elle est réalisée manuellement.
Le besoin fonctionnel identifié était donc :
- automatiser les intersections spatiales ;
- fiabiliser les analyses ;
- standardiser les exports ;
- produire des rapports cartographiques exploitables.
Le plugin reprend cette logique dans une approche plus modulaire et générique adaptée à QGIS 3.34+.
Les problématiques métier d’origine sont détaillées dans la notice DDT21 du plugin historique « Instruction_ADS ».
| Fonction | Description |
|---|---|
| ✂️ Intersection automatique | Intersection de toutes les couches visibles |
| 🌍 Reprojection CRS | Harmonisation automatique des projections |
| 🛠️ Correction géométries | Utilisation de native:fixgeometries |
| 📄 Export CSV | Export tabulaire des intersections |
| 🗺️ GeoPDF | PDF multicouches interactif |
| 📚 Légende dynamique | Génération automatique |
| 🧱 WFS support | Compatible flux distants |
- intersection d’une entité avec toutes les couches visibles ;
- prise en charge des couches locales et WFS ;
- reprojection automatique dans le CRS du projet ;
- correction automatique des géométries invalides ;
- création automatique des couches résultats.
Le plugin crée automatiquement :
Résultats secateur
et :
Objets créés
afin d’organiser les données temporaires.
- un CSV par couche intersectée ;
- export des attributs ;
- format compatible tableurs et traitements externes.
- génération d’un GeoPDF multicouches ;
- légende séparée ;
- prise en charge des basemaps ;
- export basé sur des modèles
.qpt.
Compatible avec :
- couches locales ;
- couches WFS ;
- couches métiers ;
- couches cadastrales ;
- orthophotos ;
- fonds raster.
- QGIS ≥ 3.34
Le plugin nécessite :
- un projet QGIS contenant des couches exploitables ;
- idéalement des couches cadastrales ;
- des couches métiers organisées dans le projet.
Les couches cadastrales peuvent provenir :
- du projet QGIS ;
- de flux WFS ;
- de la BD Parcellaire ;
- du plugin Cadreur ;
- de l’API Admin Express ;
- d’autres sources IGN ou métiers.
Le plugin embarque certaines dépendances dans vendor/ afin de garantir un fonctionnement autonome.
Notamment :
pypdf
Cela augmente légèrement la taille du plugin mais évite toute installation manuelle.
- Télécharger le plugin ;
- Ouvrir QGIS ;
- Aller dans :
Extensions → Installer/Gérer les extensions
- Choisir :
Installer depuis un ZIP
- Sélectionner l’archive ;
- Activer le plugin.
ln -s /chemin/vers/secateur \
~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/secateurln -s /chemin/vers/secateur \
~/Library/Application\ Support/QGIS/QGIS3/profiles/default/python/plugins/secateurCréer un lien symbolique ou copier le dossier dans :
C:\Users\<user>\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\
Puis dans QGIS :
Extensions → Gérer/Installer les extensions → Sécateur → Activer
Le plugin fonctionne avec :
- couches WFS ;
- couches locales ;
- couches métiers ;
- couches raster ;
- orthophotos ;
- basemaps.
[!WARNING]
Les exports utilisant des couches WFS ou des basemaps peuvent être significativement plus longs.
Dans certains cas :
- les temps d’export peuvent être multipliés par 10 ;
- QGIS peut sembler figé pendant certains traitements lourds.
Cela est normal, il faut requêter les couches.
Cliquer sur l’icône :
Sécateur
dans la barre d’outils QGIS.
Le panneau permet :
- le lancement des intersections ;
- les exports CSV ;
- les exports PDF ;
- le choix du fond cartographique ;
- la configuration des exports.
Le plugin fonctionne avec :
- une couche active ;
- une seule entité sélectionnée.
Dans l’arbre des couches :
- cliquer sur une couche vectorielle ;
- la rendre active.
Utiliser l’outil QGIS :
Sélectionner des entités
Puis sélectionner une seule géométrie.
[!WARNING] Le plugin nécessite exactement 1 entité sélectionnée sinon l’exécution sera refusée.
Cliquer sur :
Réaliser l’intersection
Le plugin :
- détecte les couches visibles ;
- ignore les couches incompatibles ;
- reprojette les données ;
- corrige les géométries ;
- applique les intersections ;
- génère les couches résultats ;
- crée les groupes QGIS nécessaires.
Les résultats apparaissent dans :
Résultats secateur
Produit :
- un CSV par couche intersectée ;
- les attributs des objets intersectés.
Produit :
- un GeoPDF multicouches ;
- une légende PDF séparée ;
- une mise en page basée sur des modèles QGIS
.qpt.
flowchart LR
A[Charger un projet]
--> B[Sélectionner une entité]
--> C[Lancer l’intersection spatiale]
--> D[Couches temporaires]
D --> E[Export CSV]
D --> F[Export GeoPDF]
Le plugin produit des GeoPDF interactifs.
Contrairement à un PDF classique, un GeoPDF permet :
- l’affichage de couches ;
- l’activation/désactivation des calques ;
- le zoom ;
- la navigation cartographique ;
- la consultation des attributs.
Le document est lisible dans :
- Adobe Acrobat Reader.
Dans les contextes réglementaires, de nombreux zonages se superposent :
- SUP ;
- risques ;
- urbanisme ;
- environnement ;
- réseaux ;
- biodiversité.
Le GeoPDF permet alors :
- de masquer certaines couches ;
- d’analyser les intersections individuellement ;
- de conserver une lecture exploitable.
La logique est similaire à celle d’un projet QGIS simplifié embarqué dans un PDF.
Les usages historiques du GeoPDF sont décrits dans la documentation DDT21 du plugin ADS.
Les légendes sont exportées séparément afin d’éviter :
- la surcharge graphique ;
- les crashs QGIS ;
- les limitations des layouts.
Le plugin :
- génère dynamiquement les légendes ;
- crée des pages adaptées ;
- fusionne les exports PDF.
Le plugin utilise deux modèles QGIS .qpt.
resources/report_page.qpt
resources/legend_layout.qpt
Dans QGIS (documentation) :
Projet → Gestionnaire de mises en page
Puis :
Nouvelle mise en page depuis un modèle
Ensuite :
- importer le
.qpt; - modifier les éléments souhaités ;
- sauvegarder le fichier au même emplacement.
Certains éléments doivent conserver leur ID.
| Élément | ID |
|---|---|
| Carte | Map 1 |
| Titre | title |
| Auteur | author |
| Date | date |
| Logo | logo |
| Élément | ID |
|---|---|
| Légende | legend |
secateur/
├── __init__.py
├── metadata.txt
├── plugin.py
├── core/
│ ├── export/
│ ├── utils/
│ └── intersector.py
├── ui/
├── resources/
└── vendor/
Le plugin suit une architecture :
- modulaire ;
- orientée services ;
- découplée UI / métier.
| Module | Rôle |
|---|---|
plugin.py |
Point d’entrée QGIS |
ui/panel.py |
Interface utilisateur |
ui/service.py |
Logique métier |
core/intersector.py |
Intersections spatiales |
core/export/ |
Exports CSV/PDF |
core/utils/ |
Helpers et utilitaires |
graph TD
A[UI Layer] --> B[Service Layer]
A --> C[UI Components]
B --> D[Core Logic]
B --> E[GIS Processing]
D --> F[Utils]
E --> G[QGIS Processing]
E --> H[Layer Management]
I[Export Layer] --> J[PDF Export]
I --> K[CSV Export]
J --> L[Layout Management]
J --> M[Legend Generation]
J --> N[PDF Export Engine]
K --> O[File I/O Utilities]
classDef ui fill:#cde4ff,stroke:#64b5f6,stroke-width:2px;
classDef service fill:#f8f5e8,stroke:#d4af37,stroke-width:2px;
classDef core fill:#e8f5e9,stroke:#4caf50,stroke-width:2px;
classDef infra fill:#fff3e0,stroke:#ff9800,stroke-width:2px;
classDef export fill:#fce4ec,stroke:#e91e63,stroke-width:2px;
class A,B,C service
class D,E,F,G,H,D core
class I,J,K,L,M,N,O,P export
class A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P infra
Le plugin repose principalement sur :
native:extractbylocationnative:fixgeometriesnative:reprojectlayergdal:warpreproject
Toutes les couches sont reprojetées dans le CRS du projet avant traitement.
Le plugin utilise le système de logs natif de QGIS.
Les messages sont visibles dans :
Vue → Panneaux → Journal des messages
sequenceDiagram
participant U as User
participant P as Panel
participant S as Service
participant I as Intersector
participant X as Export
U->>P: Click "Réaliser l'intersection"
P->>S: select() - Validate layer selection
S->>P: Return selection result
P->>S: run() - Execute intersection
S->>I: intersect_layer() - Perform GIS operations
I->>S: Return processed layers
S->>P: Return process result
P->>P: Update UI state
U->>P: Click "Exporter CSV" or "Exporter PDF"
P->>X: Call export function
X->>P: Return export results
P->>U: Show status message
Le plugin est compatible avec Plugin Reloader
Source : https://github.com/borysiasty/plugin_reloader
uv syncOutils utilisés :
- Ruff
- Pyright
- pre-commit
- uv
uv run pre-commit install
uv run ruff check --fix .
uv run ruff format .
uv run pyrightzip -r secateur.zip secateur -x "*/.*"Cause possible :
- Les couches ne sont pas visibles dans QGIS.
- Les couches ne sont pas vectorielles.
Solution :
- Dans QGIS, cochez la case Visible pour chaque couche à analyser.
- Vérifiez que les couches sont bien au format vectoriel (pas raster).
- Redémarrez QGIS si le problème persiste.
Vérifier :
- qu’une couche active existe ;
- qu’une seule entité est sélectionnée.
Certaines couches peuvent :
- contenir des géométries invalides ;
- avoir trop de sommets ;
- provoquer des crashs QGIS.
Dans ce cas :
- exécuter :
Corriger les géométries
- éventuellement simplifier les géométries.
Les problématiques historiques de génération GeoPDF sont documentées dans la documentation DDT21.
Certaines opérations :
- WFS ;
- exports PDF ;
- intersections massives ;
peuvent être longues.
QGIS peut sembler bloqué pendant les traitements.
Patientez jusqu’à la fin du processus.
- traitements potentiellement longs sur gros projets ;
- exports WFS coûteux ;
- GeoPDF sensible aux géométries invalides ;
- certaines couches très lourdes peuvent provoquer des ralentissements.
- DDT21
- utilisateurs testeurs
- contributeurs et relecteurs
Développé dans le cadre des travaux autour des outils Ecosphères / QGIS et des problématiques d’analyse territoriale automatisée.

