Faire du relief orienté la seule couche produite et affichée
PANEL_VIZ ne contient plus que relief_oriente et pilote désormais tout : le pipeline sans --only ne produit que cette couche, la génération lancée depuis la carte aussi, et la carte ne liste ni ne sert en tuiles (panneau, XYZ, TileJSON, WMTS, JOSM) les autres visualisations présentes sur disque. Les autres visualisations restent calculables explicitement avec --only. Corrige au passage _panel_viz_steps, qui ne retenait que les couches dont le nom de fichier diffère du nom d'étape : la génération depuis la carte ne produisait que l'openness positive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -18,9 +18,12 @@ class _FakeRequest:
|
||||
"port": 8975})()
|
||||
|
||||
|
||||
def _setup(tmp_path, monkeypatch, layers=("aspect", "slope")):
|
||||
def _setup(tmp_path, monkeypatch, layers=("aspect", "slope"), panel=None):
|
||||
"""Dalle factice ; panel=None lève la restriction PANEL_VIZ pour que les
|
||||
couches de test (aspect, slope) soient servies."""
|
||||
import lidar_pipeline.mapserve as mapserve
|
||||
from lidar_pipeline import tiles
|
||||
from lidar_pipeline import index, tiles
|
||||
monkeypatch.setattr(index, "PANEL_VIZ", panel)
|
||||
_make_dalle(tmp_path, 1054, 6882, list(layers))
|
||||
monkeypatch.setattr(mapserve, "OUTPUT_DIR", tmp_path)
|
||||
tiles.source_index(tmp_path, force=True)
|
||||
@ -209,6 +212,19 @@ def test_map_meta(tmp_path, monkeypatch):
|
||||
assert meta["default_layers"] == ["relief_oriente"]
|
||||
|
||||
|
||||
def test_only_panel_layers_are_served(tmp_path, monkeypatch):
|
||||
"""Seules les couches de PANEL_VIZ sont affichées et servies ; la
|
||||
génération depuis la carte ne produit qu'elles."""
|
||||
from fastapi import HTTPException
|
||||
mapserve = _setup(tmp_path, monkeypatch, layers=("relief_oriente", "aspect", "slope"),
|
||||
panel=("relief_oriente",))
|
||||
meta = mapserve.map_meta()
|
||||
assert [l["key"] for l in meta["layers"]] == ["relief_oriente"]
|
||||
with pytest.raises(HTTPException):
|
||||
asyncio.run(mapserve.tile("aspect", 15, 1, "1.png"))
|
||||
assert mapserve._panel_viz_steps() == ["relief_oriente"]
|
||||
|
||||
|
||||
def test_map_tile_info(tmp_path, monkeypatch):
|
||||
"""/api/map/tile identifie la dalle sous un point et lit ses métadonnées."""
|
||||
mapserve = _setup(tmp_path, monkeypatch)
|
||||
@ -542,11 +558,8 @@ def _reset_bg(mapserve):
|
||||
|
||||
def test_tile_cache_only_never_renders(tmp_path, monkeypatch):
|
||||
"""Mode cache seule : tuile manquante = transparente non mémorisable."""
|
||||
import lidar_pipeline.mapserve as mapserve
|
||||
mapserve = _setup(tmp_path, monkeypatch, layers=("slope",))
|
||||
from lidar_pipeline import tiles
|
||||
_make_dalle(tmp_path, 1054, 6882, ["slope"])
|
||||
monkeypatch.setattr(mapserve, "OUTPUT_DIR", tmp_path)
|
||||
tiles.source_index(tmp_path, force=True)
|
||||
monkeypatch.setenv("LIDAR_TILE_CACHE_ONLY", "1")
|
||||
z = 15
|
||||
x, y = _tile_of_cell(1054, 6882, z)
|
||||
|
||||
@ -24,6 +24,15 @@ class TestVizSteps:
|
||||
from lidar_pipeline.pipeline import VIZ_STEPS
|
||||
assert len(VIZ_STEPS) == 16
|
||||
|
||||
def test_default_run_produces_only_relief(self, tmp_path):
|
||||
"""Sans --only : seule la couche affichée (relief orienté) est produite ;
|
||||
--only reste libre pour les autres visualisations."""
|
||||
from lidar_pipeline.pipeline import LidarArchaeoPipeline
|
||||
p = LidarArchaeoPipeline(tmp_path, tmp_path / "out")
|
||||
assert [n for n, _ in p.viz_steps] == ["relief_oriente"]
|
||||
p = LidarArchaeoPipeline(tmp_path, tmp_path / "out2", only_viz=["slope"])
|
||||
assert [n for n, _ in p.viz_steps] == ["slope"]
|
||||
|
||||
def test_ortho_and_topo_present(self):
|
||||
from lidar_pipeline.pipeline import VIZ_STEPS
|
||||
names = [name for name, _ in VIZ_STEPS]
|
||||
|
||||
@ -119,9 +119,10 @@ def test_zoom_supported_bounds():
|
||||
# Index des sources
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def test_source_index_and_layers(tmp_path):
|
||||
def test_source_index_and_layers(tmp_path, monkeypatch):
|
||||
"""L'index liste les couches présentes et leurs paliers (grossier → fin)."""
|
||||
from lidar_pipeline import tiles
|
||||
from lidar_pipeline import index, tiles
|
||||
monkeypatch.setattr(index, "PANEL_VIZ", None)
|
||||
_make_dalle(tmp_path, 1054, 6882, ["aspect", "slope"])
|
||||
layers = tiles.source_index(tmp_path, force=True)
|
||||
assert set(layers) == {"aspect", "slope"}
|
||||
@ -132,6 +133,15 @@ def test_source_index_and_layers(tmp_path):
|
||||
set(tiles.available_layers(tmp_path)) == {"slope", "aspect"}
|
||||
|
||||
|
||||
def test_available_layers_follow_panel(tmp_path, monkeypatch):
|
||||
"""Couches sur disque hors PANEL_VIZ : ni affichées ni servies."""
|
||||
from lidar_pipeline import index, tiles
|
||||
_make_dalle(tmp_path, 1054, 6882, ["aspect", "relief_oriente"])
|
||||
tiles.source_index(tmp_path, force=True)
|
||||
monkeypatch.setattr(index, "PANEL_VIZ", ("relief_oriente",))
|
||||
assert tiles.available_layers(tmp_path) == ["relief_oriente"]
|
||||
|
||||
|
||||
def test_grid_bounds(tmp_path):
|
||||
"""Emprise L93 et WGS84 de la grille disponible."""
|
||||
from lidar_pipeline import tiles
|
||||
|
||||
Reference in New Issue
Block a user