Translate the whole project to English and fix outdated comments and help
Comments, docstrings, logs, CLI help, map UI, legends, PDF sheet, scripts, compose files and AGENTS.md are now English. Data keys stay unchanged (relief_oriente, densite_sol, visualisations/, API JSON keys, link params). Wrong comments and help defaults found along the way are corrected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -50,7 +50,7 @@ def _optimal_zoom_level(resolution, lat, layer):
|
||||
elif 'PLAN' in layer:
|
||||
zoom = min(zoom, 19)
|
||||
|
||||
logger.debug(f" Zoom WMTS: {zoom} (résolution cible: {resolution}m/px)")
|
||||
logger.debug(f" WMTS zoom: {zoom} (target resolution: {resolution} m/px)")
|
||||
return zoom
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@ def _lat_lon_to_tile(lat, lon, zoom):
|
||||
"""Convert lat/lon to Web Mercator tile coordinates."""
|
||||
n = 2 ** zoom
|
||||
col = int((lon + 180) / 360 * n)
|
||||
lat = max(-85.0511, min(85.0511, lat)) # borne Mercator : évite log/cos invalides
|
||||
lat = max(-85.0511, min(85.0511, lat)) # Mercator bound: avoids invalid log/cos
|
||||
lat_rad = math.radians(lat)
|
||||
row = int((1 - math.log(math.tan(lat_rad) + 1 / math.cos(lat_rad)) / math.pi) / 2 * n)
|
||||
return col, row
|
||||
@ -95,7 +95,7 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
from PIL import Image as PILImage
|
||||
|
||||
if not HAS_WARP:
|
||||
logger.error(" ✗ rasterio.warp non disponible pour conversion de coordonnées")
|
||||
logger.error(" ✗ rasterio.warp unavailable for coordinate conversion")
|
||||
return None
|
||||
|
||||
try:
|
||||
@ -105,7 +105,7 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
nw_lat, nw_lon = lats[0], lons[0]
|
||||
se_lat, se_lon = lats[1], lons[1]
|
||||
except Exception:
|
||||
logger.error(" ✗ Impossible de convertir les coordonnées")
|
||||
logger.error(" ✗ Could not convert coordinates")
|
||||
return None
|
||||
|
||||
wmts_url = "https://data.geopf.fr/wmts"
|
||||
@ -124,14 +124,14 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
out_height = int(se_px_y - nw_px_y)
|
||||
|
||||
if out_width <= 0 or out_height <= 0 or out_width > 10000 or out_height > 10000:
|
||||
logger.warning(f" Image IGN trop grande: {out_width}x{out_height}px — zoom {zoom} abandon")
|
||||
logger.warning(f" IGN image too large: {out_width}x{out_height} px — skipping zoom {zoom}")
|
||||
continue
|
||||
|
||||
total_tiles = (col_max - col_min + 1) * (row_max - row_min + 1)
|
||||
if zoom < zoom_level:
|
||||
logger.info(f" ↓ Retry zoom {zoom_level}→{zoom}: {total_tiles} tuiles ({out_width}x{out_height}px)")
|
||||
logger.info(f" ↓ Retrying zoom {zoom_level}→{zoom}: {total_tiles} tiles ({out_width}x{out_height} px)")
|
||||
else:
|
||||
logger.info(f" Zoom {zoom}: {total_tiles} tuiles à télécharger ({out_width}x{out_height}px)")
|
||||
logger.info(f" Zoom {zoom}: {total_tiles} tiles to download ({out_width}x{out_height} px)")
|
||||
|
||||
composite = np.full((out_height, out_width, 3), 255, dtype=np.uint8)
|
||||
|
||||
@ -151,8 +151,8 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
})
|
||||
url = f"{wmts_url}?{params}"
|
||||
|
||||
# 2 tentatives : un accident réseau (reset, timeout) ne doit
|
||||
# pas laisser un trou blanc définitif dans la dalle.
|
||||
# 2 attempts: a network glitch (reset, timeout) must not
|
||||
# leave a permanent white hole in the tile.
|
||||
tile_arr = None
|
||||
first_tile_404 = False
|
||||
for attempt in range(2):
|
||||
@ -170,11 +170,11 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
tiles_404 += 1
|
||||
# If the very first tile is 404, this zoom is unavailable
|
||||
if col == col_min and row == row_min:
|
||||
logger.info(f" Zoom {zoom} non disponible (404) — essai zoom inférieur")
|
||||
logger.info(f" Zoom {zoom} unavailable (404) — trying a lower zoom")
|
||||
first_tile_404 = True
|
||||
else:
|
||||
tiles_failed += 1
|
||||
break # erreur HTTP : inutile de réessayer
|
||||
break # HTTP error: no point retrying
|
||||
except Exception:
|
||||
tiles_failed += 1
|
||||
if attempt == 0:
|
||||
@ -216,14 +216,14 @@ def download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom_level=15, min_zoo
|
||||
continue
|
||||
|
||||
if tiles_failed > 0:
|
||||
logger.warning(f" {tiles_failed} tuile(s) IGN en échec réseau ({layer}) "
|
||||
f"— la dalle peut avoir des trous")
|
||||
logger.info(f" → {tiles_downloaded} tuiles IGN téléchargées ({layer})")
|
||||
logger.warning(f" {tiles_failed} IGN tile(s) failed over the network ({layer}) "
|
||||
f"— the tile may have holes")
|
||||
logger.info(f" → {tiles_downloaded} IGN tiles downloaded ({layer})")
|
||||
if tiles_downloaded == 0:
|
||||
continue
|
||||
return composite
|
||||
|
||||
logger.error(" ✗ Aucun zoom disponible pour cette zone")
|
||||
logger.error(" ✗ No zoom level available for this area")
|
||||
return None
|
||||
|
||||
|
||||
@ -280,7 +280,7 @@ def generate_ign_overlay(dem_file, basename, vis_dir, resolution, layer, title,
|
||||
result = download_ign_tiles(min_x, max_x, min_y, max_y, layer, zoom)
|
||||
|
||||
if result is None:
|
||||
logger.error(" ✗ Impossible de télécharger les tuiles IGN")
|
||||
logger.error(" ✗ Could not download IGN tiles")
|
||||
return None
|
||||
|
||||
from PIL import Image as PILImage
|
||||
@ -297,9 +297,9 @@ def generate_ign_overlay(dem_file, basename, vis_dir, resolution, layer, title,
|
||||
for i in range(3):
|
||||
dst.write(ign_arr[:, :, i], i + 1)
|
||||
|
||||
logger.info(f" ✓ {title} terminé ({time.time()-t0:.1f}s)")
|
||||
logger.info(f" ✓ {title} done ({time.time()-t0:.1f}s)")
|
||||
return output
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f" ✗ Erreur IGN overlay: {e}", exc_info=True)
|
||||
logger.error(f" ✗ IGN overlay error: {e}", exc_info=True)
|
||||
return None
|
||||
Reference in New Issue
Block a user