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:
@@ -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.
@@ -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.
@@ -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
|
||||
|
||||
@@ -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.
@@ -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",
|
||||
|
||||
@@ -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)",
|
||||
|
||||
@@ -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)",
|
||||
|
||||
Reference in New Issue
Block a user