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>
151 lines
9.0 KiB
HTML
151 lines
9.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
|
||
<title>LiDAR map</title>
|
||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 16 16%27%3E%3Crect width=%2716%27 height=%2716%27 rx=%273%27 fill=%27%230b0e13%27/%3E%3Cpath d=%27M2 11l4-5 3 4 2-2 3 3z%27 fill=%27%235aa9e6%27/%3E%3C/svg%3E">
|
||
<link rel="stylesheet" href="assets/vendor/leaflet/leaflet.css"/>
|
||
<link rel="stylesheet" href="assets/app.css?v=__ASSETS_V__"/>
|
||
</head>
|
||
<body>
|
||
<div id="map"></div>
|
||
<div id="compareBar" hidden title="Drag to move the divider"><span>⇆</span></div>
|
||
|
||
<aside id="panel" data-sheet="half" aria-label="Map settings">
|
||
<div id="sheetGrip" class="sheet-grip" title="Drag to expand or shrink"><span></span></div>
|
||
<div class="panel-head">
|
||
<nav id="panelTabs" class="panel-tabs" role="tablist">
|
||
<button role="tab" data-tab="view" title="Display (1)"><span class="tab-ico">◧</span><span class="tab-lbl">View</span></button>
|
||
<button role="tab" data-tab="tile" title="Tile (2)"><span class="tab-ico">▦</span><span class="tab-lbl" id="tileTabLbl">Tile</span></button>
|
||
<button role="tab" data-tab="print" title="PDF export (3)"><span class="tab-ico">⎙</span><span class="tab-lbl">PDF</span></button>
|
||
<button role="tab" data-tab="gen" title="Generation (4)" hidden><span class="tab-ico">+</span><span class="tab-lbl">Generate</span></button>
|
||
<button role="tab" data-tab="share" title="Share (5)"><span class="tab-ico">⎘</span><span class="tab-lbl">Share</span></button>
|
||
</nav>
|
||
<button id="panelCollapse" class="btn-icon" title="Collapse the panel">‹</button>
|
||
</div>
|
||
<div id="panelBody" class="panel-body">
|
||
<section id="tab-view" role="tabpanel" hidden>
|
||
<div class="base-row" id="baseRow">
|
||
<button class="eye on" id="baseToggle" title="Show / hide the base map"></button>
|
||
<span class="layer-name" id="baseName" title="Click: light / dimmed base map">OpenStreetMap base map</span>
|
||
<span class="pct" id="basePct"></span>
|
||
<div class="base-ctl">
|
||
<input type="range" id="baseOpacity" min="0" max="100" step="1" title="Base map opacity">
|
||
</div>
|
||
</div>
|
||
<div class="view-row">
|
||
<span class="view-label">Display</span>
|
||
<span class="layer-name" id="mainName"></span>
|
||
<select id="mainSel" class="field" title="Main display layer" hidden></select>
|
||
</div>
|
||
<div id="precBlock" hidden>
|
||
<div class="seg" id="modeSeg" role="group" aria-label="Relief, precision or comparison (P key)">
|
||
<button type="button" data-mode="relief" title="Relief only (P key: next mode)">Relief</button>
|
||
<button type="button" data-mode="precision" title="Geometric precision only: ground point density">Precision</button>
|
||
<button type="button" data-mode="compare" title="Compare two layers on either side of a sliding divider (P key: next mode)">Compare</button>
|
||
</div>
|
||
<div class="row" id="compareCtl" hidden>
|
||
<select id="compareLeft" class="field" title="Layer left of the divider"></select>
|
||
<span class="hint">⇆</span>
|
||
<select id="compareRight" class="field" title="Layer right of the divider"></select>
|
||
</div>
|
||
<div class="prec-legend" id="precLegend" hidden>
|
||
<div class="prec-bar" id="precBar"></div>
|
||
<div class="prec-ticks"><span>≤ 0.35</span><span>4</span><span>≥ 45 pts/m²</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="row" id="intensityRow">
|
||
<label for="reliefIntensity" class="hint">Relief intensity</label>
|
||
<input type="range" id="reliefIntensity" min="0.5" max="2" step="0.1" value="1"
|
||
title="Relief contrast (1 = standard rendering; the PDF always uses the standard rendering)">
|
||
<span class="panel-stat" id="reliefIntensityVal">1×</span>
|
||
</div>
|
||
<div class="legend" id="legendBlock" title="Oriented relief: hue shows the slope direction, lightness the local relief">
|
||
<canvas id="roseCanvas" width="96" height="96"></canvas>
|
||
<div class="rose-cap">Slope facing…<br><span>light = bump · dark = hollow</span></div>
|
||
</div>
|
||
<details id="readingBlock" class="reading">
|
||
<summary>How to read the map</summary>
|
||
<ul id="readingList"></ul>
|
||
</details>
|
||
</section>
|
||
<section id="tab-tile" role="tabpanel" hidden>
|
||
<p class="hint" id="tileHint">Click a tile on the map to select it.</p>
|
||
<div id="tileCard" hidden>
|
||
<div class="row tile-head"><span class="sec-title" id="tileTitle">Tile</span></div>
|
||
<div id="tileBody"></div>
|
||
</div>
|
||
</section>
|
||
<section id="tab-print" role="tabpanel" hidden>
|
||
<div class="panel-stat" id="printInfo"></div>
|
||
<div class="row"><select id="printPaper" class="field" title="Paper size">
|
||
<option value="A4" selected>A4</option><option value="A3">A3</option></select>
|
||
<select id="printOrient" class="field" title="Orientation">
|
||
<option value="paysage" selected>Landscape</option><option value="portrait">Portrait</option></select>
|
||
<select id="printScale" class="field" title="Print scale">
|
||
<option value="1000">1:1,000</option><option value="2000" selected>1:2,000</option>
|
||
<option value="5000">1:5,000</option><option value="10000">1:10,000</option></select></div>
|
||
<div class="row"><input id="printTitle" class="field" type="text" maxlength="120"
|
||
placeholder="Title (optional)" title="Title printed in the title block"></div>
|
||
<p class="hint">Drag the ✥ handle to place the yellow frame over the area to print.</p>
|
||
<div class="row"><button id="printHere" class="btn"
|
||
title="Place the frame at the centre of the view">⌖ Centre here</button>
|
||
<button id="printFit" class="btn" title="Zoom to the frame">⤢ Show frame</button></div>
|
||
<div class="row"><button id="printGo" class="btn btn-primary">Export PDF</button>
|
||
<span id="printMsg" class="print-msg"></span></div>
|
||
</section>
|
||
<section id="tab-gen" role="tabpanel" hidden>
|
||
<div class="row"><button id="btnZone" class="btn" title="Generate a new area: draw a rectangle, IGN download + processing">+ Area</button>
|
||
<button id="btnComplete" class="btn" title="Complete: process every already-downloaded tile missing the chosen layers">⤒ Complete</button></div>
|
||
<div class="panel-stat" id="genBadge"></div>
|
||
<div id="genMsg" class="meta">Draw an area (+) or complete the existing tiles (⤒).</div>
|
||
<div id="genOpts">
|
||
<div class="gen-row"><span class="gen-lbl">Layers</span>
|
||
<select id="genViz" class="field" multiple size="4" title="Leave empty for the panel layers"></select></div>
|
||
<label class="chk"><input type="checkbox" id="genRegen"> Regenerate existing tiles</label>
|
||
<div class="meta">Ground: IGN classification · edges stitched to neighbouring tiles (100 m band)</div>
|
||
</div>
|
||
<div class="row" id="genActions">
|
||
<button id="genGo" class="btn btn-primary" title="Downloads (IGN Géoplateforme) then processes the selected tiles">Generate</button>
|
||
<button id="genClear" title="Clear the tile selection">Clear selection</button>
|
||
</div>
|
||
<div id="genRun" hidden>
|
||
<div class="meta" id="genProgress"></div>
|
||
<pre id="genLog" class="gen-log"></pre>
|
||
<div class="row">
|
||
<button id="genStop" title="SIGTERM to the pipeline (clean shutdown), SIGKILL as a fallback">Stop</button>
|
||
<button id="genQueueClear" title="Remove pending requests (the current run continues)">Clear queue</button>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<section id="tab-share" role="tabpanel" hidden>
|
||
<div class="row"><button id="btnShare" class="btn btn-primary" title="Copy a link to this view">⎘ Copy link to this view</button></div>
|
||
<h4 class="sec-title">XYZ imagery background (JOSM, QGIS, iD…)</h4>
|
||
<div id="useBody"></div>
|
||
<h4 class="sec-title">Default configuration</h4>
|
||
<div class="row"><button id="btnDefault" class="btn" title="Save the current display (main layer, mode, base map) as the default configuration for every browser">★ Set as default</button>
|
||
<button id="btnReset" class="btn" title="Revert to the default configuration">↺ Reset</button></div>
|
||
</section>
|
||
</div>
|
||
</aside>
|
||
|
||
<nav id="tools">
|
||
<button id="zoomIn" title="Zoom in">+</button>
|
||
<button id="zoomOut" title="Zoom out">−</button>
|
||
<button id="zoomFit" title="Zoom to the data">⤢</button>
|
||
<button id="gps" title="Centre on my location">⌖</button>
|
||
<button id="btnTheme" class="btn-icon" title="Theme">◐</button>
|
||
</nav>
|
||
<div id="toast" class="toast" hidden></div>
|
||
<div id="tileload" class="tileload" hidden aria-live="polite">
|
||
<span class="tl-spin"></span>
|
||
<span id="tileloadText"></span>
|
||
<span class="tl-bar"><span id="tileloadBar"></span></span>
|
||
</div>
|
||
|
||
<script src="assets/vendor/leaflet/leaflet.js"></script>
|
||
<script src="assets/app.js?v=__ASSETS_V__"></script>
|
||
</body>
|
||
</html>
|