RAVE-SCOUT/install.ps1
hacklab f890dd9448 Multi-país, idiomas, seguridad, instaladores y documentación
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.
2026-08-08 22:24:17 +02:00

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"