Mettre à jour la pyramide pendant le rendu et réduire son stockage
Le pipeline régénère l'inventaire après chaque dalle par défaut (tous lanceurs, sauf --no-index), avec une passe différée quand l'anti-rebond ignore une dalle. La carte surveille l'inventaire toutes les 10 s et place les tuiles des dalles modifiées en tête de file de maintenance : la pyramide suit le rendu au lieu d'attendre la fin du lot. Stockage réduit pour le Raspberry Pi : seuls les niveaux standard pairs jusqu'à z16 sont écrits sur disque, en AVIF ; les autres, dont le niveau le plus fin (~75 % de la pyramide), sont rendus à la volée avec un cache mémoire, y compris en mode cache seule. L'interface ne demande que les niveaux pairs et réduit ceux du niveau supérieur aux zooms impairs. Mesuré sur 8 dalles : ~24 Mo de pyramide avant, 1,2 Mo après. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -33,6 +33,28 @@ class TestVizSteps:
|
||||
p = LidarArchaeoPipeline(tmp_path, tmp_path / "out2", only_viz=["slope"])
|
||||
assert [n for n, _ in p.viz_steps] == ["slope"]
|
||||
|
||||
def test_incremental_index_on_by_default(self, tmp_path):
|
||||
"""La carte suit le rendu en cours quel que soit le lanceur."""
|
||||
from lidar_pipeline.pipeline import LidarArchaeoPipeline
|
||||
assert LidarArchaeoPipeline(tmp_path, tmp_path / "o").incremental_index
|
||||
assert not LidarArchaeoPipeline(tmp_path, tmp_path / "o2", no_index=True).incremental_index
|
||||
|
||||
def test_debounced_tile_is_indexed_later(self, tmp_path, monkeypatch):
|
||||
"""Une dalle terminée pendant l'anti-rebond est reprise par une passe
|
||||
différée, sans attendre la dalle suivante."""
|
||||
import time
|
||||
import lidar_pipeline.index as index
|
||||
from lidar_pipeline.pipeline import LidarArchaeoPipeline
|
||||
calls = []
|
||||
monkeypatch.setattr(index, "build_index", lambda *a, **k: calls.append(time.time()))
|
||||
p = LidarArchaeoPipeline(tmp_path, tmp_path / "o")
|
||||
p._rebuild_index_incremental() # passe immédiate
|
||||
p._last_index_rebuild = time.time() - 2.8 # anti-rebond presque écoulé
|
||||
p._rebuild_index_incremental() # différée (~0,2 s)
|
||||
p._rebuild_index_incremental() # déjà programmée : pas de doublon
|
||||
time.sleep(0.6)
|
||||
assert len(calls) == 2
|
||||
|
||||
def test_ortho_and_topo_present(self):
|
||||
from lidar_pipeline.pipeline import VIZ_STEPS
|
||||
names = [name for name, _ in VIZ_STEPS]
|
||||
|
||||
Reference in New Issue
Block a user