Fix crash quand valid_data est vide dans _apply_colormap

np.percentile crash avec IndexError quand valid_data est vide
(TIF entièrement NaN). Ajout d'un guard qui retourne une
colormap par défaut si aucune donnée valide n'existe.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jacquin Antoine
2026-05-10 11:42:21 +02:00
parent 458d67cbd9
commit 8e4b4bb10b

View File

@ -200,6 +200,10 @@ def _apply_colormap(data, tif_file):
valid_data = np.asarray(data.compressed() if hasattr(data, 'compressed') else data.flatten()) valid_data = np.asarray(data.compressed() if hasattr(data, 'compressed') else data.flatten())
valid_data = valid_data[~np.isnan(valid_data)] valid_data = valid_data[~np.isnan(valid_data)]
if len(valid_data) == 0:
logger.warning(f" Aucune donnée valide pour {Path(tif_file).name} — colormap ignorée")
return data, 'terrain', Path(tif_file).stem.replace('_', ' ').title(), '', '', False
vmin = vmax = None vmin = vmax = None
# Compute vmin/vmax based on mode # Compute vmin/vmax based on mode
@ -234,6 +238,8 @@ def _apply_colormap(data, tif_file):
# Default: terrain colormap with percentile stretch # Default: terrain colormap with percentile stretch
valid_data = np.asarray(data.compressed() if hasattr(data, 'compressed') else data.flatten()) valid_data = np.asarray(data.compressed() if hasattr(data, 'compressed') else data.flatten())
valid_data = valid_data[~np.isnan(valid_data)] valid_data = valid_data[~np.isnan(valid_data)]
if len(valid_data) == 0:
return data, 'terrain', Path(tif_file).stem.replace('_', ' ').title(), '', '', False
p2, p98 = np.percentile(valid_data, (2, 98)) p2, p98 = np.percentile(valid_data, (2, 98))
data = np.clip((data - p2) / (p98 - p2), 0, 1) data = np.clip((data - p2) / (p98 - p2), 0, 1)
title = Path(tif_file).stem.replace('_', ' ').title() title = Path(tif_file).stem.replace('_', ' ').title()