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:
hacklab 2026-08-11 17:42:59 +02:00
parent 4e79692336
commit 73e471005b
31 changed files with 898 additions and 254 deletions

View file

@ -1,61 +0,0 @@
rank,lat,lon,municipio,comunidad,score,d_edificio_m,d_carretera_m,d_acceso_m,d_nucleo_m,d_protegido_m,d_militar_m,cota_m,pendiente_deg,tpi_m,edif_5km,km_madrid
1,38.06287,-5.1757,Villanueva del Rey,Andalucía,0.9962,6576,5423,412,14268,9141,26148,395,0.4,-34.2,0,287.8
2,38.34667,-3.28549,Santisteban del Puerto,Andalucía,0.9954,5336,5069,100,10580,7357,22934,447,0.5,-109.9,0,232.4
3,38.55127,-4.52142,Almodóvar del Campo,Castilla-La Mancha,0.9946,5115,5223,447,8213,7269,44969,709,0.5,-50.7,0,217.0
4,38.43556,-3.68651,Viso del Marqués,Castilla-La Mancha,0.9929,5560,6082,100,11364,8884,15945,963,0.7,-76.1,0,219.2
5,38.44065,-2.92249,Chiclana de Segura,Andalucía,0.989,5941,6040,100,8050,11200,21982,707,1.1,-67.7,0,229.8
6,39.24702,-4.99906,Herrera del Duque,Extremadura,0.9872,5333,4925,500,8993,13600,61175,491,1.0,-33.4,0,169.2
7,39.22167,-6.90758,Alburquerque,Extremadura,0.9826,7278,4738,500,8041,20341,19383,278,0.7,-34.1,0,303.0
8,39.10688,-6.21413,Montánchez,Extremadura,0.9823,5108,4900,100,8205,2475,17836,302,1.4,-32.9,0,257.8
9,40.07779,-6.88696,Cilleros,Extremadura,0.976,5240,5936,412,8547,13384,80146,355,0.5,-24.3,0,273.4
10,37.87092,-7.14462,Rosal de la Frontera,Andalucía,0.9755,8300,5131,565,9140,728,84791,266,2.5,-50.8,0,406.3
11,38.76912,-5.96255,Don Benito,Extremadura,0.9714,5314,5536,0,7083,26444,40383,431,1.0,-30.3,0,264.3
12,38.90002,-5.29879,Monterrubio de la Serena,Extremadura,0.9706,6600,6363,282,8354,7843,55276,389,0.3,-21.9,0,215.0
13,38.23908,-3.77675,Baños de la Encina,Andalucía,0.9687,5536,4785,100,7566,6447,10186,368,1.4,-62.2,0,240.8
14,37.69508,-7.20742,Paymogo,Andalucía,0.9673,7333,5103,100,7623,17844,69148,137,0.8,-24.9,0,423.8
15,41.4182,0.22977,Fraga,Aragón,0.9664,5366,5434,583,7518,8309,93148,174,2.4,-71.9,0,349.0
16,39.05018,-4.89497,Fuenlabrada de los Montes,Extremadura,0.966,6281,4360,0,7840,24298,72713,569,0.5,-32.9,0,181.2
17,40.59572,-0.89423,Orrios,Aragón,0.965,5162,5872,0,6705,5162,67727,1376,0.9,-38.0,0,239.4
18,38.20084,-6.14295,Montemolín,Extremadura,0.9648,6381,4924,200,7877,16611,44949,566,2.8,-29.5,0,320.5
19,39.42412,-4.34442,Retuerta del Bullaque,Castilla-La Mancha,0.9646,5500,4850,0,6789,4964,51145,692,0.5,-33.8,0,122.0
20,39.46578,-3.74467,Consuegra,Castilla-La Mancha,0.9639,5728,4967,100,6649,22173,24207,728,0.5,-29.2,0,105.3
21,37.53579,-7.01779,Alosno,Andalucía,0.9628,5385,7892,500,8876,28205,45848,109,1.2,-22.4,0,425.4
22,38.30851,-6.6121,Jerez de los Caballeros,Extremadura,0.9627,5950,5192,565,6926,9130,65547,290,0.1,-25.6,0,339.7
23,41.36079,-0.17822,Sástago,Aragón,0.9624,6313,4780,100,11763,12727,66636,292,0.4,-22.6,0,314.5
24,39.16856,-4.62131,Arroba de los Montes,Castilla-La Mancha,0.9623,4997,5140,0,6795,16277,79107,557,1.4,-54.2,0,157.9
25,39.35078,-4.18342,Retuerta del Bullaque,Castilla-La Mancha,0.9622,4920,4802,0,7816,6082,49880,825,2.1,-77.7,0,124.3
26,41.60134,-0.05886,Villanueva de Sigena,Aragón,0.9609,4940,7206,0,7752,39926,66038,391,1.5,-25.5,0,332.7
27,39.17435,-5.28458,Talarrubias,Extremadura,0.9565,6264,4472,223,8500,4579,38327,482,2.2,-36.2,0,191.6
28,40.30502,-6.57399,Villasrubias,Castilla y León,0.9529,4808,5189,400,6720,1264,93209,910,0.9,-53.7,0,244.5
29,38.41832,-5.89163,Valencia de las Torres,Extremadura,0.9522,7023,5440,100,5640,16199,54423,440,0.1,-33.7,0,288.3
30,39.4711,-4.0508,Los Yébenes,Castilla-La Mancha,0.9482,4981,5675,0,5909,5903,32491,1108,0.9,-30.9,0,108.4
31,38.42337,-4.17661,Fuencaliente,Castilla-La Mancha,0.9482,4972,5800,583,10057,3935,51072,768,0.6,-16.9,0,223.6
32,38.90876,-4.74684,Valdemanco del Esteras,Castilla-La Mancha,0.9474,7262,4143,600,7963,39906,60421,581,1.8,-37.6,0,188.1
33,39.05771,-4.40184,Piedrabuena,Castilla-La Mancha,0.9461,4891,4101,0,12650,25205,57346,694,1.1,-41.2,0,161.0
34,38.69587,-4.5906,Almodóvar del Campo,Castilla-La Mancha,0.9449,4992,5269,223,8340,20631,48304,605,5.5,-37.2,0,204.0
35,38.47308,-3.21349,Villamanrique,Castilla-La Mancha,0.9442,4272,7962,0,9213,13333,32224,674,0.6,-61.8,0,219.8
36,39.27436,-3.84608,Los Yébenes,Castilla-La Mancha,0.9401,7218,4669,282,6441,11067,36293,756,1.6,-48.6,0,126.8
37,38.73027,-3.60681,Moral de Calatrava,Castilla-La Mancha,0.9391,5780,4295,565,10625,21888,25091,665,0.4,-21.4,0,186.9
38,38.01888,-6.15112,Monesterio,Extremadura,0.9377,5166,4860,400,6140,5200,35867,699,2.0,-42.0,0,336.5
39,37.55272,-5.54487,Carmona,Andalucía,0.9369,5813,4801,565,7937,12924,10259,86,0.8,-16.4,0,352.2
40,40.00496,-3.2808,Villarrubia de Santiago,Castilla-La Mancha,0.9361,6280,4981,100,5470,13336,12778,598,1.3,-43.3,0,58.6
41,38.06582,-5.51439,Hornachuelos,Andalucía,0.9356,4729,4785,360,12949,500,17101,319,3.7,-46.1,0,301.2
42,36.41683,-5.82344,Medina Sidonia,Andalucía,0.9333,5126,5188,0,5126,4000,21005,38,0.9,-35.8,0,476.1
43,37.1289,-5.34582,Morón de la Frontera,Andalucía,0.9249,6307,3590,0,7746,27549,10568,265,1.4,-53.0,0,388.2
44,39.61766,-1.49845,Mira,Castilla-La Mancha,0.9247,6053,4365,424,5813,8237,62721,862,0.6,-32.0,0,209.8
45,38.5549,-3.85046,Calzada de Calatrava,Castilla-La Mancha,0.9242,4539,4816,282,6413,15851,35609,530,0.5,-43.8,0,206.2
46,39.57463,-6.90807,Alcántara,Extremadura,0.9201,4992,5536,360,11795,538,47327,264,1.2,-9.8,0,288.2
47,39.60971,-6.00399,Trujillo,Extremadura,0.9191,3981,5532,100,9617,17426,34753,320,1.2,-31.5,0,214.8
48,39.0247,-6.60132,Montijo,Extremadura,0.9187,7632,5215,200,9192,24481,20934,242,0.5,-7.1,0,290.5
49,41.40568,-0.3686,Velilla de Ebro,Aragón,0.9169,5020,4252,0,6802,18577,50195,249,1.1,-24.5,0,301.0
50,41.40387,-1.90091,Villalengua,Aragón,0.9157,5028,5797,0,6113,26121,23361,939,1.3,-19.9,0,186.2
51,39.7348,-3.07369,Villanueva de Alcardete,Castilla-La Mancha,0.9154,5208,5124,0,8683,20208,25941,731,0.4,-5.7,0,93.5
52,38.61326,-6.02991,Puebla de la Reina,Extremadura,0.9139,5246,3560,412,7184,29044,48662,393,1.2,-32.1,0,280.4
53,40.25601,-2.91121,Comunidad de Albalate de Zorita e Illana,Castilla-La Mancha,0.9136,4904,4522,100,6741,40231,28313,765,1.7,-24.4,0,70.1
54,42.68931,-4.73128,Congosto de Valdavia,Castilla y León,0.9134,4838,4827,100,4967,16007,69579,1049,0.8,-40.5,0,267.4
55,37.44485,-4.96863,Écija,Andalucía,0.9118,7705,4738,0,7002,9481,15469,156,0.6,-14.5,0,344.6
56,38.19032,-4.62323,Adamuz,Andalucía,0.9117,4883,4110,565,14651,18703,16773,595,1.9,-22.3,0,257.5
57,41.67708,-2.96155,Talveila,Castilla y León,0.9102,4833,4726,0,5154,8402,12756,1014,0.8,-29.2,0,152.2
58,39.94034,-3.08974,Fuente de Pedro Naharro,Castilla-La Mancha,0.9096,5124,5099,0,6977,30910,18767,774,0.2,-9.5,0,75.0
59,39.94011,-6.74119,Moraleja,Extremadura,0.909,6685,3466,424,6800,15065,60360,227,0.6,-47.4,0,263.7
60,39.09732,-4.22891,Piedrabuena,Castilla-La Mancha,0.9076,7002,3482,565,7202,22830,44201,566,0.8,-27.8,0,152.1
1 rank lat lon municipio comunidad score d_edificio_m d_carretera_m d_acceso_m d_nucleo_m d_protegido_m d_militar_m cota_m pendiente_deg tpi_m edif_5km km_madrid
2 1 38.06287 -5.1757 Villanueva del Rey Andalucía 0.9962 6576 5423 412 14268 9141 26148 395 0.4 -34.2 0 287.8
3 2 38.34667 -3.28549 Santisteban del Puerto Andalucía 0.9954 5336 5069 100 10580 7357 22934 447 0.5 -109.9 0 232.4
4 3 38.55127 -4.52142 Almodóvar del Campo Castilla-La Mancha 0.9946 5115 5223 447 8213 7269 44969 709 0.5 -50.7 0 217.0
5 4 38.43556 -3.68651 Viso del Marqués Castilla-La Mancha 0.9929 5560 6082 100 11364 8884 15945 963 0.7 -76.1 0 219.2
6 5 38.44065 -2.92249 Chiclana de Segura Andalucía 0.989 5941 6040 100 8050 11200 21982 707 1.1 -67.7 0 229.8
7 6 39.24702 -4.99906 Herrera del Duque Extremadura 0.9872 5333 4925 500 8993 13600 61175 491 1.0 -33.4 0 169.2
8 7 39.22167 -6.90758 Alburquerque Extremadura 0.9826 7278 4738 500 8041 20341 19383 278 0.7 -34.1 0 303.0
9 8 39.10688 -6.21413 Montánchez Extremadura 0.9823 5108 4900 100 8205 2475 17836 302 1.4 -32.9 0 257.8
10 9 40.07779 -6.88696 Cilleros Extremadura 0.976 5240 5936 412 8547 13384 80146 355 0.5 -24.3 0 273.4
11 10 37.87092 -7.14462 Rosal de la Frontera Andalucía 0.9755 8300 5131 565 9140 728 84791 266 2.5 -50.8 0 406.3
12 11 38.76912 -5.96255 Don Benito Extremadura 0.9714 5314 5536 0 7083 26444 40383 431 1.0 -30.3 0 264.3
13 12 38.90002 -5.29879 Monterrubio de la Serena Extremadura 0.9706 6600 6363 282 8354 7843 55276 389 0.3 -21.9 0 215.0
14 13 38.23908 -3.77675 Baños de la Encina Andalucía 0.9687 5536 4785 100 7566 6447 10186 368 1.4 -62.2 0 240.8
15 14 37.69508 -7.20742 Paymogo Andalucía 0.9673 7333 5103 100 7623 17844 69148 137 0.8 -24.9 0 423.8
16 15 41.4182 0.22977 Fraga Aragón 0.9664 5366 5434 583 7518 8309 93148 174 2.4 -71.9 0 349.0
17 16 39.05018 -4.89497 Fuenlabrada de los Montes Extremadura 0.966 6281 4360 0 7840 24298 72713 569 0.5 -32.9 0 181.2
18 17 40.59572 -0.89423 Orrios Aragón 0.965 5162 5872 0 6705 5162 67727 1376 0.9 -38.0 0 239.4
19 18 38.20084 -6.14295 Montemolín Extremadura 0.9648 6381 4924 200 7877 16611 44949 566 2.8 -29.5 0 320.5
20 19 39.42412 -4.34442 Retuerta del Bullaque Castilla-La Mancha 0.9646 5500 4850 0 6789 4964 51145 692 0.5 -33.8 0 122.0
21 20 39.46578 -3.74467 Consuegra Castilla-La Mancha 0.9639 5728 4967 100 6649 22173 24207 728 0.5 -29.2 0 105.3
22 21 37.53579 -7.01779 Alosno Andalucía 0.9628 5385 7892 500 8876 28205 45848 109 1.2 -22.4 0 425.4
23 22 38.30851 -6.6121 Jerez de los Caballeros Extremadura 0.9627 5950 5192 565 6926 9130 65547 290 0.1 -25.6 0 339.7
24 23 41.36079 -0.17822 Sástago Aragón 0.9624 6313 4780 100 11763 12727 66636 292 0.4 -22.6 0 314.5
25 24 39.16856 -4.62131 Arroba de los Montes Castilla-La Mancha 0.9623 4997 5140 0 6795 16277 79107 557 1.4 -54.2 0 157.9
26 25 39.35078 -4.18342 Retuerta del Bullaque Castilla-La Mancha 0.9622 4920 4802 0 7816 6082 49880 825 2.1 -77.7 0 124.3
27 26 41.60134 -0.05886 Villanueva de Sigena Aragón 0.9609 4940 7206 0 7752 39926 66038 391 1.5 -25.5 0 332.7
28 27 39.17435 -5.28458 Talarrubias Extremadura 0.9565 6264 4472 223 8500 4579 38327 482 2.2 -36.2 0 191.6
29 28 40.30502 -6.57399 Villasrubias Castilla y León 0.9529 4808 5189 400 6720 1264 93209 910 0.9 -53.7 0 244.5
30 29 38.41832 -5.89163 Valencia de las Torres Extremadura 0.9522 7023 5440 100 5640 16199 54423 440 0.1 -33.7 0 288.3
31 30 39.4711 -4.0508 Los Yébenes Castilla-La Mancha 0.9482 4981 5675 0 5909 5903 32491 1108 0.9 -30.9 0 108.4
32 31 38.42337 -4.17661 Fuencaliente Castilla-La Mancha 0.9482 4972 5800 583 10057 3935 51072 768 0.6 -16.9 0 223.6
33 32 38.90876 -4.74684 Valdemanco del Esteras Castilla-La Mancha 0.9474 7262 4143 600 7963 39906 60421 581 1.8 -37.6 0 188.1
34 33 39.05771 -4.40184 Piedrabuena Castilla-La Mancha 0.9461 4891 4101 0 12650 25205 57346 694 1.1 -41.2 0 161.0
35 34 38.69587 -4.5906 Almodóvar del Campo Castilla-La Mancha 0.9449 4992 5269 223 8340 20631 48304 605 5.5 -37.2 0 204.0
36 35 38.47308 -3.21349 Villamanrique Castilla-La Mancha 0.9442 4272 7962 0 9213 13333 32224 674 0.6 -61.8 0 219.8
37 36 39.27436 -3.84608 Los Yébenes Castilla-La Mancha 0.9401 7218 4669 282 6441 11067 36293 756 1.6 -48.6 0 126.8
38 37 38.73027 -3.60681 Moral de Calatrava Castilla-La Mancha 0.9391 5780 4295 565 10625 21888 25091 665 0.4 -21.4 0 186.9
39 38 38.01888 -6.15112 Monesterio Extremadura 0.9377 5166 4860 400 6140 5200 35867 699 2.0 -42.0 0 336.5
40 39 37.55272 -5.54487 Carmona Andalucía 0.9369 5813 4801 565 7937 12924 10259 86 0.8 -16.4 0 352.2
41 40 40.00496 -3.2808 Villarrubia de Santiago Castilla-La Mancha 0.9361 6280 4981 100 5470 13336 12778 598 1.3 -43.3 0 58.6
42 41 38.06582 -5.51439 Hornachuelos Andalucía 0.9356 4729 4785 360 12949 500 17101 319 3.7 -46.1 0 301.2
43 42 36.41683 -5.82344 Medina Sidonia Andalucía 0.9333 5126 5188 0 5126 4000 21005 38 0.9 -35.8 0 476.1
44 43 37.1289 -5.34582 Morón de la Frontera Andalucía 0.9249 6307 3590 0 7746 27549 10568 265 1.4 -53.0 0 388.2
45 44 39.61766 -1.49845 Mira Castilla-La Mancha 0.9247 6053 4365 424 5813 8237 62721 862 0.6 -32.0 0 209.8
46 45 38.5549 -3.85046 Calzada de Calatrava Castilla-La Mancha 0.9242 4539 4816 282 6413 15851 35609 530 0.5 -43.8 0 206.2
47 46 39.57463 -6.90807 Alcántara Extremadura 0.9201 4992 5536 360 11795 538 47327 264 1.2 -9.8 0 288.2
48 47 39.60971 -6.00399 Trujillo Extremadura 0.9191 3981 5532 100 9617 17426 34753 320 1.2 -31.5 0 214.8
49 48 39.0247 -6.60132 Montijo Extremadura 0.9187 7632 5215 200 9192 24481 20934 242 0.5 -7.1 0 290.5
50 49 41.40568 -0.3686 Velilla de Ebro Aragón 0.9169 5020 4252 0 6802 18577 50195 249 1.1 -24.5 0 301.0
51 50 41.40387 -1.90091 Villalengua Aragón 0.9157 5028 5797 0 6113 26121 23361 939 1.3 -19.9 0 186.2
52 51 39.7348 -3.07369 Villanueva de Alcardete Castilla-La Mancha 0.9154 5208 5124 0 8683 20208 25941 731 0.4 -5.7 0 93.5
53 52 38.61326 -6.02991 Puebla de la Reina Extremadura 0.9139 5246 3560 412 7184 29044 48662 393 1.2 -32.1 0 280.4
54 53 40.25601 -2.91121 Comunidad de Albalate de Zorita e Illana Castilla-La Mancha 0.9136 4904 4522 100 6741 40231 28313 765 1.7 -24.4 0 70.1
55 54 42.68931 -4.73128 Congosto de Valdavia Castilla y León 0.9134 4838 4827 100 4967 16007 69579 1049 0.8 -40.5 0 267.4
56 55 37.44485 -4.96863 Écija Andalucía 0.9118 7705 4738 0 7002 9481 15469 156 0.6 -14.5 0 344.6
57 56 38.19032 -4.62323 Adamuz Andalucía 0.9117 4883 4110 565 14651 18703 16773 595 1.9 -22.3 0 257.5
58 57 41.67708 -2.96155 Talveila Castilla y León 0.9102 4833 4726 0 5154 8402 12756 1014 0.8 -29.2 0 152.2
59 58 39.94034 -3.08974 Fuente de Pedro Naharro Castilla-La Mancha 0.9096 5124 5099 0 6977 30910 18767 774 0.2 -9.5 0 75.0
60 59 39.94011 -6.74119 Moraleja Extremadura 0.909 6685 3466 424 6800 15065 60360 227 0.6 -47.4 0 263.7
61 60 39.09732 -4.22891 Piedrabuena Castilla-La Mancha 0.9076 7002 3482 565 7202 22830 44201 566 0.8 -27.8 0 152.1