Borner le comblement du MNT à l'enveloppe des points, ajouter la couche précision et un affichage relief/précision, encoder les sous-tuiles une seule fois en q75
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -48,6 +48,9 @@ AVIF_SPEED = 9 # encodage rapide (cf. rendering.AVIF_SPEED : ×7, +3 %
|
||||
# l'active quand la bande passante compte (consultation mobile).
|
||||
PNG_PALETTE = os.environ.get("LIDAR_TILE_PNG_PALETTE", "") == "1"
|
||||
|
||||
# Couches en aplats de niveaux codés, rééchantillonnées au plus proche voisin
|
||||
NEAREST_LAYERS = frozenset({'densite_sol'})
|
||||
|
||||
# Demi-circonférence équatoriale : emprise du Web Mercator (EPSG:3857).
|
||||
ORIGIN = 20037508.342789244
|
||||
|
||||
@ -452,8 +455,10 @@ def _build_index(output_dir):
|
||||
quads = {}
|
||||
for f in sub_dir.iterdir():
|
||||
name = f.name
|
||||
# « .webp » plein en dernier : les vignettes finissent aussi en .webp
|
||||
for suffix, tier in ((".avif", "full"), ("_mid.webp", "mid"),
|
||||
(f"_thumb{_SUBTILE_THUMB_PX}.webp", "thumb")):
|
||||
(f"_thumb{_SUBTILE_THUMB_PX}.webp", "thumb"),
|
||||
(".webp", "full")):
|
||||
if not name.endswith(suffix):
|
||||
continue
|
||||
m = _SUBTILE_RE.search(name[:-len(suffix)] + ".avif")
|
||||
@ -810,7 +815,9 @@ def render_tile(output_dir, layer, z, x, y, scale=1):
|
||||
canvas = Image.new("RGBA", (size, size), (0, 0, 0, 0))
|
||||
# Agrandissement (zoom natif) : bicubique ; réduction : bilinéaire suffit
|
||||
# puisque le palier source est déjà calé sur la résolution de la tuile.
|
||||
resample = Image.BICUBIC
|
||||
# Aplats de niveaux codés (densité, 1 m/px) : plus proche voisin, sinon
|
||||
# l'agrandissement aux zooms 18–19 invente des gris intermédiaires.
|
||||
resample = Image.NEAREST if layer in NEAREST_LAYERS else Image.BICUBIC
|
||||
painted = False
|
||||
for src in sources:
|
||||
painted |= _paste_source(canvas, src, z, x, y, size, resample)
|
||||
|
||||
Reference in New Issue
Block a user