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.
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),
bboxen lon/lat con algo de margen.osmyneighbours, 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.