13 Commits
Author SHA1 Message Date
itziarZG 7aa0fb7a89 feat(mapa): añadir capa 'viviendas vacantes estimadas' por municipio
El usuario queria ver claramente dónde hay viviendas vacantes y cuántas.
Hasta ahora solo teníamos el choropleth de consumo_p50, que era
abstracto y los numeros de Airbnb en circulos confundian.

Nueva variable 'viviendas_vacantes_estimadas' en el dataset:
- Viviendas_totales (municipio) * 0.162 (tasa CCAA INE 2021)
- Asume distribucion uniforme del 16,2% (proxy: en realidad varia
  por municipio, mas alta en zonas turisticas)
- Replicada a todas las secciones del mismo municipio

Capa nueva en el mapa con escala de rojos:
  < 100    vacants   (claro)
  100-500
  500-1500
  1500-5000
  > 5000   vacants   (oscuro, Palma)

Total Balears = 105.632 vacantes (proxy)
- Palma: 30.210
- Calvia: 5.912
- Manacor: 4.629
- Inca: 2.570
- Llucmajor: 3.776
- Eivissa: 3.878

i18n: nueva key 'variable_viviendas_vacantes' en ca.json y es.json
2026-07-15 17:36:12 +02:00
itziarZG ffc170d054 feat(analysis): añadir ratio p10/p50 consumo electrico como proxy de vivienda semi-vacia
Origen: usuario pidió comparar demanda invierno vs verano. API REE rota para
geo_limit=baleares (devuelve 400 en todos los endpoints). Alternativa: analizar
los percentiles de consumo electrico del Censo 2021 (tabla 59532) como proxy
de heterogeneidad de uso.

Logica:
- p10 muy bajo en relacion a p50 (ratio <0.3) = hay casas con consumo muy bajo
  (posibles vacantes, segundas residencias estacionales, personas mayores)
- p10/p50 alto (~0.6+) = distribucion mas homogenea = uso residencial estable

Limitaciones documentadas en data/output/vivienda_vacia_analysis.md:
- Es un snapshot del 2011, NO serie temporal
- Ratio NO distingue invierno de verano, solo colas de bajo consumo
- Para invierno vs verano real, hace falta REE funcionando o Govern Balear

Outputs:
- scripts/07_vivienda_vacia_analysis.py: nuevo script de analisis
- data/output/vivienda_vacia_por_distrito.csv: 116 distritos con ratios + Airbnb
- data/output/vivienda_vacia_analysis.md: reporte markdown con top-10, correlacion, etc
- web/public/vivienda_vacia_*: copies para acceso publico
- ratio_p10_p50_consumo: nueva variable en dataset y mapa (color naranja-rojo)
  Invertido: naranja = mucha cola de bajo consumo (potencial vacio), verde = estable
2026-07-15 12:36:27 +02:00
itziarZG a237ad48f1 feat(data+map): añadir INE Censo 2021 (viviendas por municipio + consumo por distrito) y 3 variables nuevas al mapa
Datos:
- 59531.csv: viviendas totales por municipio (62 Balears, total 1.300.622)
- 59532.csv: percentiles consumo eléctrico por distrito (116 Balears)

Pipeline:
- 01_load_sources: nuevos loaders con parsing latin1
- 02_build_dataset: join por CUSEC prefix (5 dig municipio, 7 dig distrito)
- Nuevos campos: viviendas_totales, consumo_p{10,25,50,75,90}_kwh, airbnb_listings_por_1000_viviendas

Mapa:
- 3 variables nuevas (viviendas_totales verde, consumo_p50_kwh rojo, airbnb_per_1000 morado)
- Nueva fill layer 'all' (sin filtro de isla) para variables universales
- Popup ampliado con sección INE
2026-07-15 11:42:45 +02:00
itziarZG 1208342942 chore: untrack docs de fase i fitxers raw duplicats (ja ignorats) 2026-07-15 09:38:37 +02:00
itziarZG 5511265e16 feat(web): afegir pagina /dades amb downloads + llicencia + repo 2026-07-14 13:43:23 +02:00
opencode ba9f353263 docs(plan): cerrar fase 2 y crear handoff para fase 3
- FASE-2-web-mvp.md: documentadas las 8 decisiones tomadas (idioma,
  stack, choropleth mixto, granularidad Eivissa/Formentera, clusters,
  SSR via prerender=false, fix dataset_web.json, bug secundario) y los
  5 problemas encontrados (Node 22 vs 20, TS 7 incompatible, cookie
  via Astro.cookies, output static pre-renderiza, GeoJSON pesado)
