[{"data":1,"prerenderedAt":34},["ShallowReactive",2],{"dataset-aacfb917-fe4f-49b6-b61d-5189c5e3cf7d":3},{"entry":4,"body":33},{"id":5,"slug":6,"title":7,"organization":8,"organization_slug":9,"tags_he":10,"primary_resource_id":17,"formats":18,"metadata_modified":20,"license":21,"record_count":22,"resources":23,"last_analyzed_at":28,"version":29,"summary_he":30,"dataset_kind":31,"related_ids":32},"aacfb917-fe4f-49b6-b61d-5189c5e3cf7d","tchzyt-chtzy-yvmyt-lmzhmy-avvyr","תחזית חצי-יומית למזהמי אוויר","המשרד להגנת הסביבה","ministry_of_the_environment",[11,12,13,14,15,16],"CHIMERE","איכות אוויר","מודל","מזהמי אוויר","סביבה","תחזית","a976089d-e8e5-4013-8f3d-777b8551c684",[19],"XLSX","2026-05-06T13:37:01.161286Z","אחר (פתוח)",17,[24],{"url":25,"format":19,"name":26,"size_bytes":27},"https:\u002F\u002Fdata.gov.il\u002Fdataset\u002Faacfb917-fe4f-49b6-b61d-5189c5e3cf7d\u002Fresource\u002Fa976089d-e8e5-4013-8f3d-777b8551c684\u002Fdownload\u002Fa976089d-e8e5-4013-8f3d-777b8551c684.xlsx","תחזית שעתית למזהמי אוויר",5401,"2026-05-02T15:01:51.837307Z",1,"תחזית חצי-יומית לאיכות האוויר ב-14 אזורים גאוגרפיים בישראל, המופקת פעמיים עד שלוש ביום על ידי מודל CHIMERE ומשתרעת על פני 60 שעות קדימה; כוללת ריכוזי אוזון, חלקיקים נשימים ורמות זיהום לפי אזור.","map",[],"\u003Ch1 class=\"text-2xl font-bold text-ink-deep mb-2\">תחזית חצי-יומית למזהמי אוויר\u003C\u002Fh1>\n\n\u003Cdiv class=\"flex flex-wrap gap-2 mb-4\">\n  \u003Cspan class=\"tag-chip\">איכות אוויר\u003C\u002Fspan>\n  \u003Cspan class=\"tag-chip\">מזהמי אוויר\u003C\u002Fspan>\n  \u003Cspan class=\"tag-chip\">CHIMERE\u003C\u002Fspan>\n  \u003Cspan class=\"tag-chip\">תחזית\u003C\u002Fspan>\n  \u003Cspan class=\"tag-chip\">סביבה\u003C\u002Fspan>\n\u003C\u002Fdiv>\n\n\u003C!-- AI Summary -->\n\u003Csection class=\"card p-5 mb-4\">\n  \u003Cp class=\"text-ink leading-relaxed\">\n    מערכת זו מציגה תחזית חצי-יומית לאיכות האוויר ב-14 אזורים גאוגרפיים בישראל,\n    המופקת על ידי מודל CHIMERE של המשרד להגנת הסביבה.\n    התחזית עוקבת אחר מספר מזהמי אוויר — בהם אוזון וחלקיקים נשימים (אבק) — ומשתרעת על פני שישים שעות קדימה.\n    הנתונים מתעדכנים פעמיים עד שלוש פעמים ביום ומשמשים בסיס להתראות ציבוריות לאוכלוסיות רגישות.\n  \u003C\u002Fp>\n\u003C\u002Fsection>\n\n\u003C!-- Warning Alert (rendered dynamically) -->\n\u003Cdiv id=\"air-warning-alert\" class=\"hidden card p-4 mb-5\"\n     style=\"border-right: 4px solid #dc3545; background: #fff8f8;\">\n  \u003Cdiv class=\"flex items-start gap-3\">\n    \u003Cimg src=\"\u002Ficons\u002Ftriangle-alert.svg\" alt=\"\" class=\"w-5 h-5 mt-0.5 shrink-0\"\n         style=\"filter: invert(22%) sepia(80%) saturate(700%) hue-rotate(330deg) brightness(90%);\">\n    \u003Cdiv>\n      \u003Ch2 class=\"text-base font-semibold text-ink-deep mb-1\">התראת זיהום אוויר\u003C\u002Fh2>\n      \u003Cp id=\"air-warning-text\" class=\"text-sm text-ink leading-relaxed\">\u003C\u002Fp>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- KPI Cards -->\n\u003Cdiv class=\"grid grid-cols-2 md:grid-cols-4 gap-4 mb-5\">\n  \u003Cdiv class=\"card p-4 text-center\">\n    \u003Cdiv class=\"text-3xl font-bold text-brand mb-1\">14\u003C\u002Fdiv>\n    \u003Cdiv class=\"text-sm text-subtle\">אזורי ניטור\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"card p-4 text-center\">\n    \u003Cdiv class=\"text-3xl font-bold text-brand mb-1\">60\u003C\u002Fdiv>\n    \u003Cdiv class=\"text-sm text-subtle\">שעות תחזית קדימה\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"card p-4 text-center\">\n    \u003Cdiv id=\"kpi-dominant\" class=\"text-2xl font-bold mb-1\" style=\"color:#e6ac00;\">—\u003C\u002Fdiv>\n    \u003Cdiv class=\"text-sm text-subtle\">רמה ברוב האזורים\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n  \u003Cdiv class=\"card p-4 text-center\">\n    \u003Cdiv class=\"text-2xl font-bold text-brand mb-1\" style=\"letter-spacing:-0.02em;\">CHIMERE\u003C\u002Fdiv>\n    \u003Cdiv class=\"text-sm text-subtle\">מודל חיזוי\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fdiv>\n\n\u003C!-- Map -->\n\u003Csection class=\"card p-5 mb-5\">\n  \u003Ch2 class=\"font-semibold text-ink-deep mb-3\">מפת איכות האוויר הנוכחית לפי אזור\u003C\u002Fh2>\n  \u003Cdiv id=\"map-air\" class=\"h-72 md:h-[420px] rounded-gov overflow-hidden\"\n       style=\"min-height:288px;\">\u003C\u002Fdiv>\n  \u003Cdiv class=\"flex flex-wrap gap-x-5 gap-y-2 mt-3 text-sm\">\n    \u003Cdiv class=\"flex items-center gap-1.5\">\n      \u003Cspan style=\"width:13px;height:13px;border-radius:50%;background:#198754;display:inline-block;border:1px solid #c3cfe7;\">\u003C\u002Fspan>\n      \u003Cspan class=\"text-subtle\">טובה\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center gap-1.5\">\n      \u003Cspan style=\"width:13px;height:13px;border-radius:50%;background:#e6ac00;display:inline-block;border:1px solid #c3cfe7;\">\u003C\u002Fspan>\n      \u003Cspan class=\"text-subtle\">בינונית\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center gap-1.5\">\n      \u003Cspan style=\"width:13px;height:13px;border-radius:50%;background:#c75000;display:inline-block;border:1px solid #c3cfe7;\">\u003C\u002Fspan>\n      \u003Cspan class=\"text-subtle\">גבוהה לרגישים\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center gap-1.5\">\n      \u003Cspan style=\"width:13px;height:13px;border-radius:50%;background:#dc3545;display:inline-block;border:1px solid #c3cfe7;\">\u003C\u002Fspan>\n      \u003Cspan class=\"text-subtle\">גבוהה\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n    \u003Cdiv class=\"flex items-center gap-1.5\">\n      \u003Cspan style=\"width:13px;height:13px;border-radius:50%;background:#7d1020;display:inline-block;border:1px solid #c3cfe7;\">\u003C\u002Fspan>\n      \u003Cspan class=\"text-subtle\">גבוהה מאוד\u003C\u002Fspan>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\u003C!-- Two-day forecast cards -->\n\u003Csection class=\"card p-5 mb-5\">\n  \u003Ch2 class=\"font-semibold text-ink-deep mb-4\">תחזית דו-יומית — בוקר \u002F צהרים \u002F ערב\u003C\u002Fh2>\n  \u003Cdiv id=\"forecast-container\" class=\"grid grid-cols-1 md:grid-cols-2 gap-5\">\n    \u003Cdiv class=\"text-subtle text-sm\">טוען תחזית...\u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\u003C!-- Regional status chart -->\n\u003Csection class=\"card p-5 mb-5\">\n  \u003Ch2 class=\"font-semibold text-ink-deep mb-3\">דירוג איכות האוויר לפי אזור\u003C\u002Fh2>\n  \u003Cp class=\"text-sm text-subtle mb-3\">\n    הציר מייצג סולם רמות: 1 = טובה, 2 = בינונית, 3 = גבוהה לרגישים, 4 = גבוהה, 5 = גבוהה מאוד.\n  \u003C\u002Fp>\n  \u003Cdiv id=\"chart-regions\" class=\"h-64 md:h-96\">\u003C\u002Fdiv>\n\u003C\u002Fsection>\n\n\u003C!-- Notes -->\n\u003Csection class=\"card p-5 mb-5\">\n  \u003Ch2 class=\"font-semibold text-ink-deep mb-2\">על הנתונים\u003C\u002Fh2>\n  \u003Cp class=\"text-ink text-sm leading-relaxed\">\n    תחזית יומית למזהמי אוויר המופקת על ידי מודל CHIMERE של המשרד להגנת הסביבה. התחזית כוללת מספר\n    מזהמי אוויר ומופקת ליומיים קדימה (שישים שעות). הקובץ מתעדכן פעמיים או שלוש ביום.\n    לניטור בזמן אמת של תחנות מדידה ברחבי הארץ ניתן להיכנס לאתר\n    \u003Ca href=\"https:\u002F\u002Fair.sviva.gov.il\u002F\" target=\"_blank\" rel=\"noopener\"\n       class=\"text-brand hover:underline\" dir=\"ltr\">air.sviva.gov.il\u003C\u002Fa>.\n  \u003C\u002Fp>\n\u003C\u002Fsection>\n\n\u003Cstyle>\n  #air-warning-alert.hidden { display: none; }\n  .forecast-slot { border-right: 3px solid #c3cfe7; padding-right: 0.75rem; margin-bottom: 0.75rem; }\n  .forecast-slot:last-child { margin-bottom: 0; }\n  .forecast-slot-label { font-size: 0.75rem; font-weight: 600; color: #0068f5; margin-bottom: 0.25rem; }\n  .forecast-slot-text  { font-size: 0.875rem; color: #0c3058; line-height: 1.5; }\n  .forecast-slot-empty { font-size: 0.875rem; color: #6c757d; }\n\u003C\u002Fstyle>\n\n\u003Cscript>\n(function () {\n  var GOVIL_PALETTE = [\n    '#0068f5','#0b3668','#6c9fd8','#0053c4','#0c3058',\n    '#3d70b0','#b7d2f7','#2658a0','#dbe8fb','#0c1f3d'\n  ];\n\n  var baseECharts = {\n    color: GOVIL_PALETTE,\n    textStyle: { fontFamily: 'Rubik, sans-serif', color: '#0c3058' },\n    tooltip: {\n      textStyle: { fontFamily: 'Rubik', color: '#0c3058' },\n      backgroundColor: '#fff',\n      borderColor: '#c3cfe7',\n      extraCssText: 'direction: rtl; box-shadow: 0 6px 24px -8px rgba(0,104,245,.18);'\n    },\n    grid: { left: 48, right: 80, top: 20, bottom: 48, containLabel: true }\n  };\n\n  \u002F* Approximate WGS84 centres for each named region *\u002F\n  var REGION_COORDS = {\n    'BeerSheva':               [31.25, 34.79],\n    'Jordan':                  [31.87, 35.47],\n    'TelAviv':                 [32.08, 34.78],\n    'GalileeUpperAndGolan':    [33.02, 35.65],\n    'GalileeLowerAndValleys':  [32.67, 35.32],\n    'GreaterHaifa':            [32.82, 35.00],\n    'Yehuda':                  [31.55, 35.10],\n    'GreaterJerusalem':        [31.78, 35.21],\n    'SouthernCoastalPlain':    [31.50, 34.55],\n    'Eilat':                   [29.56, 34.95],\n    'NegevAndArava':           [30.50, 34.85],\n    'Shomron':                 [32.28, 35.12],\n    'InnerLowland':            [31.80, 34.87],\n    'SharonCarmel':            [32.45, 34.90]\n  };\n\n  \u002F* Air quality level mapping *\u002F\n  var AQ_MAP = {\n    'טובה':           { score: 1, color: '#198754' },\n    'בינונית':        { score: 2, color: '#e6ac00' },\n    'גבוהה לרגישים': { score: 3, color: '#c75000' },\n    'גבוהה':         { score: 4, color: '#dc3545' },\n    'גבוהה מאוד':    { score: 5, color: '#7d1020' }\n  };\n\n  function aqColor(aq) {\n    return (AQ_MAP[aq] || { color: '#6c757d' }).color;\n  }\n  function aqScore(aq) {\n    return (AQ_MAP[aq] || { score: 0 }).score;\n  }\n\n  \u002F* ---- Fetch live data from CKAN ---- *\u002F\n  fetch('https:\u002F\u002Fdata.gov.il\u002Fapi\u002F3\u002Faction\u002Fdatastore_search?resource_id=a976089d-e8e5-4013-8f3d-777b8551c684&limit=50')\n    .then(function (res) { return res.json(); })\n    .then(function (json) {\n      var records   = json.result.records;\n      var mapRecs   = records.filter(function (r) { return r.type === 'Map'; });\n      var warnRec   = records.find(function  (r) { return r.name === 'Warning'; });\n      var oneDayRec = records.find(function  (r) { return r.name === 'OneDay'; });\n      var twoDayRec = records.find(function  (r) { return r.name === 'TwoDay'; });\n\n      \u002F* ---- Warning alert ---- *\u002F\n      if (warnRec && warnRec.content && warnRec.content !== 'null') {\n        var alertEl = document.getElementById('air-warning-alert');\n        var textEl  = document.getElementById('air-warning-text');\n        if (alertEl && textEl) {\n          textEl.textContent = warnRec.content;\n          alertEl.classList.remove('hidden');\n        }\n      }\n\n      \u002F* ---- KPI: dominant quality ---- *\u002F\n      var counts = {};\n      mapRecs.forEach(function (r) {\n        counts[r.air_quality] = (counts[r.air_quality] || 0) + 1;\n      });\n      var dominant = Object.keys(counts).sort(function (a, b) {\n        return counts[b] - counts[a];\n      })[0];\n      var kpiEl = document.getElementById('kpi-dominant');\n      if (kpiEl && dominant) {\n        kpiEl.textContent = dominant;\n        kpiEl.style.color = aqColor(dominant);\n      }\n\n      \u002F* ---- Leaflet map ---- *\u002F\n      var map = L.map('map-air', { center: [31.5, 35.0], zoom: 7, zoomControl: true });\n      L.tileLayer('https:\u002F\u002F{s}.tile.openstreetmap.org\u002F{z}\u002F{x}\u002F{y}.png', {\n        attribution: '&copy; OpenStreetMap contributors',\n        maxZoom: 18\n      }).addTo(map);\n\n      mapRecs.forEach(function (row) {\n        var coords = REGION_COORDS[row.name];\n        if (!coords) return;\n        var color = aqColor(row.air_quality);\n        L.circleMarker(coords, {\n          radius: 20,\n          fillColor: color,\n          color: '#0c3058',\n          weight: 1.5,\n          fillOpacity: 0.82\n        })\n        .bindPopup(\n          '\u003Cstrong>' + row.title + '\u003C\u002Fstrong>\u003Cbr>' +\n          'איכות אוויר: \u003Cspan style=\"color:' + color + ';font-weight:600;\">' +\n          (row.air_quality || '---') + '\u003C\u002Fspan>'\n        )\n        .addTo(map);\n      });\n\n      window.addEventListener('resize', function () { map.invalidateSize(); });\n\n      \u002F* ---- Forecast section ---- *\u002F\n      var fcEl = document.getElementById('forecast-container');\n      if (fcEl) {\n        fcEl.innerHTML = '';\n        var dayDefs = [\n          { rec: oneDayRec, label: 'יום א\\' לתחזית (24 שעות)' },\n          { rec: twoDayRec, label: 'יום ב\\' לתחזית (48 שעות)' }\n        ];\n        dayDefs.forEach(function (def) {\n          if (!def.rec) return;\n          var card = document.createElement('div');\n          card.className = 'card p-4';\n\n          var heading = document.createElement('h3');\n          heading.className = 'font-semibold text-ink-deep mb-3 text-sm';\n          heading.style.borderBottom = '2px solid #c3cfe7';\n          heading.style.paddingBottom = '0.5rem';\n          heading.textContent = def.label;\n          card.appendChild(heading);\n\n          var slots = [\n            { label: def.rec.morning, content: def.rec.morning_content },\n            { label: def.rec.noon,    content: def.rec.noon_content    },\n            { label: def.rec.evening, content: def.rec.evening_content }\n          ];\n          slots.forEach(function (slot) {\n            if (!slot.label || slot.label === 'null') return;\n            var slotDiv = document.createElement('div');\n            slotDiv.className = 'forecast-slot';\n\n            var labelDiv = document.createElement('div');\n            labelDiv.className = 'forecast-slot-label';\n            labelDiv.textContent = slot.label.trim();\n            slotDiv.appendChild(labelDiv);\n\n            var contentDiv = document.createElement('div');\n            if (slot.content && slot.content !== 'null') {\n              contentDiv.className = 'forecast-slot-text';\n              contentDiv.textContent = slot.content.trim();\n            } else {\n              contentDiv.className = 'forecast-slot-empty';\n              contentDiv.textContent = 'אין התראה מיוחדת';\n            }\n            slotDiv.appendChild(contentDiv);\n            card.appendChild(slotDiv);\n          });\n\n          fcEl.appendChild(card);\n        });\n\n        if (fcEl.children.length === 0) {\n          var msg = document.createElement('p');\n          msg.className = 'text-subtle text-sm';\n          msg.textContent = 'אין נתוני תחזית זמינים כרגע.';\n          fcEl.appendChild(msg);\n        }\n      }\n\n      \u002F* ---- ECharts: regional status bar ---- *\u002F\n      var chartEl = document.getElementById('chart-regions');\n      if (chartEl && window.echarts) {\n        var chart = echarts.init(chartEl, null, { locale: 'HE' });\n\n        var barData = mapRecs.map(function (r) {\n          return {\n            value: aqScore(r.air_quality),\n            itemStyle: { color: aqColor(r.air_quality) }\n          };\n        });\n\n        var option = Object.assign({}, baseECharts, {\n          tooltip: Object.assign({}, baseECharts.tooltip, {\n            formatter: function (params) {\n              var row = mapRecs[params.dataIndex];\n              var c = aqColor(row.air_quality);\n              return '\u003Cstrong>' + row.title + '\u003C\u002Fstrong>\u003Cbr>' +\n                '\u003Cspan style=\"color:' + c + ';font-weight:600;\">' +\n                (row.air_quality || '---') + '\u003C\u002Fspan>';\n            }\n          }),\n          xAxis: {\n            type: 'value',\n            min: 0,\n            max: 5,\n            interval: 1,\n            axisLabel: {\n              fontFamily: 'Rubik, sans-serif',\n              fontSize: 10,\n              formatter: function (v) {\n                var L = { 1: 'טובה', 2: 'בינונית', 3: 'גבוה לרגישים', 4: 'גבוהה', 5: 'גבוהה מאוד' };\n                return L[v] || '';\n              }\n            },\n            splitLine: { lineStyle: { color: '#e8eef8' } }\n          },\n          yAxis: {\n            type: 'category',\n            data: mapRecs.map(function (r) { return r.title; }),\n            axisLabel: {\n              fontFamily: 'Rubik, sans-serif',\n              fontSize: 11\n            }\n          },\n          series: [{\n            type: 'bar',\n            data: barData,\n            barMaxWidth: 24,\n            label: {\n              show: true,\n              position: 'right',\n              fontFamily: 'Rubik, sans-serif',\n              fontSize: 11,\n              color: '#0c3058',\n              formatter: function (params) {\n                return mapRecs[params.dataIndex].air_quality || '';\n              }\n            }\n          }]\n        });\n\n        chart.setOption(option);\n        window.addEventListener('resize', function () { chart.resize(); });\n      }\n    })\n    .catch(function (err) {\n      console.error('שגיאה בטעינת נתוני איכות האוויר:', err);\n    });\n})();\n\u003C\u002Fscript>\n",1778130671877]