;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Esse conteúdo é antigo

Sabesp descarta falta de água em São Paulo, mas interior preocupa

Alerta prevê a pior seca dos últimos 111 anos até setembro no estado de São Paulo -  Foto: Jonathan Campos / Arquivo/ Gazeta do Povo
Alerta prevê a pior seca dos últimos 111 anos até setembro no estado de São Paulo Imagem: Foto: Jonathan Campos / Arquivo/ Gazeta do Povo

Márcia De Chiara

São Paulo

29/05/2021 09h04Atualizada em 29/05/2021 09h14

O alerta da pior seca dos últimos 111 anos prevista até setembro não afeta, no momento, de forma generalizada o abastecimento de água potável no estado de São Paulo. Há problemas, no entanto, em alguns municípios do Noroeste e Nordeste paulista, mas, segundo a Sabesp, companhia responsável pelo abastecimento de água no estado, são casos pontuais e de fácil solução.

Ontem, a média dos oito reservatórios que abastecem a Região Metropolitana de São Paulo era de 56,1%. É uma marca equivalente à registrada nesta mesma época do ano em 2018, quando não houve problemas de falta de água potável para a população.

"Gostaria de ter 60%, 65%, claro, mas esse nível neste momento não é preocupante, estamos tranquilos", afirmou o diretor-presidente da Sabesp, Benedito Braga. Ele destacou que, por enquanto, não prevê necessidade de racionamento de água na Região Metropolitana.

Além do nível dos reservatórios não ser motivo para alarme, Braga argumenta que, após a crise hídrica de 2014, a população está usando a água de forma mais racional. Na época, o consumo médio na Região Metropolitana era de 72 mil litros por segundo. Hoje está entre 62 e 63 mil litros por segundo.

Precisamos focar que as pessoas mantenham esses bons hábitos de consumo e façam um esforço a mais nesse sentido.
Benedito Braga

Se a população atender ao chamado para continuar economizando água, o executivo disse acreditar que a infraestrutura implementada pela companhia desde 2014 será suficiente para garantir o abastecimento de pessoas, comércio e indústria.

Gargalo

Apesar da situação tranquila na Região Metropolitana de São Paulo, Braga ite que há restrições severas na oferta de água em algumas regiões do estado, como nas áreas dos municípios de São José do Rio Preto e Franca. Mas, na sua avaliação, são restrições pontuais.

Nesse caso, o executivo argumenta que a ampliação da oferta de água pode ser resolvida com pequenas obras, como abertura de poços de captação, além de campanhas de conscientização do uso racional da água.

Boa parte do interior paulista usa água do aquífero Guarani, que segundo Braga, reúne recursos hídricos suficientes para atender a população sem grandes problemas.

As informações são do jornal O Estado de S. Paulo.