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.
This commit is contained in:
parent
d4b3b803e0
commit
f890dd9448
22 changed files with 1288 additions and 280 deletions
57
install.ps1
Normal file
57
install.ps1
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# 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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue