Composer l'image de la planche en Lambert 93 depuis les sources de la pyramide

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Antoine Jacquin
2026-09-27 15:38:45 +02:00
parent 0955856876
commit 516e4050dd
2 changed files with 127 additions and 0 deletions

View File

@ -67,3 +67,55 @@ def test_export_modules_import_without_numpy():
"import lidar_pipeline.export_pdf, lidar_pipeline.tiles; print('ok')")
r = subprocess.run([sys.executable, "-c", code], capture_output=True, text=True)
assert r.returncode == 0, r.stderr
def _dalle(tmp_path, col, row, color=(200, 30, 30), px=100, layer="relief_oriente"):
from lidar_pipeline import index, tiles
from lidar_pipeline.tests.test_tiles import _make_dalle
_make_dalle(tmp_path, col, row, [layer], color=color, px=px)
tiles.source_index(tmp_path, force=True)
def test_nodata_color_matches_visualizations():
from lidar_pipeline.export_pdf import NODATA_RGB
from lidar_pipeline.visualizations import RELIEF_NODATA_RGB
assert NODATA_RGB == tuple(RELIEF_NODATA_RGB)
def test_compose_l93_full_cell(tmp_path, monkeypatch):
from lidar_pipeline import index
from lidar_pipeline.export_pdf import compose_l93
monkeypatch.setattr(index, "PANEL_VIZ", None)
_dalle(tmp_path, 1054, 6882)
img, mask, cells = compose_l93(tmp_path, (1054200.0, 6881200.0, 1054400.0, 6881300.0), 1.0)
assert img.size == (200, 100) and cells == [(1054, 6882)]
assert mask.getextrema() == (255, 255)
r, g, b = img.getpixel((100, 50))
assert r > 150 and g < 80 and b < 80
def test_compose_l93_half_outside_is_white_hatched(tmp_path, monkeypatch):
from lidar_pipeline import index
from lidar_pipeline.export_pdf import compose_l93
monkeypatch.setattr(index, "PANEL_VIZ", None)
_dalle(tmp_path, 1054, 6882)
# moitié ouest dans la dalle, moitié est hors données
img, mask, cells = compose_l93(tmp_path, (1054900.0, 6881400.0, 1055100.0, 6881500.0), 1.0)
assert mask.getpixel((50, 50)) == 255 and mask.getpixel((150, 50)) == 0
east = img.crop((110, 0, 200, 100)).convert("L").getextrema()
assert east[1] == 255 and east[0] < 255 # blanc + hachures
def test_compose_l93_nodata_pixels_masked(tmp_path, monkeypatch):
from lidar_pipeline import index
from lidar_pipeline.export_pdf import NODATA_RGB, compose_l93
monkeypatch.setattr(index, "PANEL_VIZ", None)
_dalle(tmp_path, 1054, 6882, color=NODATA_RGB)
img, mask, cells = compose_l93(tmp_path, (1054200.0, 6881200.0, 1054400.0, 6881300.0), 1.0)
assert mask.getextrema() == (0, 0)
def test_compose_l93_no_data_returns_empty_cells(tmp_path):
from lidar_pipeline.export_pdf import compose_l93
img, mask, cells = compose_l93(tmp_path, (0.0, 0.0, 100.0, 100.0), 1.0)
assert cells == [] and mask.getextrema() == (0, 0)