Add WebP quality control and selective visualization (--only / --skip)
- WebP output now uses quality=85 by default (down from lossless), reducing file size by ~75% (35MB → 5-8MB per visualization) - Added --quality N (1-100) and --lossless flags in CLI and run.sh - Added --only and --skip to select/exclude specific visualizations (e.g., --only hillshade,svf,lrm or --skip ortho,topo) - VIZ_STEPS filtering is done in LidarArchaeoPipeline.__init__ - SharedDEM is skipped when all selected visualizations already exist - Invalid visualization names are validated at startup with clear error Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
38
run.sh
38
run.sh
@ -68,6 +68,9 @@ FILE_ARGS=""
|
||||
GROUND_METHOD=""
|
||||
FORCE_CLASSIFY_FLAG=""
|
||||
KEEP_TIF_FLAG=""
|
||||
QUALITY=""
|
||||
ONLY_FLAG=""
|
||||
SKIP_FLAG=""
|
||||
|
||||
# Parse arguments manually (more robust than getopts for mixed short/long options)
|
||||
while [ $# -gt 0 ]; do
|
||||
@ -83,6 +86,10 @@ while [ $# -gt 0 ]; do
|
||||
--keep-tif) KEEP_TIF_FLAG="--keep-tif"; shift ;;
|
||||
--ground-classification) GROUND_METHOD="$2"; shift 2 ;;
|
||||
--ground-classification=*) GROUND_METHOD="${1#--ground-classification=}"; shift ;;
|
||||
--quality) QUALITY="--quality $2"; shift 2 ;;
|
||||
--lossless) QUALITY="--lossless"; shift ;;
|
||||
--only) shift; ONLY_FLAG="--only"; while [ $# -gt 0 ] && [[ ! "$1" =~ ^- ]]; do ONLY_FLAG="$ONLY_FLAG $1"; shift; done ;;
|
||||
--skip) shift; SKIP_FLAG="--skip"; while [ $# -gt 0 ] && [[ ! "$1" =~ ^- ]]; do SKIP_FLAG="$SKIP_FLAG $1"; shift; done ;;
|
||||
--file) shift; while [ $# -gt 0 ] && [[ ! "$1" =~ ^- ]]; do FILE_ARGS="$FILE_ARGS $1"; shift; done ;;
|
||||
--test) ;; # Handled below
|
||||
-h|--help|-help)
|
||||
@ -102,17 +109,28 @@ while [ $# -gt 0 ]; do
|
||||
echo " --keep-tif Conserver les TIFF pour régénérer les WebP"
|
||||
echo " --ground-classification {auto,smrf,csf}"
|
||||
echo " Méthode de classification du sol (défaut: auto)"
|
||||
echo " --file NOM... Traiter un ou plusieurs fichiers LAZ (nom complet sans .laz/.las)"
|
||||
echo " --quality N Qualité WebP 1-100 (défaut: 85, 100=lossless)"
|
||||
echo " --lossless Compression WebP lossless (équivalent à --quality 100)"
|
||||
echo " --only VIZ... Générer uniquement ces visualisations"
|
||||
echo " --skip VIZ... Exclure ces visualisations"
|
||||
echo " --file NOM... Traiter un ou plusieurs fichiers LAZ"
|
||||
echo " --test Exécuter les tests unitaires"
|
||||
echo " -h Afficher cette aide"
|
||||
echo ""
|
||||
echo "Visualisations disponibles:"
|
||||
echo " hillshade slope aspect curvature svf lrm pos_open neg_open"
|
||||
echo " mslrm tpi sailore roughness anomalies wavelet flow local_dominance ortho topo"
|
||||
echo ""
|
||||
echo "Exemples:"
|
||||
echo " $0 -g # GPU, auto"
|
||||
echo " $0 -g -w 4 # GPU + 4 workers"
|
||||
echo " $0 -g -v # GPU + verbeux"
|
||||
echo " $0 -g -r 0.2 # Haute résolution"
|
||||
echo " $0 -g --force # Régénérer WebP (DTM conservé si --keep-tif)"
|
||||
echo " $0 -g --force-classification # Reclassifier le sol seulement"
|
||||
echo " $0 -g --force # Régénérer WebP"
|
||||
echo " $0 -g --only hillshade svf lrm # Seulement 3 visualisations"
|
||||
echo " $0 -g --skip ortho topo # Sans les overlays IGN"
|
||||
echo " $0 -g --lossless # WebP lossless"
|
||||
echo " $0 -g --quality 90 # WebP qualité 90"
|
||||
echo " $0 -g --ground-classification csf # Forcer CSF (terrain complexe)"
|
||||
echo " $0 -g --file LHD_...IGN69.copc # Un fichier"
|
||||
exit 0
|
||||
@ -160,16 +178,28 @@ echo " Verbeux : $([ -n "$VERBOSE_FLAG" ] && echo 'OUI' || echo 'non')"
|
||||
echo " Force : $([ -n "$FORCE_FLAG" ] && echo 'OUI' || echo 'non')"
|
||||
echo " Force classif.: $([ -n "$FORCE_CLASSIFY_FLAG" ] && echo 'OUI' || echo 'non')"
|
||||
echo " Keep TIFF : $([ -n "$KEEP_TIF_FLAG" ] && echo 'OUI' || echo 'non')"
|
||||
echo " Qualité WebP : $([ -n "$QUALITY" ] && echo "$QUALITY" || echo '85')"
|
||||
echo " Classification sol : $([ -n "$GROUND_METHOD" ] && echo "$GROUND_METHOD" || echo 'auto')"
|
||||
if [ -n "$ONLY_FLAG" ]; then
|
||||
echo " Visualisations: uniquement${ONLY_FLAG#--only}"
|
||||
elif [ -n "$SKIP_FLAG" ]; then
|
||||
echo " Visualisations: tout sauf${SKIP_FLAG#--skip}"
|
||||
fi
|
||||
if [ -n "$FILE_ARGS" ]; then
|
||||
echo " Fichiers :${FILE_ARGS}"
|
||||
fi
|
||||
echo "============================================"
|
||||
|
||||
CMD_ARGS="-o /data/output -r $RESOLUTION -w $WORKERS $VERBOSE_FLAG $FORCE_FLAG $FORCE_CLASSIFY_FLAG $KEEP_TIF_FLAG"
|
||||
CMD_ARGS="-o /data/output -r $RESOLUTION -w $WORKERS $VERBOSE_FLAG $FORCE_FLAG $FORCE_CLASSIFY_FLAG $KEEP_TIF_FLAG $QUALITY"
|
||||
if [ -n "$GROUND_METHOD" ]; then
|
||||
CMD_ARGS="$CMD_ARGS --ground-classification $GROUND_METHOD"
|
||||
fi
|
||||
if [ -n "$ONLY_FLAG" ]; then
|
||||
CMD_ARGS="$CMD_ARGS $ONLY_FLAG"
|
||||
fi
|
||||
if [ -n "$SKIP_FLAG" ]; then
|
||||
CMD_ARGS="$CMD_ARGS $SKIP_FLAG"
|
||||
fi
|
||||
if [ -n "$FILE_ARGS" ]; then
|
||||
CMD_ARGS="$CMD_ARGS --file $FILE_ARGS"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user