RAVE-SCOUT/docs/Anadir-un-pais.md
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

2.2 KiB

Añadir un país

El país es un parámetro. Se elige con la variable REGION.

./.venv/bin/python src/regions.py    # ver el catálogo
REGION=pt make all                   # procesar Portugal entero

Los resultados van a out/pt/ y los intermedios a data/interim/pt/. España, que es la región por defecto, publica en out/ para no romper rutas.

Por qué una malla por país y no un mapa continental

Europa entera a 100 m son mil millones de celdas: 4 GB por capa y unos 73 GB para las dieciocho capas del modelo, más de lo que cabe en memoria de una vez. El norte de África añade otros 61 GB. Por país el problema es tratable y además se puede paralelizar.

Lo que hay que mirar antes

src/regions.py declara, por país, qué datos existen de verdad:

Campo Qué significa
protected='eea' Hay Red Natura 2000 y designaciones nacionales de la Agencia Europea de Medio Ambiente. El filtro legal funciona
protected=None No hay fuente libre equivalente. El filtro legal no se aplica. Pasa en todo el norte de África: hay que conseguir la cartografía del país antes de fiarse de un resultado
ortho='pnoa' Ortofoto nacional descargable. Solo España
ortho=None Sin foto aérea incrustada. En el visor queda el mapa deslizante, que sí funciona en todas partes

Proyección

Europa usa EPSG:3035 (equiárea europea). Para el norte de África se construye una proyección equiárea centrada en el propio país, porque 3035 deforma fuera de Europa. Está en regions.crs_for().

Añadir un país que no esté

En src/regions.py:

"si": dict(name="Eslovenia", bbox=(13.3, 45.4, 16.6, 46.9),
           osm=["europe/slovenia"],
           neighbours=["europe/croatia", "europe/austria", "europe/italy"],
           protected="eea", ortho=None),
  • bbox en lon/lat con algo de margen.
  • osm y neighbours, rutas de Geofabrik.
  • Los vecinos importan. Sin ellos, la franja fronteriza sale falsamente vacía: el extracto está recortado por la frontera y al otro lado no hay edificios en los datos aunque sí los haya en el terreno.

Coste aproximado

Por país mediano: 2-6 GB de descarga, ~25 GB de disco temporal y un par de horas.