Seguridad - Escapado de todo lo que viene de datos de terceros antes de ir al HTML, incluidos los tooltips de Leaflet. Los nombres de municipio salen de OpenStreetMap, que cualquiera puede editar: sin escapar, era una vía de inyección de código en el navegador de quien abriera el visor. Multi-país - El país pasa a ser un parámetro (REGION). Catálogo de 27 regiones entre Europa y el norte de África, declarando por país qué datos existen de verdad. - Una malla por país y no una continental: Europa entera a 100 m son mil millones de celdas y unos 73 GB solo en capas ráster. - Proyección equiárea propia para las regiones de fuera de Europa, donde EPSG:3035 deforma. Interfaz - Idiomas: castellano, inglés, francés y portugués, con selector persistente. - Modo Mapa: el país entero sobre satélite, topográfico u OSM. - Enlaces a mapas externos en la barra inferior, siempre visibles. - Botón de ver de cerca también en la cabecera de la ficha. - Fuera la distancia desde Madrid, que centralizaba algo de uso general. Portabilidad - install.sh e install.ps1 para Linux/macOS y Windows; requirements.txt. - Sin rutas absolutas en el código. Documentación - Ocho páginas en docs/ para la wiki: instalación, uso, añadir un país, metodología, seguridad, fuentes y publicación.
57 lines
2 KiB
PowerShell
57 lines
2 KiB
PowerShell
# Instalador para Windows (PowerShell).
|
|
#
|
|
# Solo hace falta para RECONSTRUIR los datos. Para USAR el visor no se instala
|
|
# nada: se abre out\visor.html haciendo doble clic.
|
|
#
|
|
# Si Windows bloquea el script:
|
|
# Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
|
|
# .\install.ps1
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
Set-Location -Path $PSScriptRoot
|
|
|
|
Write-Host "== RAVE SCOUT / EXPLORER ==" -ForegroundColor Cyan
|
|
|
|
# --- python ---
|
|
$py = $null
|
|
foreach ($c in @("py -3", "python", "python3")) {
|
|
try {
|
|
$exe, $arg = $c.Split(" ", 2)
|
|
$v = & $exe $arg -c "import sys;print(sys.version_info>=(3,9))" 2>$null
|
|
if ($v -eq "True") { $py = $c; break }
|
|
} catch { }
|
|
}
|
|
if (-not $py) {
|
|
Write-Host "Falta Python 3.9 o superior." -ForegroundColor Red
|
|
Write-Host " Descarga: https://www.python.org/downloads/"
|
|
Write-Host " O bien: winget install Python.Python.3.12"
|
|
Write-Host " Marca 'Add Python to PATH' durante la instalacion."
|
|
exit 1
|
|
}
|
|
$exe, $arg = $py.Split(" ", 2)
|
|
Write-Host ("Python: " + (& $exe $arg -V))
|
|
|
|
# --- entorno ---
|
|
if (-not (Test-Path ".venv")) { & $exe $arg -m venv .venv }
|
|
& ".\.venv\Scripts\python.exe" -m pip -q install --upgrade pip
|
|
Write-Host "Instalando dependencias..."
|
|
& ".\.venv\Scripts\python.exe" -m pip -q install -r requirements.txt
|
|
|
|
# --- comprobacion ---
|
|
$chk = @"
|
|
import importlib, sys
|
|
faltan = [m for m in ('numpy','scipy','rasterio','osmium','shapely','pyproj',
|
|
'requests','PIL') if not importlib.util.find_spec(m)]
|
|
if faltan:
|
|
print('FALTAN: ' + ', '.join(faltan)); sys.exit(1)
|
|
print('Dependencias correctas.')
|
|
"@
|
|
$chk | & ".\.venv\Scripts\python.exe" -
|
|
if ($LASTEXITCODE -ne 0) { exit 1 }
|
|
|
|
Write-Host ""
|
|
Write-Host "Listo." -ForegroundColor Green
|
|
Write-Host " Abrir el visor: .\abrir.ps1"
|
|
Write-Host " Ver paises: .\.venv\Scripts\python.exe src\regions.py"
|
|
Write-Host " Reconstruir Espana: .\.venv\Scripts\python.exe src\stars.py"
|
|
Write-Host " Otro pais: `$env:REGION='pt'; .\.venv\Scripts\python.exe src\stars.py"
|