Multi-país de verdad: 27 países calculados y 26 defectos corregidos
El soporte multi-país estaba declarado pero nunca se había ejecutado entero. Al hacerlo aparecieron defectos en cadena, la mayoría por dar por hecho que lo que vale en España vale en todas partes. Máscara del país - El nivel administrativo que cubre el país no es el mismo en todas partes: en España el 4 son las comunidades, en Portugal el 4 se queda en 2.338 km2 de 89.015 y cubre el 8, en Islandia el 8 tiene un solo polígono de 5 km2 y manda el 6. Se elige el nivel midiendo cobertura, no suponiéndola. - Se mide sobre la máscara del país y no por área cruda de los polígonos: con áreas crudas el nivel grueso gana en los países con costa (las županije croatas cuentan 30.000 km2 de Adriático) y el fino gana en Polonia cubriendo el 57 %. - Fuera el mar. El límite del país en OSM incluye las aguas territoriales: Islandia son 177.147 km2 con mar y 102.719 de tierra, y salían ocho candidatos flotando en el Atlántico. Se recorta por DEM, donde el océano es exactamente 0.0 y la tierra a cero clavado casi no existe (5 km2 de 56.439 en Croacia). Los países bajo el nivel del mar salen negativos, no cero. Un solo modelo - score.py duplicaba los umbrales de stars.py con otros valores (1.500 m al edificio en vez de 2.000, 8 grados de pendiente en vez de 10) y publicaba su propia lista de candidatos sin filtro acústico: 60 sitios que compartían uno con los 355 buenos. Fuera la lista, y los umbrales salen de stars.py. Datos por país - Los espacios protegidos se guardaban en un único directorio con un "si ya existe, no lo bajes", así que cualquier país nuevo se quedaba con los polígonos de España. Uno por país. - Comprobado contra los servicios de la EEA país por país: Andorra y Reino Unido devuelven cero sitios (Andorra nunca estuvo en la UE, el Reino Unido salió) y Grecia solo tiene Natura 2000. Donde no hay fuente oficial se cae a OpenStreetMap avisando, que es incompleto pero mucho mejor que una máscara vacía: en Andorra eran 9 km2 contra 70. - make datos no descargaba el OSM y los vecinos se extraían a mano. Nuevo src/dl_osm.sh y extract_osm.py los recorre solo, avisando si falta alguno. Robustez - stars.py reventaba con un traceback si un país no daba ningún sitio. Ahora explica el embudo filtro a filtro y corta limpio. Pasa en cuatro países. - stars.py no cabía en memoria con mallas grandes: Argelia son 449 M celdas, 16 capas de 1,8 GB más los criterios, y el kernel mataba el proceso. Las capas se mapean a disco. Resultado idéntico byte a byte. - dl_dem.sh no era seguro en paralelo: el fichero temporal se llamaba igual para todos y dos países bajando la misma tesela se pisaban. - revisar.py llevaba la ventana de España cableada, comparaba el centro de celda sin tolerancia de rejilla, y trataba como fallo una etiqueta que hay países que no tienen. Añadidas dos comprobaciones nuevas: candidatos sobre el mar y candidatos pegados al borde de la ventana, donde el aislamiento sale inflado porque al otro lado del bbox no hay datos. Visor - Selector de país en la cabecera. Cada visor es un fichero autónomo, así que salta al del otro país en vez de cargar los dos. Rutas relativas. - Las capas del mapa pasan a ser excluyentes: las tres a la vez se tapaban. - Lo español (teselas del IGN, catastro, WMS del MITECO, ortofoto del PNOA) queda condicionado a la región en vez de salir en blanco fuera de España. Publicación - Al repositorio va el visor y los CSV de cada país; fuera los WebP, que van ya incrustados dentro del visor, y los PNG de los mapas, que solo usa el informe. make empaquetar deja además un zip por país para las releases y make descargar los baja sin recalcular nada. - El informe no se genera fuera de España: no es una plantilla sino un artículo escrito, con cifras del barrido español en la prosa.
This commit is contained in:
parent
4e79692336
commit
73e471005b
31 changed files with 898 additions and 254 deletions
99
README.md
99
README.md
|
|
@ -34,6 +34,7 @@ No hace falta servidor ni conexión. Ojo: `visor.html` necesita la carpeta
|
|||
| `out/ortho/` | Ortofoto PNOA de cada localización, 640 m de lado |
|
||||
| `out/stats.json` | Cifras del modelo, que leen el informe y el visor |
|
||||
| `src/` | El pipeline entero, reproducible |
|
||||
| `out/<país>/` | Lo mismo para cada país calculado. No van al repositorio: se publican como paquetes (`make empaquetar`) y se bajan con `make descargar` |
|
||||
|
||||
## Cómo se calcula
|
||||
|
||||
|
|
@ -66,20 +67,106 @@ exigiendo después 10 km de separación entre los elegidos.
|
|||
|
||||

