Module TaxRef — Consolidation taxonomique
Présentation
Le module TaxRef interroge l’API REST de l’INPN pour enrichir les listes d’espèces du projet avec les données du référentiel taxonomique national TAXREF.
Pour chaque code taxon (cd_nom) collecté dans les couches vectorielles désignées par
l’utilisateur, le module récupère la fiche complète du taxon (noms, rang, groupes,
synonymies, etc.) et l’enregistre dans la table data_taxref du GeoPackage biblizou.gpkg.
Cette table sert ensuite de table de jointure de référence pour les autres modules,
notamment Module BDC — Base de Données sur les statuts de Conservation (StatusJoinTaxref).
Flux de traitement
Le module TaxRef est orchestré par TaxrefProcessingThread (biblizou_worker.py),
un QThread PyQt5 qui exécute une étape unique :
Étape |
Description |
Classe / Fonction appelée |
|---|---|---|
1 |
Consolidation des taxons via l’API TaxRef |
|
Le thread émet les signaux progress(int, int, str), log(str),
finished(str) et error(str).
Paramètres transmis par l’interface :
Clé |
Valeur |
|---|---|
|
Chemin du dossier de travail |
|
|
|
Liste de dicts |
Classes et utilitaires
ApiUtils (base/ApiUtils.py)
Module utilitaire partagé par les modules TaxRef et BDC Statuts.
collect_cdnom_from_config(layer_config: list) → listCollecte les valeurs de
cd_nomuniques depuis les couches du projet QGIS décrites danslayer_config.Pour chaque entrée
{'layer_id', 'column'}:Récupère la couche via
QgsProject.instance().mapLayer(layer_id).Localise le champ par
fields().lookupField(column).Itère sur les entités et ne retient que les valeurs numériques (nettoyage par
filter(str.isdigit, ...)pour supprimer les éventuels espaces ou caractères parasites).Dédoublonne via un
set.
Retourne une liste de chaînes numériques propres.
create_taxref_session() → requests.SessionCrée et retourne une session
requestspréconfigurée avec l’en-têteaccept: application/hal+json;version=1requis par l’API TaxRef INPN.
TaxrefApiToTable (modules/TaxrefApiToTable.py)
Classe principale du module TaxRef. Hérite de QObject pour exposer les signaux
PyQt5 progress_changed(int) et status_changed(str).
Constructeur :
TaxrefApiToTable(gpkg_path: str)
Initialise la session HTTP via create_taxref_session().
Méthode principale : run(layer_config: list) → tuple[bool, str]
Déroulement détaillé :
Collecte des codes — appel à
collect_cdnom_from_config(layer_config); arrêt anticipé si aucun code n’est trouvé.Requêtage API — pour chaque
cd_nomunique :Appel
GET https://taxref.mnhn.fr/api/taxa/{cd_nom}(timeout 10 s).En cas de réponse 200, aplatissement du JSON (
{k: str(v) ...}) en excluant les clés commençant par_(métadonnées HAL).Les clés rencontrées sont accumulées dans
all_keyspour construire le schéma dynamiquement.Émission de
progress_changeden pourcentage d’avancement.Les erreurs par taxon sont journalisées sans interrompre la boucle.
Construction du schéma de champs — tri alphabétique de toutes les clés collectées, avec
cdNomplacé en première position.Création de la couche mémoire — couche
"None"nomméedata_taxrefavec un champQgsField(key, QVariant.String)par clé.Export GPKG — délégation à
LayerUtils.save_to_gpkg(). Retourne(True, message)en succès,(False, message_erreur)en échec.
Note
Le schéma de la table data_taxref est dynamique : il dépend de l’union
de toutes les clés retournées par l’API pour l’ensemble des taxons traités.
Une clé absente pour un taxon donné produit une chaîne vide ("") dans ce champ.
Endpoint API TaxRef
Paramètre |
Valeur |
|---|---|
URL |
|
Méthode |
|
En-tête requis |
|
Timeout |
10 secondes |
Format de réponse |
JSON (HAL+JSON) |
Principaux champs retournés par l’API (liste non exhaustive) :
Champ |
Description |
|---|---|
|
Code taxon (identifiant numérique) |
|
Code du taxon de référence (synonymie) |
|
Nom scientifique complet avec auteur |
|
Nom valide selon TaxRef |
|
Nom vernaculaire français |
|
Rang taxonomique (ES, SSES, GN…) |
|
Famille |
|
Ordre |
|
Classe |
|
Phylum |
|
Règne |
|
Groupe fonctionnel INPN (niveau 1) |
|
Groupe fonctionnel INPN (niveau 2) |
Table produite
Nom dans le GeoPackage : data_taxref
Table attributaire sans géométrie. Le nombre et le nom des colonnes dépendent
des clés retournées par l’API pour l’ensemble des cd_nom traités.
La colonne cdNom est toujours positionnée en premier.
Note
Si la table data_taxref existe déjà dans biblizou.gpkg, elle est
écrasée (mode CreateOrOverwriteLayer de QgsVectorFileWriter).
Pour conserver un historique, il convient de sauvegarder le GeoPackage
avant de relancer le module.
Référence des fichiers source
Fichier |
Rôle |
|---|---|
|
Collecte des |
|
Export de la couche vers le GeoPackage |
|
Requêtage API et création de la table |
|
|
|
Collecte des paramètres et lancement du thread depuis l’interface |