Module open source d'autoqualification de GEMAUT — carte de précision à partir d'un MNS et d'un MNT
Développé au Service de l'Imagerie Spatiale de l'IGN.
MAKE QUALITY GREAT AGAIN (MQGA) calcule un masque de qualité / carte de précision à partir :
- d'un MNS (DSM)
- d'un MNT (DTM), typiquement produit par GEMAUT
Ce dépôt est le volet d'auto-qualification de GEMAUT-pipeline.
# Cloner le dépôt
git clone https://github.com/IGNF/make-quality-great-again.git
cd make-quality-great-again
# Créer et activer l'environnement
conda env create -f mqga_env.yml
conda activate mqga_env
# Vérifier l'installation
python3 make_quality_great_again.py --helpconda activate mqga_envpython3 make_quality_great_again.py --helppython3 make_quality_great_again.py \
--mns /chemin/vers/MNS.tif \
--mnt /chemin/vers/MNT.tif \
--out /chemin/vers/masque_qualite.tif \
--RepTra /chemin/vers/tmp_mqga \
--cpu 8 \
--interp hybrid \
--cleanpython3 make_quality_great_again.py \
--mns /chemin/vers/MNS.tif \
--mnt /chemin/vers/MNT.tif \
--out /chemin/vers/masque_qualite.tif \
--RepTra /chemin/vers/tmp_mqga \
--cpu 8 \
--interp hybrid \
--verbose--mns: MNS d'entrée (DSM)--mnt: MNT d'entrée (DTM)--out: Masque de qualité en sortie--cpu: Nombre de CPUs à utiliser--RepTra: Répertoire de travail temporaire
--no: Valeur NoData (défaut:-9999)--per: Percentile local (défaut:0.05)--demiwinl: Demie-taille en ligne de la fenêtre d'analyse (défaut:50)--demiwinc: Demie-taille en colonne de la fenêtre d'analyse (défaut:50)--tile: Taille de la tuile (défaut:500)--pad: Recouvrement entre tuiles (défaut:50)--winavg: Fenêtre de moyenne glissante finale (défaut:50)--interp: Méthode d'interpolation des NoData
(griddata,idw,idw_old,window,linearnd,fast,hybrid— défaut:hybrid)--clean: Vider le répertoire temporaire s'il existe déjà--verbose: Activer le niveau DEBUG sur la console
- MNS et MNT au format GeoTIFF
- Ils peuvent avoir des résolutions différentes ; la sortie est calée sur la grille du MNS
- Si un pixel MNS ou MNT est NoData → pixel NoData dans la différence
--out: masque de qualité (GeoTIFF, résolution MNS)- Fichier log : même chemin que
--out, extension.log - Fichiers temporaires dans
--RepTra(dontdiff_MNS_MNT.tif)
- Calcul de la différence MNS − MNT (
compute_mns_mnt_diff) - Lecture des métadonnées (
GetInfo→RasterInfo) - Calcul du nombre de tuiles (
CalculNombreDallesXY→TileGrid) - Découpage en tuiles (
MakeDecoupage) - Calcul de la carte de précision par tuile en parallèle (
DoParallel) - Assemblage final (
Make_Assemblage_FINAL) - Interpolation des NoData (
interpolate_nodata_*) - Lissage final (
apply_moving_average)
Équivalent Python de :
xingng -FB:2:C:50,1:1:50:1 -EM=-9999
- Identification des trous connexes (zones NoData)
- Détection des pixels de bord (connexité 4)
- Pour chaque trou :
- constante
V_calc: après exclusion des 50 % plus petites valeurs de bord, minimum des restantes - interpolation IDW locale sur les pixels de bord (rayon 50, poids 1)
- combinaison selon la distance au bord : proche → IDW, centre →
V_calc
- constante
Cette méthode remplit mieux les grands trous tout en restant raisonnablement rapide.
MAKE_QUALITY_GREAT_AGAIN/
├── make_quality_great_again.py # Point d'entrée CLI (wrapper)
├── mqga/
│ ├── cli.py # Arguments, logging, orchestration
│ ├── io_raster.py # I/O raster, diff MNS−MNT
│ ├── quality_mask.py # Percentile local / masque
│ ├── tiling.py # Découpage et parallèle
│ ├── mosaic.py # Assemblage des tuiles
│ └── interpolate.py # Bouchage NoData + lissage
├── mqga_env.yml # Environnement conda
└── README.md
- Fork le projet
- Créer une branche feature (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Ce projet est sous la licence LICENSE.