|
||||
|
||||
El país es un parámetro. Hay 27 declarados entre Europa y el norte de África,
|
||||
pero **solo España está calculada**: el resto hay que procesarlo.
|
||||
El país es un parámetro. Hay 27 en el catálogo entre Europa y el norte de África
|
||||
y **están los 27 calculados**: 7.337 localizaciones en total, de las que 1.417
|
||||
son de cinco estrellas. Se cambia de uno a otro desde el propio visor.
|
||||
|
||||
| País | Localizaciones | ★★★★★ | km² bajo 45 dB | Protegido |
|
||||
|---|---:|---:|---:|---:|
|
||||
| Argelia | 1.959 | 310 | 51.438 | 5.5 % |
|
||||
| Libia | 1.246 | 434 | 52.100 | 0.0 % |
|
||||
| Egipto | 753 | 175 | 22.120 | 6.7 % |
|
||||
| Mauritania | 674 | 150 | 21.997 | 0.6 % |
|
||||
| Marruecos | 640 | 230 | 25.173 | 1.7 % |
|
||||
| Suecia | 429 | 18 | 3.985 | 18.8 % |
|
||||
| España | 355 | 11 | 505 | 29.0 % |
|
||||
| Rumanía | 274 | 31 | 1.075 | 24.3 % |
|
||||
| Túnez | 213 | 22 | 6.085 | 0.8 % |
|
||||
| Grecia | 155 | 13 | 336 | 36.2 % |
|
||||
| Islandia | 143 | 15 | 1.147 | 19.8 % |
|
||||
| Noruega | 142 | 6 | 176 | 18.2 % |
|
||||
| Finlandia | 121 | 0 | 630 | 15.8 % |
|
||||
| Reino Unido | 88 | 1 | 150 | 20.6 % |
|
||||
| Italia | 46 | 0 | 7 | 22.1 % |
|
||||
| Croacia | 46 | 1 | 86 | 39.5 % |
|
||||
| Portugal | 16 | 0 | 13 | 23.1 % |
|
||||
| Francia | 16 | 0 | 2 | 29.5 % |
|
||||
| Irlanda | 12 | 0 | 4 | 16.7 % |
|
||||
| Chequia | 4 | 0 | 0 | 23.1 % |
|
||||
| Polonia | 2 | 0 | 1 | 40.6 % |
|
||||
| Austria | 2 | 0 | 0 | 30.5 % |
|
||||
| Alemania | 1 | 0 | 0 | 41.7 % |
|
||||
| Andorra, Países Bajos, Bélgica, Suiza | 0 | 0 | 0 | — |
|
||||
|
||||
La columna que manda es la del sonido, y el reparto no tiene nada que ver con el
|
||||
tamaño de los países. **El norte de África concentra 5.272 de las 7.337
|
||||
localizaciones**; la Europa central industrializada —Alemania, Polonia, Austria,
|
||||
Chequia, Bélgica, Países Bajos y Suiza juntos, más de un millón de km²— suma
|
||||
**nueve**. Alemania tiene exactamente una: Bad Arolsen, a 44,4 dB. Y Holanda,
|
||||
Bélgica, Suiza y Andorra, ninguna.
|
||||
|
||||
Lo que decide es cómo está repartida la gente, no cuánta hay. La mediana de
|
||||
distancia al edificio más cercano va de los 141 m de los Países Bajos a los
|
||||
48 km de Libia, pasando por 316 m en Polonia y 1.020 m en España. Suiza es el
|
||||
caso curioso: aislamiento le sobra, pero solo el 37,9 % del país baja de 10° de
|
||||
pendiente y el cruce con "a más de 2 km de una casa" deja 430 km², que no
|
||||
sobreviven al resto de filtros.
|
||||
|
||||
**Dos avisos sobre las cifras extremas.** Primero, las estrellas no son
|
||||
comparables entre países: las bandas son absolutas (5★ a partir de 72 puntos)
|
||||
pero los criterios saturan en extremos opuestos. En Libia el 72 % de los
|
||||
candidatos tiene el sonido —que pesa un 30 %— clavado en el máximo, y en España
|
||||
el 0 %; los 121 candidatos finlandeses tienen exactamente la misma nota de clima
|
||||
porque el umbral del frío se acaba en −8 °C y allí el mínimo va de −11 a −20.
|
||||
|
||||
Segundo, **la columna `db_en_casa` da negativos en el desierto** y eso no
|
||||
significa nada. El mejor candidato argelino tiene la casa más cercana a 265 km,
|
||||
y el término de absorción atmosférica del modelo (0,5 dB/km) extrapolado a esa
|
||||
distancia son 132 dB él solo, de donde salen los −111 dB. La aproximación vale
|
||||
para unos pocos kilómetros, no para cientos. Por debajo del ruido ambiente de
|
||||
una noche en el desierto, unos 20-30 dB, todo es igual de inaudible.
|
||||
|
||||
**Ojo al comparar estrellas entre países.** El criterio de clima penaliza con
|
||||
umbrales absolutos —por encima de 30 °C y por debajo de −1 °C— y en el norte
|
||||
satura: los 121 candidatos finlandeses tienen exactamente la misma nota de
|
||||
clima, así que ese 8 % del modelo deja de distinguir y les baja la banda de
|
||||
estrellas a todos por igual. Finlandia no sale con cero cinco-estrellas porque
|
||||
sus sitios sean peores.
|
||||
|
||||
## Bajarse un país, o calcular otro
|
||||
|
||||
El repositorio lleva España. Los demás se bajan ya hechos, que son unos pocos MB
|
||||
y un momento, en vez de un par de horas y 25 GB:
|
||||
|
||||
```bash
|
||||
make descargar PAIS=is # solo Islandia
|
||||
make descargar # todos los publicados
|
||||
```
|
||||
|
||||
Aparecen en el desplegable de país del visor automáticamente. Y para calcular
|
||||
uno que no esté:
|
||||
|
||||
```bash
|
||||
./.venv/bin/python src/regions.py # ver el catálogo
|
||||
REGION=pt make all # procesar Portugal
|
||||
REGION=hr make all # procesar Croacia entera
|
||||
```
|
||||
|
||||
Sin ortofoto nacional descargable, el visor de Portugal abre la ficha en el
|
||||
relieve 3D en vez de en la foto aérea, y el mapa deslizante va sobre OSM en vez
|
||||
de sobre las teselas del IGN. Tampoco lleva `informe.html`: ese no es una
|
||||
plantilla sino un artículo escrito sobre el barrido español, así que solo se
|
||||
genera para España.
|
||||
|
||||
Una malla por país, no una continental: Europa entera a 100 m son mil millones
|
||||
de celdas, 73 GB solo en capas ráster. Ver [Añadir un país](docs/Anadir-un-pais.md).
|
||||
|
||||
Ojo con lo que hay disponible en cada sitio: en el norte de África **no hay
|
||||
fuente libre de espacios protegidos**, así que el filtro legal no se aplica y
|
||||
hay que conseguir la cartografía del país aparte.
|
||||
Ojo con lo que hay disponible en cada sitio. Comprobado consultando los
|
||||
servicios de la Agencia Europea de Medio Ambiente país por país, que estar en
|
||||
Europa no basta: **Andorra y Reino Unido devuelven cero espacios protegidos**
|
||||
—Andorra nunca estuvo en la UE y el Reino Unido salió— igual que todo el norte
|
||||
de África, y Grecia solo tiene Natura 2000, sin figuras nacionales. Donde no hay
|
||||
fuente oficial se cae a los polígonos de OpenStreetMap, que son incompletos y no
|
||||
son un límite legal; hay que conseguir la cartografía del país aparte.
|
||||
|
||||
## Reproducirlo
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue