;(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

Rio: Vento interrompe trens, fecha ponte Rio-Niterói e derruba árvores

Lola Ferreira e Igor Mello

Do UOL, no Rio

21/09/2021 15h14

Uma ventania atingiu a cidade do Rio de Janeiro na tarde de hoje. Com rajadas de até 76 km/h, a circulação de trens foi interrompida, a ponte Rio-Niterói foi fechada e houve registro de ao menos 30 quedas de árvore na capital. A prefeitura decretou "estágio de mobilização".

A Supervia, concessionária que istra os trens do Rio, interrompeu a circulação por conta dos ventos fortes às 15h02, por "risco às estruturas da ferrovia". Às 19h, a operação foi normalizada em todos os ramais, depois de quatro horas de problemas.

Antes, a Ecoponte, que istra a Rio-Niterói, interrompeu o fluxo na via por 30 minutos, com liberação às 15h10.

Um registro da ventania no Cristo Redentor mostrou a velocidade das rajadas e a dificuldade de um homem em andar em meio ao vento.


As quedas de árvores se concentraram na zona norte (não há informações sobre vítimas). A Comlurb (Companhia Municipal de Limpeza Urbana) foi acionada para liberar o trânsito nas vias atingidas.

Táxi é atingido por poste e motorista escapa

No centro do Rio, ao lado do Theatro Municipal, um poste caiu em cima de um táxi estacionado. Taxista há 35 anos, Mauro Gonçalves da Gama, 59, disse que por sorte não estava dentro do veículo, na rua Treze de Maio.

O poste, que segundo ele é de uma operadora de telefonia, foi derrubado pelo vento e atingiu a frente do veículo, quebrando o vidro frontal e amassando o teto do táxi.

Eu costumo ficar sempre dentro do carro, mas estava na esquina em pé. Na hora [a chance de estar no táxi no momento do acidente] foi a única coisa que pensei. Fiquei com a imagem do poste caindo na minha cabeça."
Mauro Gonçalves da Gama, taxista

Ainda de acordo com o taxista, equipes da operadora estiveram no local ontem mexendo no equipamento, que tem marcas de ferrugem na base. Segundo ele, pessoas próximas lhe darão apoio enquanto o táxi ficar parado para manutenção.

"Não sei como, mas vou me virar. Graças a Deus tenho um amparo por trás", disse.

Estágio de mobilização e previsão de chuva fraca

O estágio de mobilização é o segundo em uma escala que vai até cinco e é acionado quando há "riscos de ocorrências de alto impacto na cidade". Nessas condições, "ainda não há impactos na rotina da cidade, mas os cidadãos devem se manter informados".

De acordo com o Centro de Operações, ainda hoje há possibilidade de nova mudança de estágio devido à chuva ou a outros fatores.

Por volta de 15h30, havia ocorrência de "ventos moderados" no Rio, chegando a 64,8 km/h no Aeroporto Santos Dumont. A previsão é de que haja aumento da nebulosidade e chuva fraca nas próximas horas.

De acordo com o Alerta Rio, da prefeitura, os registros de ventos fortes começaram por volta de 13h30. No horário, foi registrada uma rajada de 64,8 km/h no Santos Dumont, região central do Rio. Na Base Aérea de Santa Cruz, na zona oeste, houve registro de vento forte de 70,3 km/h às 15h.