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
This commit is contained in:
2026-07-15 17:36:12 +02:00
parent 05e3d48922
commit 7aa0fb7a89
10 changed files with 47 additions and 23 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Estadisticas descriptivas - Cases Tancades
Generado: 2026-07-15 12:24
Generado: 2026-07-15 17:32
## Cobertura geografica
Binary file not shown.
+22 -22
View File
@@ -1,5 +1,27 @@
{
"resumen_por_isla": [
{
"isla": "Eivissa",
"secciones": 76,
"airbnb_listings": 0,
"airbnb_entire_homes": 0,
"airbnb_revenue_total": 0,
"airbnb_hosts_unicos": 0,
"airbnb_con_licencia": 0,
"hut_registros": 32953,
"hut_plazas": 252243
},
{
"isla": "Formentera",
"secciones": 6,
"airbnb_listings": 0,
"airbnb_entire_homes": 0,
"airbnb_revenue_total": 0,
"airbnb_hosts_unicos": 0,
"airbnb_con_licencia": 0,
"hut_registros": 8250,
"hut_plazas": 89610
},
{
"isla": "Mallorca",
"secciones": 545,
@@ -21,28 +43,6 @@
"airbnb_con_licencia": 3379,
"hut_registros": 0,
"hut_plazas": 0
},
{
"isla": "Eivissa",
"secciones": 76,
"airbnb_listings": 0,
"airbnb_entire_homes": 0,
"airbnb_revenue_total": 0,
"airbnb_hosts_unicos": 0,
"airbnb_con_licencia": 0,
"hut_registros": 2364,
"hut_plazas": 18184
},
{
"isla": "Formentera",
"secciones": 6,
"airbnb_listings": 0,
"airbnb_entire_homes": 0,
"airbnb_revenue_total": 0,
"airbnb_hosts_unicos": 0,
"airbnb_con_licencia": 0,
"hut_registros": 1375,
"hut_plazas": 14935
}
]
}
Binary file not shown.
+4
View File
@@ -300,6 +300,10 @@ def main() -> None:
np.nan,
)
# Estimación de viviendas vacantes por municipio (proxy a la tasa CCAA del 16,2%).
# Sección censal hereda el valor del municipio.
gdf["viviendas_vacantes_estimadas"] = (gdf["viviendas_totales"] * 0.162).round().astype(int)
# Viviendas INE a nivel CCAA (documentado en /metodologia)
gdf["viviendas_vacias_pct_ccaa"] = 16.2
gdf["viviendas_uso_esporadico_pct_ccaa"] = 6.9
+1
View File
@@ -42,6 +42,7 @@ def main() -> None:
"consumo_p75_kwh", "consumo_p90_kwh",
"airbnb_listings_por_1000_viviendas",
"ratio_p10_p50_consumo",
"viviendas_vacantes_estimadas",
"geometry",
]
cols = [c for c in cols if c in gdf.columns]
Binary file not shown.
+15
View File
@@ -19,6 +19,7 @@ const variableOptions: VariableOption[] = [
{ value: "hut_plazas", labelKey: "map.variable_hut_plazas", descKey: "map.variable_hut_plazas_desc", scope: "hut" },
{ value: "hut_registros", labelKey: "map.variable_hut_registros", descKey: "map.variable_hut_registros_desc", scope: "hut" },
{ value: "viviendas_totales", labelKey: "map.variable_viviendas_totales", descKey: "map.variable_viviendas_totales_desc", scope: "all" },
{ value: "viviendas_vacantes", labelKey: "map.variable_viviendas_vacantes", descKey: "map.variable_viviendas_vacantes_desc", scope: "all" },
{ value: "consumo_p10_muy_bajo", labelKey: "map.variable_consumo_p10_muy_bajo", descKey: "map.variable_consumo_p10_muy_bajo_desc", scope: "all" },
{ value: "consumo_p10_bajo", labelKey: "map.variable_consumo_p10_bajo", descKey: "map.variable_consumo_p10_bajo_desc", scope: "all" },
{ value: "consumo_p50_medio", labelKey: "map.variable_consumo_p50_medio", descKey: "map.variable_consumo_p50_medio_desc", scope: "all" },
@@ -124,6 +125,7 @@ const popupTitleTmpl = t(lang, "map.popup_title");
viviendas_totales: lang === "es" ? "Viviendas totales" : "Habitatges totals",
consumo_p50: lang === "es" ? "Mediana consumo kWh" : "Mediana consum kWh",
consumo_p10_muy_bajo: lang === "es" ? "Cola bajo consumo (p10)" : "Cua de baix consum (p10)",
viviendas_vacantes_label: lang === "es" ? "Viv. vacantes" : "Hab. vacants",
consumo_p10_bajo: lang === "es" ? "Cola consumo bajo (p10)" : "Cua de consum baix (p10)",
consumo_p50_medio: lang === "es" ? "Consumo medio (p50)" : "Consum mitjà (p50)",
consumo_p90_alto: lang === "es" ? "Cola consumo alto (p90)" : "Cua de consum alt (p90)",
@@ -298,6 +300,19 @@ const popupTitleTmpl = t(lang, "map.popup_title");
desc: DESC.viviendas_totales,
appliesTo: T.legend_islands_all_mun,
},
viviendas_vacantes: {
scope: "all",
field: "viviendas_vacantes_estimadas",
colorExpr: [
"step", ["coalesce", ["get", "viviendas_vacantes_estimadas"], 0],
"#fee2e2", 100, "#fca5a5", 500, "#ef4444", 1500, "#b91c1c", 5000, "#7f1d1d",
],
stops: [0, 100, 500, 1500, 5000],
colors: ["#fee2e2", "#fca5a5", "#ef4444", "#b91c1c", "#7f1d1d", "#7f1d1d"],
label: T.viviendas_vacantes,
desc: DESC.viviendas_vacantes,
appliesTo: T.legend_islands_all_mun,
},
consumo_p10_muy_bajo: {
scope: "all",
field: "consumo_p10_kwh",
+2
View File
@@ -83,6 +83,8 @@
"variable_hut_registros_desc": "Nombre de registres HUT actius (municipi)",
"variable_viviendas_totales": "Habitatges totals (INE)",
"variable_viviendas_totales_desc": "Total d'habitatges per municipi (Cens 2021, replicat a totes les seccions del municipi)",
"variable_viviendas_vacantes": "Habitatges vacants (estimació per municipi)",
"variable_viviendas_vacantes_desc": "Estimació del nombre d'habitatges vacants per municipi, calculada com el 16,2% del total (taxa CCAA de l'INE, Cens 2021). És un proxy: la taxa real varia per municipi (més alta a zones turístiques). Total Balears: 105.632 vacants.",
"variable_consumo_p50": "Mediana consum elèctric (kWh)",
"variable_consumo_p50_desc": "Percentil 50 de consum elèctric anual per districte (Cens 2021). Mediana del que consumeix una llar al districte.",
"variable_consumo_p10_muy_bajo": "Cola de baix consum (p10)",
+2
View File
@@ -83,6 +83,8 @@
"variable_hut_registros_desc": "Número de registros HUT activos (municipio)",
"variable_viviendas_totales": "Viviendas totales (INE)",
"variable_viviendas_totales_desc": "Total de viviendas por municipio (Censo 2021, replicado en todas las secciones del municipio)",
"variable_viviendas_vacantes": "Viviendas vacantes (estimación por municipio)",
"variable_viviendas_vacantes_desc": "Estimación del número de viviendas vacantes por municipio, calculada como el 16,2% del total (tasa CCAA del INE, Censo 2021). Es un proxy: la tasa real varía por municipio (más alta en zonas turísticas). Total Baleares: 105.632 vacantes.",
"variable_consumo_p50": "Mediana consumo eléctrico (kWh)",
"variable_consumo_p50_desc": "Percentil 50 de consumo eléctrico anual por distrito (Censo 2021). Mediana de lo que consume un hogar en el distrito.",
"variable_consumo_p10_muy_bajo": "Cola de bajo consumo (p10)",