- PLAN.md: marcar Fase 2 como completada y anadir nota de iteracion
- HANDOFF-FASE-3.md: nuevo handoff para sesion de fase 3 con
  estructura, paginas funcionales, decisiones tomadas, traps,
  preguntas abiertas
- data/output/.gitkeep: confirmar sentinel
2026-07-14 12:27:42 +02:00
opencode 404fd30ac3 fix(data): regenerar dataset_web.json con sumas correctas a nivel isla
El script 02_build_dataset.py hacia SUM de hut_registros/hut_plazas por
seccion censal, multiplicando los valores de Eivissa (76 secciones) y
Formentera (6 secciones) por el numero de secciones del municipio.

Creado scripts/04_regenerate_web_json.py que:
- Lee el CSV raw de HUT Eivissa y agrega por municipio (total real: 2.364
  registros / 18.184 plazas)
- Lee el JSON raw de IBESTAT Formentera (1.375 / 14.935)
- Para Mallorca/Menorca mantiene SUM por seccion del parquet (correcto,
  granularidad seccion censal)

Bug secundario corregido: Mallorca y Menorca tenian los mismos totales
porque se agregaba el dict combinado. Ahora se agrega por isla individual.

Nuevo scripts/05_export_airbnb_geojson.py genera el GeoJSON de listings
individuales para los clusters del mapa (18.391 puntos, 2.97MB).
2026-07-14 12:27:17 +02:00
itziarZG e270a0a54a feat(fase-1): pipeline completo, dataset.parquet + tiles.pmtiles
- 01_load_sources.py: carga INE, shapefile, Airbnb, HUT, IBESTAT
- 02_build_dataset.py: spatial join, agregacion por isla/granularidad
- 03_generate_tiles.py: tippecanoe -zg a partir de dataset.gpkg
- Outputs: dataset.parquet (41KB), dataset_web.json (1KB),
  tiles.pmtiles (1.5MB), STATS.md
- 18.175 listings Airbnb Mallorca+Menorca, 18.184 plazas HUT Eivissa
- Fallback isla por CMUN para 136 secciones rurales sin datos
- .gitignore: commitea outputs clave (parquet/json/tiles/STATS)
2026-07-14 11:46:01 +02:00
itziarZG fefbaf2c40 chore: no commitear archivos raw grandes 2026-07-14 11:20:24 +02:00
itziarZG 9abba6d7c0 feat(fase-0): anadir HUT Eivissa 2026 + IBESTAT Formentera 2019
- HUT Eivissa 2026: 2.369 registros, 18.184 plazas (CSV limpio desde HTML-as-xls)
- IBESTAT Formentera 2019: 1.375 establecimientos, 14.935 plazas (JSON desde OLE .xls)
- Insight clave del usuario: legal != realidad, la diferencia ES la denuncia
- Cobertura 4/4 islas con calidad desigual documentada en VALIDACION.md
- PLAN.md y FASE-0-setup.md actualizados con el estado real
2026-07-14 11:20:08 +02:00
itziarZG 99ad1f86cd chore: no commitear secciones_balears.gpkg 2026-07-14 10:10:02 +02:00
itziarZG 1e86070998 feat(fase-0): setup entorno, descarga shapefile y listings Airbnb
- Estructura de carpetas creada (data/{raw,processed,output}, web, docs, scripts)
- .gitignore con reglas para archivos grandes
- Entorno Python 3.10 con uv (pandas, geopandas, duckdb, etc.)
- Entorno Node 20 + pnpm 9
- Shapefile INE 2025 (60MB) -> GeoPackage Balears en WGS84 (5.3MB, 674 secciones)
- Inside Airbnb: Mallorca (45.741 listings) y Menorca (8.492 listings)
- Documentacion: ORIGEN.md, VALIDACION.md, PLAN.md, FASE-X.md actualizados

Limitacion detectada: Inside Airbnb no tiene datos para Eivissa ni Formentera.
Pendiente decidir fuente alternativa antes de Fase 1.
2026-07-14 10:09:55 +02:00
itziarZG 53f24de3ce chore: estructura inicial del proyecto 2026-07-14 09:52:12 +02:00