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

Tribo indígena remota monitora floresta amazônica com drones

Membros de tribo indígena vigiam invasores por meio de drones - Getty Images
Membros de tribo indígena vigiam invasores por meio de drones Imagem: Getty Images

Fabio Teixeira

Da Thomson Reuters Foundation, na Terra Indígena Uru-Eu-Wau-Wau, Rondônia

05/03/2020 16h49

Para visitar os uru-eu-wau-waus, uma tribo indígena que vive nas profundezas da floresta amazônica, é preciso primeiro solicitar uma permissão por email, que é impressa e entregue em mãos aos líderes locais.

Embora só um dos nove vilarejos da tribo esteja conectado com o mundo exterior por meio de um wi-fi precário via rádio, outras tecnologias estão sendo empregadas para proteger suas florestas remotas de invasores.

Hoje em dia, o zumbido de um drone pode ser ouvido em meio ao canto dos pássaros e do rugido distante do Rio Jamari, onde os uru-eu-uau-uau pescam peixes.

Na tentativa de detectar grileiros e madeireiros ilegais, alguns membros da tribo foram treinados em dezembro para operar drones.

Um mês depois, eles acionaram os drones e descobriram uma área de cerca de 200 hectares sendo desmatada em sua reserva de Rondônia, como contaram à Thomson Reuters Foundation.

"A tecnologia hoje, para o monitoramento territorial, vale muito a pena", disse Bitate, líder local de 19 anos que fala português, além da língua de sua tribo nativa, o tupi cauaíbe.

"Se não tivesse o drone, aquele desmatamento, que já estava bem avançado, não saberíamos nem onde estava".

A tribo depende da floresta para se alimentar, e também para coletar produtos naturais e vendê-los nas cidades.

Um carregamento recente de oito toneladas de castanha do Pará exigiu 10 pessoas coletando durante 30 dias, e gerou cerca de 2.500 reais por pessoa.

Desde seu primeiro contato com o mundo exterior, no início dos anos 1980, os uru-eu-uau-uau vêm se adaptando lentamente a tecnologias modernas, sem romper com suas tradições.

Hoje uma rede elétrica alimenta os quatro vilarejos visitados pela Thomson Reuters Foundation.

Em um deles, Alto Jamari, uma maloca é decorada com uma televisão de tela plana e uma geladeira.

A maioria dos uru-eu-wau-wau ainda dorme em malocas, cercados por porcos selvagens e galinhas, mas agora alguns têm camas em casas de tijolos construídas pelo governo estadual em suas terras.

O uso de drones por parte de povos indígenas começou cerca de três anos atrás, quando as aeronaves por controle remoto se tornaram mais íveis, disse Jessica Webb, encarregada de engajamento global da Global Forest Watch, um serviço de monitoramento pela internet do World Resources Institute.

SIGA TILT NAS REDES SOCIAIS