diff --git a/lidar_pipeline/tiles.py b/lidar_pipeline/tiles.py index cfcab9d..091b5b6 100644 --- a/lidar_pipeline/tiles.py +++ b/lidar_pipeline/tiles.py @@ -805,13 +805,22 @@ def cached_tile(output_dir, layer, z, x, y, scale=1, fmt="png"): if not empty.exists(): _write_atomic(empty, b"") return None, "empty" - if empty.exists(): - return None, "empty" newest = 0.0 for src in sources: m = src.mtime() if m and m > newest: newest = m + # Même règle de fraîcheur que la tuile : un marqueur .empty plus vieux + # qu'une source (dalle apparue depuis, version amont plus neuve) est + # invalidé — sinon une zone naviguée avant sa génération resterait + # transparente à jamais. + if empty.exists(): + try: + if newest and empty.stat().st_mtime >= newest: + return None, "empty" + except OSError: + return None, "empty" + empty.unlink(missing_ok=True) try: if cache.stat().st_mtime >= newest: return cache.read_bytes(), "fresh"