

{"id":8993,"date":"2024-02-09T12:50:38","date_gmt":"2024-02-09T12:50:38","guid":{"rendered":"https:\/\/transparencia.galapagar.es\/?page_id=8993"},"modified":"2026-04-30T10:49:37","modified_gmt":"2026-04-30T10:49:37","slug":"servicios-y-procedimientos-v2","status":"publish","type":"page","link":"https:\/\/transparencia.galapagar.es\/?page_id=8993","title":{"rendered":"OpenData"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8993\" class=\"elementor elementor-8993\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-cbe49c3 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"cbe49c3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2d3b9e5\" data-id=\"2d3b9e5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bc721ba elementor-widget elementor-widget-breadcrumbs\" data-id=\"bc721ba\" data-element_type=\"widget\" data-widget_type=\"breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/transparencia.galapagar.es\/wp-content\/plugins\/elementor-pro\/assets\/css\/widget-theme-elements.min.css\"><p id=\"breadcrumbs\"><span><span><a href=\"https:\/\/transparencia.galapagar.es\/\">Inicio<\/a><\/span><\/span><\/p>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c684647 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c684647\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1cdee67 borde-degradado\" data-id=\"1cdee67\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d359321 elementor-widget elementor-widget-heading\" data-id=\"d359321\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 13-03-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Datos Abiertos - OpenData<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ee97f7d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ee97f7d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6e18936\" data-id=\"6e18936\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ca33312 elementor-widget elementor-widget-html\" data-id=\"ca33312\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- ============================================================\n     VISOR OPENDATA \u00b7 AYUNTAMIENTO DE GALAPAGAR\n     Para pegar en widget \"HTML\" de Elementor\n     ============================================================ -->\n\n<!-- Fuentes (solo se cargan una vez aunque el widget se duplique) -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Serif+Display:ital@0;1&family=DM+Mono:wght@400;500&family=Nunito:wght@400;600;700;800&display=swap\" rel=\"stylesheet\">\n\n<!-- Chart.js (carga condicional para no duplicarla si ya existe) -->\n<script>\nif (typeof Chart === 'undefined') {\n  document.write('<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\\\/script>');\n}\n<\/script>\n\n<!-- ===== ESTILOS SCOPED bajo .odg-visor ===== -->\n<style>\n\/* Variables y reset solo dentro del widget *\/\n.odg-visor {\n  --odg-verde: #005A3A;\n  --odg-verde-claro: #e8f5e9;\n  --odg-oro: #c9a227;\n  --odg-oro-claro: #fff8e1;\n  --odg-gris-oscuro: #1a2330;\n  --odg-gris-medio: #4a5568;\n  --odg-gris-claro: #f4f6f9;\n  --odg-rojo: #c62828;\n  --odg-azul: #1565c0;\n  --odg-sombra: 0 4px 24px rgba(0,90,58,0.10);\n  --odg-radio: 14px;\n  font-family: 'Nunito', sans-serif;\n  color: var(--odg-gris-oscuro);\n  background: var(--odg-gris-claro);\n  line-height: 1.5;\n  width: 100%;\n}\n\n\/* Box-sizing scoped *\/\n.odg-visor *, .odg-visor *::before, .odg-visor *::after {\n  box-sizing: border-box;\n}\n\n\/* ===== NAVEGACI\u00d3N ===== *\/\n.odg-nav {\n  background: var(--odg-verde);\n  border-radius: var(--odg-radio) var(--odg-radio) 0 0;\n  overflow: hidden;\n}\n\n.odg-nav-inner {\n  display: flex;\n  gap: 2px;\n  overflow-x: auto;\n  padding: 0 8px;\n  scrollbar-width: none;\n}\n.odg-nav-inner::-webkit-scrollbar { display: none; }\n\n.odg-nav-btn {\n  background: none !important;\n  border: none !important;\n  border-bottom: 3px solid transparent !important;\n  color: rgba(255,255,255,0.75) !important;\n  padding: 12px 16px !important;\n  font-family: 'Nunito', sans-serif !important;\n  font-size: 0.82rem !important;\n  font-weight: 700 !important;\n  cursor: pointer !important;\n  transition: all 0.2s !important;\n  white-space: nowrap !important;\n  letter-spacing: 0.02em !important;\n  box-shadow: none !important;\n  margin: 0 !important;\n}\n.odg-nav-btn:hover { color: white !important; background: rgba(255,255,255,0.08) !important; }\n.odg-nav-btn.odg-active { color: var(--odg-oro) !important; border-bottom-color: var(--odg-oro) !important; }\n\n\/* ===== SECCIONES ===== *\/\n.odg-section { display: none; }\n.odg-section.odg-active { display: block; }\n\n.odg-page {\n  padding: 28px 20px 48px;\n}\n\n\/* ===== HERO ===== *\/\n.odg-hero {\n  background: linear-gradient(135deg, var(--odg-verde) 0%, #003d27 100%);\n  color: white;\n  border-radius: var(--odg-radio);\n  padding: 36px 40px;\n  margin-bottom: 28px;\n  position: relative;\n  overflow: hidden;\n}\n.odg-hero::before {\n  content: '';\n  position: absolute;\n  right: -60px; top: -60px;\n  width: 280px; height: 280px;\n  background: radial-gradient(circle, rgba(201,162,39,0.18) 0%, transparent 70%);\n  border-radius: 50%;\n  pointer-events: none;\n}\n.odg-hero-label {\n  font-family: 'DM Mono', monospace;\n  font-size: 0.7rem;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--odg-oro);\n  margin-bottom: 8px;\n}\n.odg-hero h2 {\n  font-family: 'DM Serif Display', serif !important;\n  font-size: 2rem !important;\n  line-height: 1.15 !important;\n  margin: 0 0 8px !important;\n  color: white !important;\n}\n.odg-hero p {\n  opacity: 0.8;\n  font-size: 0.9rem;\n  max-width: 540px;\n  line-height: 1.6;\n  margin: 0 !important;\n}\n.odg-hero-meta {\n  margin-top: 18px;\n  display: flex;\n  gap: 14px;\n  flex-wrap: wrap;\n}\n.odg-hero-meta-item {\n  background: rgba(255,255,255,0.1);\n  border-radius: 8px;\n  padding: 7px 14px;\n  font-size: 0.8rem;\n}\n.odg-hero-meta-item strong {\n  display: block;\n  color: var(--odg-oro);\n  font-size: 0.68rem;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  margin-bottom: 2px;\n}\n\n\/* ===== T\u00cdTULO DE SECCI\u00d3N ===== *\/\n.odg-section-title {\n  font-family: 'DM Serif Display', serif !important;\n  font-size: 1.4rem !important;\n  color: var(--odg-verde) !important;\n  margin: 0 0 18px !important;\n  padding-bottom: 10px !important;\n  border-bottom: 2px solid var(--odg-verde-claro) !important;\n  display: flex !important;\n  align-items: center !important;\n  gap: 10px !important;\n}\n\n\/* ===== KPI GRID ===== *\/\n.odg-kpi-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n  gap: 14px;\n  margin-bottom: 28px;\n}\n.odg-kpi-card {\n  background: white;\n  border-radius: var(--odg-radio);\n  padding: 20px 22px;\n  box-shadow: var(--odg-sombra);\n  border-left: 5px solid var(--odg-verde);\n  transition: transform 0.2s, box-shadow 0.2s;\n  position: relative;\n  overflow: hidden;\n}\n.odg-kpi-card::after {\n  content: attr(data-icon);\n  position: absolute;\n  right: 14px; top: 12px;\n  font-size: 1.7rem;\n  opacity: 0.1;\n}\n.odg-kpi-card:hover { transform: translateY(-3px); box-shadow: 0 10px 28px rgba(0,90,58,0.15); }\n.odg-kpi-card.odg-gold { border-left-color: var(--odg-oro); }\n.odg-kpi-card.odg-red  { border-left-color: var(--odg-rojo); }\n.odg-kpi-card.odg-blue { border-left-color: var(--odg-azul); }\n.odg-kpi-label {\n  font-size: 0.72rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--odg-gris-medio);\n  margin-bottom: 7px;\n}\n.odg-kpi-value {\n  font-family: 'DM Mono', monospace;\n  font-size: 1.5rem;\n  font-weight: 500;\n  color: var(--odg-gris-oscuro);\n  line-height: 1;\n  margin-bottom: 5px;\n}\n.odg-kpi-sub { font-size: 0.74rem; color: var(--odg-gris-medio); }\n\n\/* ===== CHARTS GRID ===== *\/\n.odg-charts-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n  margin-bottom: 28px;\n}\n@media (max-width: 768px) {\n  .odg-charts-grid { grid-template-columns: 1fr; }\n  .odg-hero { padding: 24px 20px; }\n  .odg-hero h2 { font-size: 1.5rem !important; }\n}\n.odg-chart-card {\n  background: white;\n  border-radius: var(--odg-radio);\n  padding: 24px;\n  box-shadow: var(--odg-sombra);\n}\n.odg-chart-card h3 {\n  font-family: 'DM Serif Display', serif !important;\n  font-size: 1.05rem !important;\n  color: var(--odg-verde) !important;\n  margin: 0 0 4px !important;\n}\n.odg-chart-sub {\n  font-size: 0.76rem;\n  color: var(--odg-gris-medio);\n  margin-bottom: 18px;\n}\n.odg-chart-wrap { position: relative; height: 260px; }\n\n\/* ===== TABLES ===== *\/\n.odg-table-card {\n  background: white;\n  border-radius: var(--odg-radio);\n  padding: 24px;\n  box-shadow: var(--odg-sombra);\n  margin-bottom: 20px;\n  overflow-x: auto;\n}\n.odg-table-card h3 {\n  font-family: 'DM Serif Display', serif !important;\n  font-size: 1.1rem !important;\n  color: var(--odg-verde) !important;\n  margin: 0 0 4px !important;\n}\n.odg-table-sub { font-size: 0.76rem; color: var(--odg-gris-medio); margin-bottom: 18px; }\n\n.odg-visor table {\n  width: 100% !important;\n  border-collapse: collapse !important;\n  font-size: 0.85rem !important;\n  margin: 0 !important;\n}\n.odg-visor thead th {\n  background: var(--odg-verde) !important;\n  color: white !important;\n  padding: 11px 14px !important;\n  text-align: left !important;\n  font-size: 0.72rem !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.05em !important;\n  text-transform: uppercase !important;\n  border: none !important;\n}\n.odg-visor thead th:first-child { border-radius: 8px 0 0 0 !important; }\n.odg-visor thead th:last-child  { border-radius: 0 8px 0 0 !important; }\n.odg-visor tbody tr { border-bottom: 1px solid #f0f2f5 !important; transition: background 0.15s; }\n.odg-visor tbody tr:hover { background: var(--odg-verde-claro) !important; }\n.odg-visor tbody td {\n  padding: 11px 14px !important;\n  color: var(--odg-gris-oscuro) !important;\n  border: none !important;\n  vertical-align: middle !important;\n}\n.odg-num { font-family: 'DM Mono', monospace !important; text-align: right !important; }\n.odg-pct { font-family: 'DM Mono', monospace !important; text-align: right !important; color: var(--odg-gris-medio) !important; }\n\n.odg-bar-mini {\n  height: 5px;\n  background: var(--odg-verde-claro);\n  border-radius: 3px;\n  margin-top: 5px;\n  overflow: hidden;\n}\n.odg-bar-fill { height: 100%; background: var(--odg-verde); border-radius: 3px; }\n.odg-bar-fill.odg-gold { background: var(--odg-oro); }\n.odg-bar-fill.odg-red  { background: var(--odg-rojo); }\n\n\/* ===== DATASETS GRID ===== *\/\n.odg-datasets-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n  gap: 18px;\n  margin-bottom: 28px;\n}\n.odg-dataset-card {\n  background: white;\n  border-radius: var(--odg-radio);\n  padding: 22px;\n  box-shadow: var(--odg-sombra);\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  border-top: 4px solid var(--odg-verde);\n  transition: transform 0.2s, box-shadow 0.2s;\n}\n.odg-dataset-card:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(0,90,58,0.14); }\n.odg-dataset-card.odg-gold { border-top-color: var(--odg-oro); }\n.odg-dataset-card.odg-blue { border-top-color: var(--odg-azul); }\n.odg-dataset-icon { font-size: 1.8rem; line-height: 1; }\n.odg-dataset-name {\n  font-family: 'DM Serif Display', serif;\n  font-size: 1.05rem;\n  color: var(--odg-gris-oscuro);\n  margin: 0;\n  line-height: 1.3;\n}\n.odg-dataset-desc {\n  font-size: 0.82rem;\n  color: var(--odg-gris-medio);\n  line-height: 1.55;\n  flex: 1;\n  margin: 0;\n}\n.odg-dataset-meta { display: flex; gap: 6px; flex-wrap: wrap; }\n.odg-tag {\n  background: var(--odg-verde-claro);\n  color: var(--odg-verde);\n  padding: 3px 9px;\n  border-radius: 20px;\n  font-size: 0.7rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  display: inline-block;\n}\n.odg-tag.odg-gold { background: var(--odg-oro-claro); color: #7a5b00; }\n.odg-tag.odg-blue { background: #e3f2fd; color: var(--odg-azul); }\n\n.odg-dataset-link {\n  display: inline-flex !important;\n  align-items: center !important;\n  gap: 6px !important;\n  background: var(--odg-verde) !important;\n  color: white !important;\n  padding: 8px 16px !important;\n  border-radius: 8px !important;\n  text-decoration: none !important;\n  font-size: 0.78rem !important;\n  font-weight: 700 !important;\n  transition: background 0.2s !important;\n  border: none !important;\n  cursor: pointer !important;\n  width: fit-content;\n}\n.odg-dataset-link:hover { background: #003d27 !important; color: white !important; }\n.odg-dataset-link.odg-gold { background: var(--odg-oro) !important; }\n.odg-dataset-link.odg-gold:hover { background: #a07a10 !important; }\n.odg-dataset-link.odg-blue { background: var(--odg-azul) !important; }\n.odg-dataset-link.odg-blue:hover { background: #0d47a1 !important; }\n\n\/* ===== PUBLICIDAD ===== *\/\n.odg-pub-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n  gap: 12px;\n  margin-bottom: 24px;\n}\n.odg-pub-card {\n  background: white;\n  border-radius: 10px;\n  padding: 18px;\n  box-shadow: var(--odg-sombra);\n  text-align: center;\n  position: relative;\n  overflow: hidden;\n}\n.odg-pub-card::before {\n  content: '';\n  position: absolute;\n  bottom: 0; left: 0; right: 0;\n  height: var(--odg-h);\n  background: linear-gradient(to top, var(--odg-verde-claro), transparent);\n  pointer-events: none;\n}\n.odg-pub-year { font-family: 'DM Mono', monospace; font-size: 0.82rem; color: var(--odg-gris-medio); margin-bottom: 6px; }\n.odg-pub-val  { font-family: 'DM Mono', monospace; font-size: 1.15rem; color: var(--odg-verde); font-weight: 500; }\n\n\/* ===== POBLACI\u00d3N CARDS ===== *\/\n.odg-pop-years {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));\n  gap: 10px;\n  margin-bottom: 24px;\n}\n.odg-pop-card {\n  background: white;\n  border-radius: 10px;\n  padding: 14px;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n  text-align: center;\n  transition: transform 0.2s;\n}\n.odg-pop-card:hover { transform: translateY(-2px); }\n.odg-pop-year { font-family: 'DM Mono', monospace; font-size: 0.74rem; color: var(--odg-gris-medio); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 5px; }\n.odg-pop-total { font-family: 'DM Mono', monospace; font-size: 1.25rem; font-weight: 500; color: var(--odg-verde); }\n.odg-pop-genero { font-size: 0.7rem; color: var(--odg-gris-medio); margin-top: 4px; }\n\n\/* ===== SEARCH ===== *\/\n.odg-search-bar { display: flex; gap: 8px; margin-bottom: 18px; align-items: center; flex-wrap: wrap; }\n.odg-search-input {\n  flex: 1;\n  min-width: 180px;\n  padding: 9px 14px !important;\n  border: 2px solid #e2e8f0 !important;\n  border-radius: 8px !important;\n  font-family: 'Nunito', sans-serif !important;\n  font-size: 0.87rem !important;\n  background: white !important;\n  outline: none !important;\n  color: var(--odg-gris-oscuro) !important;\n  box-shadow: none !important;\n  transition: border-color 0.2s !important;\n}\n.odg-search-input:focus { border-color: var(--odg-verde) !important; }\n.odg-select-filter {\n  padding: 9px 12px !important;\n  border: 2px solid #e2e8f0 !important;\n  border-radius: 8px !important;\n  font-family: 'Nunito', sans-serif !important;\n  font-size: 0.83rem !important;\n  background: white !important;\n  color: var(--odg-gris-oscuro) !important;\n  cursor: pointer !important;\n  box-shadow: none !important;\n}\n\n\/* ===== INFO STRIP ===== *\/\n.odg-info-strip {\n  background: var(--odg-verde-claro);\n  border-left: 4px solid var(--odg-verde);\n  border-radius: 8px;\n  padding: 10px 16px;\n  font-size: 0.81rem;\n  color: var(--odg-verde);\n  margin-bottom: 20px;\n}\n\n\/* ===== ANIMACI\u00d3N ===== *\/\n@keyframes odgFadeUp {\n  from { opacity: 0; transform: translateY(14px); }\n  to   { opacity: 1; transform: translateY(0); }\n}\n.odg-section.odg-active .odg-page > * { animation: odgFadeUp 0.35s ease both; }\n.odg-section.odg-active .odg-page > *:nth-child(2) { animation-delay: 0.05s; }\n.odg-section.odg-active .odg-page > *:nth-child(3) { animation-delay: 0.10s; }\n.odg-section.odg-active .odg-page > *:nth-child(4) { animation-delay: 0.15s; }\n.odg-section.odg-active .odg-page > *:nth-child(5) { animation-delay: 0.20s; }\n<\/style>\n\n<!-- ===== HTML DEL WIDGET ===== -->\n<div class=\"odg-visor\">\n\n  <!-- NAV -->\n  <div class=\"odg-nav\">\n    <div class=\"odg-nav-inner\">\n      <button class=\"odg-nav-btn odg-active\" data-odg-target=\"odg-datasets\">\ud83d\udcc2 Datos Abiertos<\/button>\n      <button class=\"odg-nav-btn\" data-odg-target=\"odg-presupuesto2026\">Presupuesto 2026<\/button>\n      <button class=\"odg-nav-btn\" data-odg-target=\"odg-desglose\">Desglose T\u00e9cnico<\/button>\n      <button class=\"odg-nav-btn\" data-odg-target=\"odg-publicidad\">Publicidad<\/button>\n      <button class=\"odg-nav-btn\" data-odg-target=\"odg-poblacion\">Poblaci\u00f3n<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- ===== DATASETS (inicio) ===== -->\n  <div id=\"odg-datasets\" class=\"odg-section odg-active\">\n    <div class=\"odg-page\">\n      <div class=\"odg-info-strip\">\n        \ud83d\udcc2 Datos abiertos publicados por el Ayuntamiento de Galapagar. Accede a los datasets originales, visores y recursos estad\u00edsticos.\n      <\/div>\n      <div class=\"odg-datasets-grid\">\n\n        <div class=\"odg-dataset-card\">\n          <div class=\"odg-dataset-icon\">\ud83d\udcb9<\/div>\n          <div class=\"odg-dataset-name\">Presupuesto 2025 \u2014 OpenData CSV<\/div>\n          <div class=\"odg-dataset-desc\">Aplicaciones presupuestarias del ejercicio 2025 con clasificaci\u00f3n por \u00e1rea, pol\u00edtica de gasto, programa y clasificaci\u00f3n econ\u00f3mica. Formato CSV estructurado.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag\">CSV<\/span>\n            <span class=\"odg-tag\">Econom\u00eda<\/span>\n            <span class=\"odg-tag\">2025<\/span>\n          <\/div>\n          <a class=\"odg-dataset-link\" href=\"http:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2025\/01\/Presupuesto2025OpenData.csv\" target=\"_blank\">\u2b07\ufe0f Descargar CSV<\/a>\n        <\/div>\n\n        <div class=\"odg-dataset-card odg-gold\">\n          <div class=\"odg-dataset-icon\">\ud83d\uddfa\ufe0f<\/div>\n          <div class=\"odg-dataset-name\">Visor SIT \u2014 Planeamiento Urban\u00edstico CM<\/div>\n          <div class=\"odg-dataset-desc\">Acceso al Sistema de Informaci\u00f3n Territorial de la Comunidad de Madrid. Permite consultar el planeamiento urban\u00edstico del municipio de Galapagar.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag odg-gold\">Visor<\/span>\n            <span class=\"odg-tag odg-gold\">Urbanismo<\/span>\n            <span class=\"odg-tag odg-gold\">GIS<\/span>\n          <\/div>\n          <a class=\"odg-dataset-link odg-gold\" href=\"https:\/\/idem.comunidad.madrid\/cartografia\/sitcm\/html\/visor.htm\" target=\"_blank\">\ud83d\uddfa\ufe0f Abrir Visor<\/a>\n        <\/div>\n\n        <div class=\"odg-dataset-card\">\n          <div class=\"odg-dataset-icon\">\ud83d\udc65<\/div>\n          <div class=\"odg-dataset-name\">Datos de Poblaci\u00f3n \u2014 Nomencl\u00e1tor INE<\/div>\n          <div class=\"odg-dataset-desc\">Padr\u00f3n Municipal Continuo por unidad poblacional. Incluye evoluci\u00f3n hist\u00f3rica de la poblaci\u00f3n total, hombres y mujeres desde el a\u00f1o 2000.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag\">CSV<\/span>\n            <span class=\"odg-tag\">Poblaci\u00f3n<\/span>\n            <span class=\"odg-tag\">INE<\/span>\n          <\/div>\n          <a class=\"odg-dataset-link\" href=\"http:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2025\/03\/nomenclator479098705.csv\" target=\"_blank\">\u2b07\ufe0f Descargar CSV<\/a>\n        <\/div>\n\n        <div class=\"odg-dataset-card odg-blue\">\n          <div class=\"odg-dataset-icon\">\ud83d\udcca<\/div>\n          <div class=\"odg-dataset-name\">Datos Estad\u00edsticos del Municipio<\/div>\n          <div class=\"odg-dataset-desc\">Ficha estad\u00edstica del municipio de Galapagar. Indicadores socioecon\u00f3micos, demogr\u00e1ficos y comparativos respecto a la Comunidad de Madrid.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag odg-blue\">PDF<\/span>\n            <span class=\"odg-tag odg-blue\">Estad\u00edsticas<\/span>\n            <span class=\"odg-tag odg-blue\">2025<\/span>\n          <\/div>\n          <a class=\"odg-dataset-link odg-blue\" href=\"http:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2025\/03\/ficha_yAO7y.pdf\" target=\"_blank\">\ud83d\udcc4 Ver PDF<\/a>\n        <\/div>\n\n        <div class=\"odg-dataset-card odg-gold\">\n          <div class=\"odg-dataset-icon\">\ud83c\udf24\ufe0f<\/div>\n          <div class=\"odg-dataset-name\">Datos Meteorol\u00f3gicos CabinPaq<\/div>\n          <div class=\"odg-dataset-desc\">Estaci\u00f3n meteorol\u00f3gica local de Galapagar. Datos en tiempo real de temperatura, humedad, precipitaciones y condiciones atmosf\u00e9ricas del municipio.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag odg-gold\">Tiempo real<\/span>\n            <span class=\"odg-tag odg-gold\">Meteorolog\u00eda<\/span>\n          <\/div>\n          <a class=\"odg-dataset-link odg-gold\" href=\"https:\/\/kokesh22.github.io\/cabinpacs_final\/index.html\" target=\"_blank\">\ud83c\udf26\ufe0f Ver datos<\/a>\n        <\/div>\n\n        <div class=\"odg-dataset-card\">\n          <div class=\"odg-dataset-icon\">\ud83d\udcd1<\/div>\n          <div class=\"odg-dataset-name\">Presupuesto 2026 \u2014 Dataset Generado<\/div>\n          <div class=\"odg-dataset-desc\">CSV generado a partir de los datos del portal de transparencia para el ejercicio 2026. Incluye KPIs, distribuci\u00f3n de gastos, ingresos y publicidad.<\/div>\n          <div class=\"odg-dataset-meta\">\n            <span class=\"odg-tag\">CSV<\/span>\n            <span class=\"odg-tag\">Econom\u00eda<\/span>\n            <span class=\"odg-tag\">2026<\/span>\n          <\/div>\n          <button class=\"odg-dataset-link\" onclick=\"odgDownloadCSV()\">\u2b07\ufe0f Descargar CSV 2026<\/button>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== PRESUPUESTO 2026 ===== -->\n  <div id=\"odg-presupuesto2026\" class=\"odg-section\">\n    <div class=\"odg-page\">\n      <div class=\"odg-hero\">\n        <div class=\"odg-hero-label\">\ud83d\udcca Datos e informaci\u00f3n presupuestaria<\/div>\n        <h2>Presupuesto para Vecinos 2026<\/h2>\n        <p>Conoce c\u00f3mo se gestionan los recursos p\u00fablicos del municipio de Galapagar. Datos extra\u00eddos del presupuesto oficial aprobado para el ejercicio 2026.<\/p>\n        <div class=\"odg-hero-meta\">\n          <div class=\"odg-hero-meta-item\"><strong>Ejercicio<\/strong>2026<\/div>\n          <div class=\"odg-hero-meta-item\"><strong>Poblaci\u00f3n ref.<\/strong>37.500 hab.<\/div>\n          <div class=\"odg-hero-meta-item\"><strong>Fuente<\/strong>Ayto. Galapagar<\/div>\n          <div class=\"odg-hero-meta-item\"><strong>Licencia<\/strong>Open Data<\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"odg-section-title\"><span>\ud83d\udcb0<\/span> Indicadores Clave<\/div>\n      <div class=\"odg-kpi-grid\">\n        <div class=\"odg-kpi-card\" data-icon=\"\ud83d\udcb6\"><div class=\"odg-kpi-label\">Presupuesto Total<\/div><div class=\"odg-kpi-value\">42.002.171 \u20ac<\/div><div class=\"odg-kpi-sub\">Ejercicio 2026<\/div><\/div>\n        <div class=\"odg-kpi-card odg-gold\" data-icon=\"\ud83c\udfd7\ufe0f\"><div class=\"odg-kpi-label\">Inversi\u00f3n en el Municipio<\/div><div class=\"odg-kpi-value\">9.016.285 \u20ac<\/div><div class=\"odg-kpi-sub\">21,5% del presupuesto total<\/div><\/div>\n        <div class=\"odg-kpi-card\" data-icon=\"\ud83c\udf93\"><div class=\"odg-kpi-label\">Ayudas para Becas y Estudio<\/div><div class=\"odg-kpi-value\">280.000 \u20ac<\/div><div class=\"odg-kpi-sub\">Becas educativas<\/div><\/div>\n        <div class=\"odg-kpi-card odg-blue\" data-icon=\"\ud83d\udcc8\"><div class=\"odg-kpi-label\">Ahorro Bruto<\/div><div class=\"odg-kpi-value\">3.274.147 \u20ac<\/div><div class=\"odg-kpi-sub\">Capacidad de financiaci\u00f3n<\/div><\/div>\n        <div class=\"odg-kpi-card odg-gold\" data-icon=\"\ud83d\udc64\"><div class=\"odg-kpi-label\">Gasto por Habitante<\/div><div class=\"odg-kpi-value\">1.120,06 \u20ac<\/div><div class=\"odg-kpi-sub\">Total \/ 37.500 hab.<\/div><\/div>\n        <div class=\"odg-kpi-card\" data-icon=\"\ud83c\udfd8\ufe0f\"><div class=\"odg-kpi-label\">Inversi\u00f3n por Habitante<\/div><div class=\"odg-kpi-value\">240,43 \u20ac<\/div><div class=\"odg-kpi-sub\">Inversi\u00f3n \/ 37.500 hab.<\/div><\/div>\n        <div class=\"odg-kpi-card odg-red\" data-icon=\"\ud83e\udd1d\"><div class=\"odg-kpi-label\">Gasto Serv. Sociales\/hab.<\/div><div class=\"odg-kpi-value\">96,58 \u20ac<\/div><div class=\"odg-kpi-sub\">Por habitante al a\u00f1o<\/div><\/div>\n        <div class=\"odg-kpi-card\" data-icon=\"\ud83c\udfd9\ufe0f\"><div class=\"odg-kpi-label\">Gasto Serv. P\u00fablicos\/hab.<\/div><div class=\"odg-kpi-value\">584,22 \u20ac<\/div><div class=\"odg-kpi-sub\">Por habitante al a\u00f1o<\/div><\/div>\n      <\/div>\n\n      <div class=\"odg-charts-grid\">\n        <div class=\"odg-chart-card\">\n          <h3>\u00bfEn qu\u00e9 se gasta el presupuesto?<\/h3>\n          <div class=\"odg-chart-sub\">Distribuci\u00f3n de gastos por \u00e1rea \u2014 Ejercicio 2026<\/div>\n          <div class=\"odg-chart-wrap\"><canvas id=\"odg-gastosChart\"><\/canvas><\/div>\n        <\/div>\n        <div class=\"odg-chart-card\">\n          <h3>\u00bfDe d\u00f3nde vienen los ingresos?<\/h3>\n          <div class=\"odg-chart-sub\">Origen de los ingresos municipales \u2014 Ejercicio 2026<\/div>\n          <div class=\"odg-chart-wrap\"><canvas id=\"odg-ingresosChart\"><\/canvas><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"odg-table-card\">\n        <h3>Gastos por \u00c1rea \u2014 Detalle<\/h3>\n        <div class=\"odg-table-sub\">Importe y porcentaje de cada \u00e1rea de gasto sobre el presupuesto total<\/div>\n        <table><thead><tr><th>\u00c1rea de Gasto<\/th><th>Descripci\u00f3n<\/th><th style=\"text-align:right\">Importe<\/th><th style=\"text-align:right\">%<\/th><\/tr><\/thead><tbody id=\"odg-tabla-gastos-area\"><\/tbody><\/table>\n      <\/div>\n\n      <div class=\"odg-table-card\">\n        <h3>Ingresos por Cap\u00edtulo \u2014 Detalle<\/h3>\n        <div class=\"odg-table-sub\">Clasificaci\u00f3n de ingresos por naturaleza econ\u00f3mica<\/div>\n        <table><thead><tr><th>Cap\u00edtulo de Ingreso<\/th><th style=\"text-align:right\">Importe<\/th><th style=\"text-align:right\">%<\/th><\/tr><\/thead><tbody id=\"odg-tabla-ingresos-cap\"><\/tbody><\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== DESGLOSE T\u00c9CNICO ===== -->\n  <div id=\"odg-desglose\" class=\"odg-section\">\n    <div class=\"odg-page\">\n      <div class=\"odg-section-title\"><span>\ud83d\udccb<\/span> Desglose T\u00e9cnico por Cap\u00edtulos<\/div>\n      <div class=\"odg-info-strip\">\u2139\ufe0f Clasificaci\u00f3n presupuestaria por cap\u00edtulos econ\u00f3micos del Ayuntamiento de Galapagar \u2014 Ejercicio 2026.<\/div>\n\n      <div class=\"odg-charts-grid\">\n        <div class=\"odg-chart-card\">\n          <h3>Ingresos por Cap\u00edtulo (t\u00e9cnico)<\/h3>\n          <div class=\"odg-chart-sub\">9 cap\u00edtulos \u2014 Total: 42.002.171 \u20ac<\/div>\n          <div class=\"odg-chart-wrap\"><canvas id=\"odg-ingTecnicoChart\"><\/canvas><\/div>\n        <\/div>\n        <div class=\"odg-chart-card\">\n          <h3>Gastos por Cap\u00edtulo (t\u00e9cnico)<\/h3>\n          <div class=\"odg-chart-sub\">9 cap\u00edtulos \u2014 Total: 42.002.171 \u20ac<\/div>\n          <div class=\"odg-chart-wrap\"><canvas id=\"odg-gasTecnicoChart\"><\/canvas><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"odg-table-card\">\n        <h3>Ingresos \u2014 Cap\u00edtulos T\u00e9cnicos<\/h3>\n        <table><thead><tr><th>Cap.<\/th><th>Denominaci\u00f3n<\/th><th style=\"text-align:right\">Importe<\/th><th style=\"text-align:right\">%<\/th><\/tr><\/thead><tbody id=\"odg-tabla-ing-tec\"><\/tbody><\/table>\n      <\/div>\n      <div class=\"odg-table-card\">\n        <h3>Gastos \u2014 Cap\u00edtulos T\u00e9cnicos<\/h3>\n        <table><thead><tr><th>Cap.<\/th><th>Denominaci\u00f3n<\/th><th style=\"text-align:right\">Importe<\/th><th style=\"text-align:right\">%<\/th><\/tr><\/thead><tbody id=\"odg-tabla-gas-tec\"><\/tbody><\/table>\n      <\/div>\n\n      <div class=\"odg-table-card\">\n        <h3>Presupuesto 2025 \u2014 Aplicaciones Presupuestarias<\/h3>\n        <div class=\"odg-table-sub\">Primeras partidas del presupuesto oficial 2025 (formato OpenData CSV)<\/div>\n        <div class=\"odg-search-bar\">\n          <input class=\"odg-search-input\" type=\"text\" id=\"odg-search2025\" placeholder=\"Buscar por denominaci\u00f3n o \u00e1rea...\">\n          <select class=\"odg-select-filter\" id=\"odg-filtroArea\">\n            <option value=\"\">Todas las \u00e1reas<\/option>\n            <option value=\"Seguridad\">Seguridad y Orden P\u00fablico<\/option>\n            <option value=\"Urbanismo\">Urbanismo<\/option>\n            <option value=\"Parques\">Parques y jardines<\/option>\n            <option value=\"Residuos\">Recogida de residuos<\/option>\n            <option value=\"Agua\">Agua<\/option>\n            <option value=\"Limpieza\">Limpieza<\/option>\n          <\/select>\n        <\/div>\n        <table><thead><tr><th>\u00c1rea<\/th><th>Programa<\/th><th>Denominaci\u00f3n<\/th><th style=\"text-align:right\">Importe<\/th><\/tr><\/thead><tbody id=\"odg-tabla-2025\"><\/tbody><\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== PUBLICIDAD ===== -->\n  <div id=\"odg-publicidad\" class=\"odg-section\">\n    <div class=\"odg-page\">\n      <div class=\"odg-section-title\"><span>\ud83d\udce2<\/span> Gastos en Publicidad<\/div>\n      <div class=\"odg-info-strip\">\ud83d\udccc Gasto en publicidad y comunicaci\u00f3n institucional del Ayuntamiento de Galapagar (2019\u20132024).<\/div>\n      <div class=\"odg-pub-grid\">\n        <div class=\"odg-pub-card\" style=\"--odg-h:95%\"><div class=\"odg-pub-year\">2025<\/div><div class=\"odg-pub-val\">71.190 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:90%\"><div class=\"odg-pub-year\">2024<\/div><div class=\"odg-pub-val\">66.097 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:75%\"><div class=\"odg-pub-year\">2023<\/div><div class=\"odg-pub-val\">53.954 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:82%\"><div class=\"odg-pub-year\">2022<\/div><div class=\"odg-pub-val\">59.944 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:85%\"><div class=\"odg-pub-year\">2021<\/div><div class=\"odg-pub-val\">61.460 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:73%\"><div class=\"odg-pub-year\">2020<\/div><div class=\"odg-pub-val\">53.268 \u20ac<\/div><\/div>\n        <div class=\"odg-pub-card\" style=\"--odg-h:43%\"><div class=\"odg-pub-year\">2019<\/div><div class=\"odg-pub-val\">31.429 \u20ac<\/div><\/div>\n      <\/div>\n      <div class=\"odg-info-strip\" style=\"margin-bottom:20px\">\n        \ud83d\udcce <strong>Documentaci\u00f3n 2025:<\/strong> <a href=\"http:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2026\/04\/publicidad-2025.xlsx\" target=\"_blank\" style=\"color:var(--odg-verde);font-weight:700\">Descargar Excel gasto en publicidad 2025 (71.189,85 \u20ac) \u2192<\/a>\n      <\/div>\n      <div class=\"odg-chart-card\" style=\"margin-bottom:20px\">\n        <h3>Evoluci\u00f3n del Gasto en Publicidad<\/h3>\n        <div class=\"odg-chart-sub\">2019\u20132024 \u00b7 Euros corrientes<\/div>\n        <div class=\"odg-chart-wrap\"><canvas id=\"odg-pubChart\"><\/canvas><\/div>\n      <\/div>\n      <div class=\"odg-table-card\">\n        <h3>Tabla de Gastos en Publicidad<\/h3>\n        <table><thead><tr><th>Ejercicio<\/th><th style=\"text-align:right\">Gasto (\u20ac)<\/th><th style=\"text-align:right\">Var. anual<\/th><\/tr><\/thead><tbody id=\"odg-tabla-publicidad\"><\/tbody><\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== POBLACI\u00d3N ===== -->\n  <div id=\"odg-poblacion\" class=\"odg-section\">\n    <div class=\"odg-page\">\n      <div class=\"odg-section-title\"><span>\ud83d\udc65<\/span> Datos de Poblaci\u00f3n \u2014 Galapagar (Madrid)<\/div>\n      <div class=\"odg-info-strip\">\ud83d\udccc Datos del Padr\u00f3n Municipal Continuo (INE). Municipio de Galapagar (Madrid, c\u00f3digo 28061).<\/div>\n      <div class=\"odg-chart-card\" style=\"margin-bottom:24px\">\n        <h3>Evoluci\u00f3n de la Poblaci\u00f3n 2000\u20132023<\/h3>\n        <div class=\"odg-chart-sub\">Galapagar (Madrid) \u2014 Padr\u00f3n a 1 de enero de cada a\u00f1o<\/div>\n        <div class=\"odg-chart-wrap\" style=\"height:280px\"><canvas id=\"odg-pobChart\"><\/canvas><\/div>\n      <\/div>\n      <div class=\"odg-section-title\"><span>\ud83d\udcc6<\/span> Datos por A\u00f1o<\/div>\n      <div class=\"odg-pop-years\" id=\"odg-pop-years-grid\"><\/div>\n      <div class=\"odg-table-card\" style=\"margin-top:20px\">\n        <h3>Tabla de Poblaci\u00f3n por A\u00f1o<\/h3>\n        <div class=\"odg-table-sub\">Desglose por sexo \u2014 Municipio de Galapagar (Madrid)<\/div>\n        <table><thead><tr><th>A\u00f1o<\/th><th style=\"text-align:right\">Total<\/th><th style=\"text-align:right\">Hombres<\/th><th style=\"text-align:right\">Mujeres<\/th><th style=\"text-align:right\">% Mujeres<\/th><\/tr><\/thead><tbody id=\"odg-tabla-poblacion\"><\/tbody><\/table>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div><!-- \/.odg-visor -->\n\n<!-- ===== JAVASCRIPT (IIFE para no contaminar el scope global de WP) ===== -->\n<script>\n(function() {\n  'use strict';\n\n  \/\/ ---- Esperar a que Chart.js est\u00e9 disponible ----\n  function odgWaitForChart(cb) {\n    if (typeof Chart !== 'undefined') { cb(); }\n    else { setTimeout(function(){ odgWaitForChart(cb); }, 100); }\n  }\n\n  \/\/ ---- DATOS ----\n  var gastosArea = [\n    { name: 'Servicios P\u00fablicos B\u00e1sicos', desc: 'Seguridad, limpieza, urbanismo, parques...', amount: 21908263.22, pct: 52.2 },\n    { name: 'Adm\u00f3n. y \u00d3rganos de Gobierno', desc: 'Gesti\u00f3n interna, atenci\u00f3n al ciudadano...', amount: 11680706.20, pct: 27.8 },\n    { name: 'Educaci\u00f3n, Cultura y Deporte', desc: 'Actividades, mantenimiento de centros...', amount: 4157655.66, pct: 9.9 },\n    { name: 'Servicios Sociales y Empleo', desc: 'Ayudas a familias, dependencia, igualdad...', amount: 3621844.31, pct: 8.6 },\n    { name: 'Comercio, Turismo y Empresas', desc: 'Promoci\u00f3n econ\u00f3mica, ferias...', amount: 512103.58, pct: 1.2 },\n    { name: 'Pago de la Deuda P\u00fablica', desc: 'Intereses y amortizaci\u00f3n de pr\u00e9stamos.', amount: 121597.96, pct: 0.3 },\n  ];\n  var ingresosCap = [\n    { name: 'Impuestos Directos (IBI, veh\u00edculos...)', amount: 13041557.68, pct: 31.0 },\n    { name: 'Transferencias de otras Adm.', amount: 13130798.07, pct: 31.3 },\n    { name: 'Tasas y Otros Ingresos', amount: 8317635.88, pct: 19.8 },\n    { name: 'Transf. de Capital (Inversiones)', amount: 3224530.62, pct: 7.7 },\n    { name: 'Operaciones Financieras (Pr\u00e9stamos)', amount: 2852722.68, pct: 6.8 },\n    { name: 'Impuestos Indirectos', amount: 951200.00, pct: 2.3 },\n    { name: 'Ingresos Patrimoniales', amount: 473726.00, pct: 1.1 },\n  ];\n  var ingTecnico = [\n    { id:1, name:'Impuestos Directos', amount:13041557.68 },\n    { id:2, name:'Impuestos Indirectos', amount:951200.00 },\n    { id:3, name:'Tasas y Otros Ingresos', amount:8317635.88 },\n    { id:4, name:'Transferencias Corrientes', amount:13130798.07 },\n    { id:5, name:'Ingresos Patrimoniales', amount:473726.00 },\n    { id:6, name:'Enajenaci\u00f3n de Inversiones Reales', amount:0 },\n    { id:7, name:'Transferencias de Capital', amount:3224530.62 },\n    { id:8, name:'Activos Financieros', amount:10000.00 },\n    { id:9, name:'Pasivos Financieros', amount:2852722.68 },\n  ];\n  var gasTecnico = [\n    { id:1, name:'Gastos de Personal', amount:11708474.08 },\n    { id:2, name:'Gastos en Bienes y Servicios', amount:19854517.20 },\n    { id:3, name:'Gastos Financieros', amount:161000.00 },\n    { id:4, name:'Transferencias Corrientes', amount:916779.33 },\n    { id:5, name:'Fondo de Contingencia', amount:314517.69 },\n    { id:6, name:'Inversiones Reales', amount:9016284.67 },\n    { id:7, name:'Transferencias de Capital', amount:0 },\n    { id:8, name:'Activos Financieros', amount:10000.00 },\n    { id:9, name:'Pasivos Financieros', amount:20597.96 },\n  ];\n  var publicidadData = [\n    { year:2019, val:31428.95 }, { year:2020, val:53267.90 }, { year:2021, val:61459.69 },\n    { year:2022, val:59944.15 }, { year:2023, val:53953.94 }, { year:2024, val:66096.83 },\n    { year:2025, val:71189.85 },\n  ];\n  var pobData = [\n    {year:2000,total:21807,h:11002,m:10805},{year:2001,total:23693,h:12018,m:11675},\n    {year:2002,total:24927,h:12625,m:12302},{year:2003,total:26857,h:13614,m:13243},\n    {year:2004,total:28255,h:14232,m:14023},{year:2005,total:29218,h:14693,m:14525},\n    {year:2006,total:28924,h:14505,m:14419},{year:2007,total:30007,h:15030,m:14977},\n    {year:2008,total:31261,h:15715,m:15546},{year:2009,total:31820,h:15936,m:15884},\n    {year:2010,total:32393,h:16174,m:16219},{year:2011,total:32575,h:16221,m:16354},\n    {year:2012,total:32930,h:16318,m:16612},{year:2013,total:32523,h:16107,m:16416},\n    {year:2014,total:32380,h:16012,m:16368},{year:2015,total:32294,h:15953,m:16341},\n    {year:2016,total:32404,h:15963,m:16441},{year:2017,total:32903,h:16148,m:16755},\n    {year:2018,total:33379,h:16373,m:17006},{year:2019,total:33742,h:16470,m:17272},\n    {year:2020,total:34497,h:16822,m:17675},{year:2021,total:34712,h:16926,m:17786},\n    {year:2022,total:34834,h:16914,m:17920},{year:2023,total:35273,h:17119,m:18154},\n    {year:2024,total:36758,h:17834,m:18924},{year:2025,total:36805,h:17889,m:18916},\n  ];\n  var partidas2025 = [\n    {area:'Seguridad',prog:'132',den:'Seguridad y Orden P\u00fablico. Sueldos del Grupo A1',imp:15922.80},\n    {area:'Seguridad',prog:'132',den:'Seguridad y Orden P\u00fablico. Sueldos del Grupo C1',imp:589235.64},\n    {area:'Seguridad',prog:'132',den:'Seguridad y Orden P\u00fablico. Complemento espec\u00edfico',imp:1196634.49},\n    {area:'Seguridad',prog:'132',den:'Seguridad y Orden P\u00fablico. Seguridad Social',imp:898032.76},\n    {area:'Seguridad',prog:'132',den:'Seguridad y Orden P\u00fablico. Arrendamiento de material de transporte',imp:78090.38},\n    {area:'Urbanismo',prog:'151',den:'Urbanismo. Sueldos del Grupo A1',imp:47768.40},\n    {area:'Urbanismo',prog:'151',den:'Urbanismo. Complemento espec\u00edfico',imp:192096.66},\n    {area:'Urbanismo',prog:'151',den:'Urbanismo. Otras inversiones nuevas',imp:900000.00},\n    {area:'Urbanismo',prog:'1532',den:'Pavimentaci\u00f3n v\u00edas p\u00fablicas. Mantenimiento infraestructuras',imp:800000.00},\n    {area:'Urbanismo',prog:'1532',den:'Pavimentaci\u00f3n v\u00edas p\u00fablicas. Inversi\u00f3n reposici\u00f3n',imp:600000.00},\n    {area:'Agua',prog:'161',den:'Abastecimiento de agua potable. Mantenimiento',imp:42656.00},\n    {area:'Agua',prog:'161',den:'Saneamiento. Suministro de agua',imp:200000.00},\n    {area:'Agua',prog:'161',den:'Abastecimiento de agua. Inversi\u00f3n de reposici\u00f3n',imp:1291617.28},\n    {area:'Residuos',prog:'1621',den:'Recogida de residuos. Tributos Ent. Locales',imp:1143432.00},\n    {area:'Residuos',prog:'1621',den:'Recogida de residuos. Estudios y trabajos t\u00e9cnicos',imp:2786477.60},\n    {area:'Limpieza',prog:'163',den:'Limpieza viaria. Estudios y trabajos t\u00e9cnicos',imp:1868605.64},\n    {area:'Parques',prog:'170',den:'Medio ambiente. Seguridad Social personal laboral',imp:25447.49},\n    {area:'Parques',prog:'171',den:'Parques y jardines. Retribuciones b\u00e1sicas',imp:142779.42},\n    {area:'Parques',prog:'171',den:'Parques y jardines. Estudios y trabajos t\u00e9cnicos',imp:890000.00},\n    {area:'Parques',prog:'171',den:'Parques y jardines. Inversi\u00f3n nueva en parques',imp:20000.00},\n  ];\n\n  var coloresVerdes = ['#005A3A','#2e7d32','#388e3c','#43a047','#66bb6a','#81c784'];\n  var coloresOro    = ['#c9a227','#d4b23a','#dfc24e','#e9d362','#f3e376','#f9ef9a','#fdf5cc'];\n\n  \/\/ ---- UTILS ----\n  function fmt(v) {\n    return new Intl.NumberFormat('es-ES', { minimumFractionDigits:2, maximumFractionDigits:2 }).format(v) + ' \u20ac';\n  }\n  function gid(id) { return document.getElementById(id); }\n\n  \/\/ ---- NAVEGACI\u00d3N ----\n  function odgShowSection(targetId) {\n    document.querySelectorAll('.odg-visor .odg-section').forEach(function(s){ s.classList.remove('odg-active'); });\n    document.querySelectorAll('.odg-visor .odg-nav-btn').forEach(function(b){ b.classList.remove('odg-active'); });\n    var sec = gid(targetId);\n    if (sec) sec.classList.add('odg-active');\n    var btn = document.querySelector('.odg-visor .odg-nav-btn[data-odg-target=\"' + targetId + '\"]');\n    if (btn) btn.classList.add('odg-active');\n  }\n\n  \/\/ ---- RENDER TABLAS ----\n  function renderGastosArea() {\n    var tb = gid('odg-tabla-gastos-area');\n    if (!tb) return;\n    tb.innerHTML = gastosArea.map(function(g) {\n      return '<tr><td><strong>' + g.name + '<\/strong><\/td><td style=\"color:#6b7280;font-size:0.8rem\">' + g.desc + '<\/td>' +\n        '<td class=\"odg-num\">' + fmt(g.amount) + '<\/td>' +\n        '<td class=\"odg-pct\">' + g.pct.toFixed(1) + '%<div class=\"odg-bar-mini\"><div class=\"odg-bar-fill\" style=\"width:' + g.pct + '%\"><\/div><\/div><\/td><\/tr>';\n    }).join('');\n  }\n\n  function renderIngresosCap() {\n    var tb = gid('odg-tabla-ingresos-cap');\n    if (!tb) return;\n    tb.innerHTML = ingresosCap.map(function(i) {\n      return '<tr><td><strong>' + i.name + '<\/strong><\/td>' +\n        '<td class=\"odg-num\">' + fmt(i.amount) + '<\/td>' +\n        '<td class=\"odg-pct\">' + i.pct.toFixed(1) + '%<div class=\"odg-bar-mini\"><div class=\"odg-bar-fill odg-gold\" style=\"width:' + i.pct + '%\"><\/div><\/div><\/td><\/tr>';\n    }).join('');\n  }\n\n  function renderTecnico() {\n    var total = 42002170.93;\n    var tbI = gid('odg-tabla-ing-tec');\n    if (tbI) tbI.innerHTML = ingTecnico.filter(function(x){ return x.amount > 0; }).map(function(x) {\n      var pct = (x.amount \/ total * 100);\n      return '<tr><td style=\"font-family:\\'DM Mono\\',monospace;font-weight:600\">' + x.id + '<\/td><td>' + x.name + '<\/td>' +\n        '<td class=\"odg-num\">' + fmt(x.amount) + '<\/td>' +\n        '<td class=\"odg-pct\">' + pct.toFixed(2) + '%<div class=\"odg-bar-mini\"><div class=\"odg-bar-fill\" style=\"width:' + pct + '%\"><\/div><\/div><\/td><\/tr>';\n    }).join('');\n\n    var tbG = gid('odg-tabla-gas-tec');\n    if (tbG) tbG.innerHTML = gasTecnico.filter(function(x){ return x.amount > 0; }).map(function(x) {\n      var pct = (x.amount \/ total * 100);\n      return '<tr><td style=\"font-family:\\'DM Mono\\',monospace;font-weight:600\">' + x.id + '<\/td><td>' + x.name + '<\/td>' +\n        '<td class=\"odg-num\">' + fmt(x.amount) + '<\/td>' +\n        '<td class=\"odg-pct\">' + pct.toFixed(2) + '%<div class=\"odg-bar-mini\"><div class=\"odg-bar-fill odg-red\" style=\"width:' + pct + '%\"><\/div><\/div><\/td><\/tr>';\n    }).join('');\n  }\n\n  function renderPartidas2025(data) {\n    var tb = gid('odg-tabla-2025');\n    if (!tb) return;\n    tb.innerHTML = data.map(function(p) {\n      return '<tr><td><span class=\"odg-tag\">' + p.area + '<\/span><\/td>' +\n        '<td style=\"font-family:\\'DM Mono\\',monospace;font-size:0.78rem\">' + p.prog + '<\/td>' +\n        '<td>' + p.den + '<\/td><td class=\"odg-num\">' + fmt(p.imp) + '<\/td><\/tr>';\n    }).join('');\n  }\n\n  function odgFiltrarPartidas() {\n    var qEl = gid('odg-search2025'), aEl = gid('odg-filtroArea');\n    var q = qEl ? qEl.value.toLowerCase() : '';\n    var area = aEl ? aEl.value : '';\n    renderPartidas2025(partidas2025.filter(function(p) {\n      return (!q || p.den.toLowerCase().indexOf(q) > -1 || p.area.toLowerCase().indexOf(q) > -1) &&\n             (!area || p.area.indexOf(area) > -1);\n    }));\n  }\n\n  function renderPublicidad() {\n    var tb = gid('odg-tabla-publicidad');\n    if (!tb) return;\n    var rev = publicidadData.slice().reverse();\n    tb.innerHTML = rev.map(function(p, i, arr) {\n      var prev = arr[i + 1];\n      var varStr = prev ? (\n        p.val >= prev.val\n          ? '<span style=\"color:#2e7d32\">\u25b2 ' + ((p.val - prev.val) \/ prev.val * 100).toFixed(1) + '%<\/span>'\n          : '<span style=\"color:#c62828\">\u25bc ' + Math.abs((p.val - prev.val) \/ prev.val * 100).toFixed(1) + '%<\/span>'\n      ) : '\u2014';\n      return '<tr><td><strong>' + p.year + '<\/strong><\/td><td class=\"odg-num\">' + fmt(p.val) + '<\/td><td class=\"odg-num\">' + varStr + '<\/td><\/tr>';\n    }).join('');\n  }\n\n  function renderPoblacion() {\n    var grid = gid('odg-pop-years-grid');\n    var years = pobData.slice().reverse();\n    if (grid) grid.innerHTML = years.slice(0, 12).map(function(p) {\n      return '<div class=\"odg-pop-card\"><div class=\"odg-pop-year\">' + p.year + '<\/div>' +\n        '<div class=\"odg-pop-total\">' + p.total.toLocaleString('es-ES') + '<\/div>' +\n        '<div class=\"odg-pop-genero\">\u2642 ' + p.h.toLocaleString('es-ES') + ' \u00b7 \u2640 ' + p.m.toLocaleString('es-ES') + '<\/div><\/div>';\n    }).join('');\n\n    var tb = gid('odg-tabla-poblacion');\n    if (tb) tb.innerHTML = years.map(function(p) {\n      return '<tr><td><strong>' + p.year + '<\/strong><\/td>' +\n        '<td class=\"odg-num\">' + p.total.toLocaleString('es-ES') + '<\/td>' +\n        '<td class=\"odg-num\">' + p.h.toLocaleString('es-ES') + '<\/td>' +\n        '<td class=\"odg-num\">' + p.m.toLocaleString('es-ES') + '<\/td>' +\n        '<td class=\"odg-pct\">' + (p.m \/ p.total * 100).toFixed(1) + '%<\/td><\/tr>';\n    }).join('');\n  }\n\n  \/\/ ---- CHARTS ----\n  function initCharts() {\n    var defaults = {\n      plugins: { legend: { position: 'bottom', labels: { font: { family: 'Nunito', size: 11 }, padding: 14, boxWidth: 12 } } },\n      maintainAspectRatio: false, responsive: true,\n    };\n\n    var cGastos = gid('odg-gastosChart');\n    if (cGastos) new Chart(cGastos, {\n      type: 'doughnut',\n      data: { labels: gastosArea.map(function(g){ return g.name; }),\n        datasets: [{ data: gastosArea.map(function(g){ return g.amount; }), backgroundColor: coloresVerdes, borderColor:'#fff', borderWidth:3, hoverOffset:10 }] },\n      options: Object.assign({}, defaults, { cutout:'58%', plugins: Object.assign({}, defaults.plugins, { tooltip: { callbacks: { label: function(c){ return ' ' + c.label + ': ' + fmt(c.parsed); } } } }) })\n    });\n\n    var cIngresos = gid('odg-ingresosChart');\n    if (cIngresos) new Chart(cIngresos, {\n      type: 'doughnut',\n      data: { labels: ingresosCap.map(function(i){ return i.name; }),\n        datasets: [{ data: ingresosCap.map(function(i){ return i.amount; }), backgroundColor: coloresOro, borderColor:'#fff', borderWidth:3, hoverOffset:10 }] },\n      options: Object.assign({}, defaults, { cutout:'58%', plugins: Object.assign({}, defaults.plugins, { tooltip: { callbacks: { label: function(c){ return ' ' + c.label + ': ' + fmt(c.parsed); } } } }) })\n    });\n\n    var ingFilt = ingTecnico.filter(function(x){ return x.amount > 0; });\n    var cIngTec = gid('odg-ingTecnicoChart');\n    if (cIngTec) new Chart(cIngTec, {\n      type: 'bar',\n      data: { labels: ingFilt.map(function(x){ return 'Cap. ' + x.id; }),\n        datasets: [{ data: ingFilt.map(function(x){ return x.amount; }), backgroundColor:'#005A3A', borderRadius:5, hoverBackgroundColor:'#c9a227' }] },\n      options: Object.assign({}, defaults, { plugins: { legend: { display:false }, tooltip: { callbacks: { label: function(c){ return ' ' + ingFilt[c.dataIndex].name + ': ' + fmt(c.parsed.y); } } } }, scales: { y: { ticks: { callback: function(v){ return (v\/1e6).toFixed(1)+'M\u20ac'; } } } } })\n    });\n\n    var gasFilt = gasTecnico.filter(function(x){ return x.amount > 0; });\n    var cGasTec = gid('odg-gasTecnicoChart');\n    if (cGasTec) new Chart(cGasTec, {\n      type: 'bar',\n      data: { labels: gasFilt.map(function(x){ return 'Cap. ' + x.id; }),\n        datasets: [{ data: gasFilt.map(function(x){ return x.amount; }), backgroundColor:'#c62828', borderRadius:5, hoverBackgroundColor:'#c9a227' }] },\n      options: Object.assign({}, defaults, { plugins: { legend: { display:false }, tooltip: { callbacks: { label: function(c){ return ' ' + gasFilt[c.dataIndex].name + ': ' + fmt(c.parsed.y); } } } }, scales: { y: { ticks: { callback: function(v){ return (v\/1e6).toFixed(1)+'M\u20ac'; } } } } })\n    });\n\n    var cPub = gid('odg-pubChart');\n    if (cPub) new Chart(cPub, {\n      type: 'bar',\n      data: { labels: publicidadData.map(function(p){ return p.year; }),\n        datasets: [{ data: publicidadData.map(function(p){ return p.val; }),\n          backgroundColor: publicidadData.map(function(_,i){ return i === publicidadData.length-1 ? '#c9a227' : '#005A3A'; }),\n          borderRadius:7, hoverBackgroundColor:'#003d27' }] },\n      options: Object.assign({}, defaults, { plugins: { legend: { display:false }, tooltip: { callbacks: { label: function(c){ return ' '+fmt(c.parsed.y); } } } }, scales: { y: { ticks: { callback: function(v){ return v.toLocaleString('es-ES')+'\u20ac'; } } } } })\n    });\n\n    var cPob = gid('odg-pobChart');\n    if (cPob) new Chart(cPob, {\n      type: 'line',\n      data: { labels: pobData.map(function(p){ return p.year; }),\n        datasets: [\n          { label:'Total', data: pobData.map(function(p){ return p.total; }), borderColor:'#005A3A', backgroundColor:'rgba(0,90,58,0.08)', fill:true, tension:0.4, pointRadius:3, borderWidth:2.5 },\n          { label:'Hombres', data: pobData.map(function(p){ return p.h; }), borderColor:'#1565c0', backgroundColor:'transparent', tension:0.4, pointRadius:0, borderWidth:1.5, borderDash:[5,4] },\n          { label:'Mujeres', data: pobData.map(function(p){ return p.m; }), borderColor:'#c62828', backgroundColor:'transparent', tension:0.4, pointRadius:0, borderWidth:1.5, borderDash:[5,4] },\n        ] },\n      options: Object.assign({}, defaults, { scales: { y: { ticks: { callback: function(v){ return v.toLocaleString('es-ES'); } } } }, plugins: Object.assign({}, defaults.plugins, { tooltip: { callbacks: { label: function(c){ return ' '+c.dataset.label+': '+c.parsed.y.toLocaleString('es-ES')+' hab.'; } } } }) })\n    });\n  }\n\n  \/\/ ---- CSV DOWNLOAD ----\n  window.odgDownloadCSV = function() {\n    var rows = [\n      '## DATASET: Presupuesto 2026 - Ayuntamiento de Galapagar',\n      '## FUENTE: transparencia.galapagar.es',\n      '## FECHA: 2026-04-01',\n      '', '## KPIs', 'indicador,valor,unidad',\n      'Presupuesto Total,42002170.93,EUR',\n      'Inversi\u00f3n en el Municipio,9016284.67,EUR',\n      'Ayudas Becas y Estudio,280000.00,EUR',\n      'Ahorro Bruto,3274147.02,EUR',\n      'Gasto por Habitante,1120.06,EUR\/hab',\n      'Inversi\u00f3n por Habitante,240.43,EUR\/hab',\n      '', '## GASTOS POR \u00c1REA', 'area,importe,porcentaje',\n    ].concat(\n      gastosArea.map(function(g){ return '\"'+g.name+'\",'+g.amount+','+g.pct; }),\n      ['', '## INGRESOS POR CAP\u00cdTULO', 'capitulo,importe,porcentaje'],\n      ingresosCap.map(function(i){ return '\"'+i.name+'\",'+i.amount+','+i.pct; }),\n      ['', '## PUBLICIDAD', 'ejercicio,importe'],\n      publicidadData.map(function(p){ return p.year+','+p.val; })\n    );\n    var blob = new Blob([rows.join('\\n')], { type:'text\/csv;charset=utf-8;' });\n    var a = document.createElement('a');\n    a.href = URL.createObjectURL(blob);\n    a.download = 'galapagar_presupuesto2026_opendata.csv';\n    a.click();\n  };\n\n  \/\/ ---- INIT ----\n  function odgInit() {\n    \/\/ Navegaci\u00f3n\n    document.querySelectorAll('.odg-visor .odg-nav-btn').forEach(function(btn) {\n      btn.addEventListener('click', function() {\n        odgShowSection(this.getAttribute('data-odg-target'));\n      });\n    });\n\n    \/\/ B\u00fasqueda en partidas\n    var s25 = gid('odg-search2025'), fArea = gid('odg-filtroArea');\n    if (s25)   s25.addEventListener('input', odgFiltrarPartidas);\n    if (fArea) fArea.addEventListener('change', odgFiltrarPartidas);\n\n    \/\/ Render tablas\n    renderGastosArea();\n    renderIngresosCap();\n    renderTecnico();\n    renderPartidas2025(partidas2025);\n    renderPublicidad();\n    renderPoblacion();\n\n    \/\/ Charts (esperar a Chart.js)\n    odgWaitForChart(initCharts);\n  }\n\n  \/\/ Ejecutar cuando el DOM est\u00e9 listo (compatible con WP)\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', odgInit);\n  } else {\n    odgInit();\n  }\n\n})();\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Datos Abiertos &#8211; OpenData \ud83d\udcc2 Datos Abiertos Presupuesto 2026 Desglose T\u00e9cnico Publicidad Poblaci\u00f3n \ud83d\udcc2 Datos abiertos publicados por el Ayuntamiento de Galapagar. Accede a los datasets originales, visores y recursos [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_piecal_is_event":false,"_piecal_start_date":"","_piecal_end_date":"","_piecal_is_allday":false,"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OpenData - Transparencia | Ayuntamiento de Galapagar<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/transparencia.galapagar.es\/?page_id=8993\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenData - Transparencia | Ayuntamiento de Galapagar\" \/>\n<meta property=\"og:description\" content=\"Datos Abiertos &#8211; OpenData \ud83d\udcc2 Datos Abiertos Presupuesto 2026 Desglose T\u00e9cnico Publicidad Poblaci\u00f3n \ud83d\udcc2 Datos abiertos publicados por el Ayuntamiento de Galapagar. Accede a los datasets originales, visores y recursos [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/transparencia.galapagar.es\/?page_id=8993\" \/>\n<meta property=\"og:site_name\" content=\"Transparencia | Ayuntamiento de Galapagar\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-30T10:49:37+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/transparencia.galapagar.es\/?page_id=8993\",\"url\":\"https:\/\/transparencia.galapagar.es\/?page_id=8993\",\"name\":\"OpenData - Transparencia | Ayuntamiento de Galapagar\",\"isPartOf\":{\"@id\":\"https:\/\/transparencia.galapagar.es\/#website\"},\"datePublished\":\"2024-02-09T12:50:38+00:00\",\"dateModified\":\"2026-04-30T10:49:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/transparencia.galapagar.es\/?page_id=8993#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/transparencia.galapagar.es\/?page_id=8993\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/transparencia.galapagar.es\/?page_id=8993#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\/\/transparencia.galapagar.es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenData\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/transparencia.galapagar.es\/#website\",\"url\":\"https:\/\/transparencia.galapagar.es\/\",\"name\":\"Transparencia | Ayuntamiento de Galapagar\",\"description\":\"Portal de Transparencia de Galapagar\",\"publisher\":{\"@id\":\"https:\/\/transparencia.galapagar.es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/transparencia.galapagar.es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/transparencia.galapagar.es\/#organization\",\"name\":\"Transparencia | Ayuntamiento de Galapagar\",\"url\":\"https:\/\/transparencia.galapagar.es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/transparencia.galapagar.es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2020\/07\/escudoayuntamiento90x90-01.png\",\"contentUrl\":\"https:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2020\/07\/escudoayuntamiento90x90-01.png\",\"width\":376,\"height\":376,\"caption\":\"Transparencia | Ayuntamiento de Galapagar\"},\"image\":{\"@id\":\"https:\/\/transparencia.galapagar.es\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenData - Transparencia | Ayuntamiento de Galapagar","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/transparencia.galapagar.es\/?page_id=8993","og_locale":"es_ES","og_type":"article","og_title":"OpenData - Transparencia | Ayuntamiento de Galapagar","og_description":"Datos Abiertos &#8211; OpenData \ud83d\udcc2 Datos Abiertos Presupuesto 2026 Desglose T\u00e9cnico Publicidad Poblaci\u00f3n \ud83d\udcc2 Datos abiertos publicados por el Ayuntamiento de Galapagar. Accede a los datasets originales, visores y recursos [&hellip;]","og_url":"https:\/\/transparencia.galapagar.es\/?page_id=8993","og_site_name":"Transparencia | Ayuntamiento de Galapagar","article_modified_time":"2026-04-30T10:49:37+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/transparencia.galapagar.es\/?page_id=8993","url":"https:\/\/transparencia.galapagar.es\/?page_id=8993","name":"OpenData - Transparencia | Ayuntamiento de Galapagar","isPartOf":{"@id":"https:\/\/transparencia.galapagar.es\/#website"},"datePublished":"2024-02-09T12:50:38+00:00","dateModified":"2026-04-30T10:49:37+00:00","breadcrumb":{"@id":"https:\/\/transparencia.galapagar.es\/?page_id=8993#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/transparencia.galapagar.es\/?page_id=8993"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/transparencia.galapagar.es\/?page_id=8993#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/transparencia.galapagar.es\/"},{"@type":"ListItem","position":2,"name":"OpenData"}]},{"@type":"WebSite","@id":"https:\/\/transparencia.galapagar.es\/#website","url":"https:\/\/transparencia.galapagar.es\/","name":"Transparencia | Ayuntamiento de Galapagar","description":"Portal de Transparencia de Galapagar","publisher":{"@id":"https:\/\/transparencia.galapagar.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/transparencia.galapagar.es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/transparencia.galapagar.es\/#organization","name":"Transparencia | Ayuntamiento de Galapagar","url":"https:\/\/transparencia.galapagar.es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/transparencia.galapagar.es\/#\/schema\/logo\/image\/","url":"https:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2020\/07\/escudoayuntamiento90x90-01.png","contentUrl":"https:\/\/transparencia.galapagar.es\/wp-content\/uploads\/2020\/07\/escudoayuntamiento90x90-01.png","width":376,"height":376,"caption":"Transparencia | Ayuntamiento de Galapagar"},"image":{"@id":"https:\/\/transparencia.galapagar.es\/#\/schema\/logo\/image\/"}}]}},"ticketed":false,"_links":{"self":[{"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/pages\/8993"}],"collection":[{"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8993"}],"version-history":[{"count":58,"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/pages\/8993\/revisions"}],"predecessor-version":[{"id":12123,"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=\/wp\/v2\/pages\/8993\/revisions\/12123"}],"wp:attachment":[{"href":"https:\/\/transparencia.galapagar.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}