Desenvolvimento de software para visualização de dados de radar
Transcrição
Desenvolvimento de software para visualização de dados de radar
João Victor Cal Garcia Desenvolvimento de software para visualização de dados de radar meteorológico usando OpenGL São José do Rio Preto - SP, Brasil Janeiro de 2008 João Victor Cal Garcia Desenvolvimento de software para visualização de dados de radar meteorológico usando OpenGL Monografia apresentada ao Departamento de Ciências de Computação e Estatística do Instituto de Biociências, Letras e Ciências Exatas da Universidade Estadual Paulista “Júlio de Mesquita Filho”, como parte dos requisitos necessários para aprovação na disciplina Projeto Final. Orientador: Professor Doutor Augusto Brandão D’Oliveira D EPARTAMENTO DE C IÊNCIA DA C OMPUTAÇÃO E E STATÍSTICA I NSTITUTO DE B IOCIÊNCIAS , L ETRAS E C IÊNCIAS E XATAS U NIVERSIDADE E STADUAL PAULISTA “J ÚLIO DE M ESQUITA F ILHO ” São José do Rio Preto - SP, Brasil Janeiro de 2008 Monografia de Projeto Final de Graduação sob o título “Desenvolvimento de software para visualização de dados de radar meteorológico usando OpenGL”, defendida por João Victor Cal Garcia e aprovada em Janeiro de 2008, em São José do Rio Preto, Estado de São Paulo, pela banca examinadora constituída pelos professores: Prof. Dr. Augusto Brandão de Oliveira Orientador Prof. Dr. Norian Marranghello Universidade Estadual Paulista “Júlio de Mesquita Filho” Prof. Dr. Roberto Vicente Calheiros Universidade Estadual Paulista “Júlio de Mesquita Filho” Resumo Este trabalho apresenta o problema da visualização de dados de radar meteorológico, bem como a ausência de ferramentas em código aberto para que os pesquisadores da área possam realizar seu trabalho de maneira a não depender de programas caixa-preta. São discutidos os conceitos do radar, o uso desse sistema para medições meteorológicas, e as formas de representar os dados das leituras de radar em uma tela de computador. É feita então a proposição de um sistema em código livre que permite a leitura desses dados. O software gerado por esse trabalho visa auxiliar os pesquisadores do IPMet/UNESP, focando-se nos radares do instituto. O trabalho poderá ser usado como ponto de partida para desenvolvimento de novas ferramentas. Abstract This work presents the problem of viewing weather radar data as well as the lack of opensource tools to help researchers do their work without the use of black-box software. The concepts of radar, the use of a radar system for meteorological measurements and ways of representing data from the radar readings on a computer screen are discussed. It is made then a proposition of an open-source system that allows the reading of the radar data. The software created by this work aims to help the researchers of IPMet/UNESP, focusing on the radars owned by the institute. This work can be used as a starting point for development of new tools. “Dedico este trabalho aos meus pais, que me educaram para ser quem sou, que sempre me apoiaram e sempre acreditaram em mim, e a toda minha família, que sempre esteve presente.” Agradecimentos Ao professor Dr. Augusto Brandão D’Oliveira, por ser meu orientador e acreditar no meu trabalho, por ensinar tantas coisas diferentes, por me ajudar sempre que as coisas se mostraram mais difíceis do que pareciam, e por me ensinar o que significa ser brasileiro. Ao professor Dr. Roberto Vicente Calheiros, pelo apoio moral, científico e material durante o desenvolvimento do projeto, Ao pessoal da Sigmet, que responderam minhas intermináveis dúvidas. Ao IPMet, que cedeu material para esse projeto. Aos professores que me ajudaram a chegar até aqui, e não que desistiram de mim. Aos amigos e colegas que me incentivaram e me ajudaram sempre que precisei. “Se meu corpo estiver morrendo, deixe que meu corpo morra. Mas não deixe que meu legado morra.” Genghis Khan Sumário Lista de Figuras Lista de Tabelas 1 2 Introdução p. 15 1.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 1.1.1 Motivação e escopo . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 1.2 Objetivos e metodologias . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 1.3 Organização da monografia . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 Radares meteorológicos e a computação gráfica p. 19 2.1 Um breve histórico sobre os radares . . . . . . . . . . . . . . . . . . . . . . p. 20 2.1.1 Do telemobiloscópio ao radar . . . . . . . . . . . . . . . . . . . . . p. 20 O funcionamento do radar . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 2.2.1 A equação do radar . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 2.2.2 Tempo de resposta . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 2.2.3 Freqüência e atenuação . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 2.2.4 Ângulo de emissão/recepção . . . . . . . . . . . . . . . . . . . . . . p. 24 2.2.4.1 Equação da variação da altura do sinal . . . . . . . . . . . p. 24 O efeito Doppler . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 2.2.5.1 Radares Doppler . . . . . . . . . . . . . . . . . . . . . . . p. 27 Radares meteorológicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 27 2.3.1 p. 27 2.2 2.2.5 2.3 Um exemplo americano - o NEXRAD . . . . . . . . . . . . . . . . . 2.3.2 3 Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 2.3.2.1 Refletividade . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 2.3.2.2 Velocidade . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 2.4 O caso brasileiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 30 2.5 A computação gráfica na interpretação dos dados meteorológicos . . . . . . . p. 31 2.6 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 Visualização de dados de radar meteorológico usando OpenGL p. 34 3.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34 3.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35 3.3 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 3.3.1 Os arquivos de radar . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 3.3.1.1 Nome do arquivo . . . . . . . . . . . . . . . . . . . . . . p. 37 3.3.1.2 Cabeçalho . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 3.3.1.3 A Matriz de dados . . . . . . . . . . . . . . . . . . . . . . p. 40 Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 3.3.2.1 Exibição dos dados . . . . . . . . . . . . . . . . . . . . . p. 42 3.3.2.2 Interatividade . . . . . . . . . . . . . . . . . . . . . . . . p. 43 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44 3.4.1 As janelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 3.4.2 Interatividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48 Consideraçõs finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 48 3.3.2 3.4 3.5 4 Testes e exemplos p. 49 4.1 Explicações necessárias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 49 4.2 Comparação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50 4.2.1 p. 51 Esclarecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 PPI inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51 Exibição das funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 53 4.3.1 Salvando em texto . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 53 4.3.1.1 Fatia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 4.3.1.2 Valores numéricos . . . . . . . . . . . . . . . . . . . . . . p. 56 4.3.1.3 Gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56 4.4 Desempenho e soluções encontradas . . . . . . . . . . . . . . . . . . . . . . p. 59 4.5 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 4.3 5 Conclusões p. 62 5.1 O projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62 5.2 Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 63 Anexo A -- Manual do Software p. 64 A.1 Abrir o arquivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 Linha de Código . . . . . . . . . . . . . . . . . . . . . . . . p. 64 Arrastar e Soltar . . . . . . . . . . . . . . . . . . . . . . . . p. 64 A.2 Tela inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 64 A.3 Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 A.3.1 Menu principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 A.3.2 Sub-menu “Vizualizar” . . . . . . . . . . . . . . . . . . . . . . . . . p. 65 A.3.3 Sub-menu “Gráfico Escalar” . . . . . . . . . . . . . . . . . . . . . . p. 66 A.4 Menu de opções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 A.5 Telas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 A.5.1 Tela ampliada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 A.5.2 Tela de corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 66 A.5.3 Tela de gráfico escalar . . . . . . . . . . . . . . . . . . . . . . . . . p. 67 A.5.4 Tela dos dados numéricos . . . . . . . . . . . . . . . . . . . . . . . p. 67 Anexo B -- Conteúdo do CD p. 68 Referências p. 69 Lista de Figuras 1.1 Mapa da rede NEXRAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16 1.2 Localização dos radares existentes no Brasil e instituições responsáveis. . . . p. 16 2.1 Patente do telemobiloscópio . . . . . . . . . . . . . . . . . . . . . . . . . . p. 20 2.2 Caminho do sinal do radar . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 2.3 Altura do feixe de radar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 25 2.4 Ilustração do Efeito Doppler . . . . . . . . . . . . . . . . . . . . . . . . . . p. 26 2.5 Display de um radar meteorológico em 1960 . . . . . . . . . . . . . . . . . . p. 29 2.6 Display de um radar meteorológico Moderno (NEXRAD) . . . . . . . . . . . p. 29 2.7 Velocidade dos ventos por radar Doppler . . . . . . . . . . . . . . . . . . . . p. 30 3.1 Screenshot do IRIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 3.2 Janela PPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 3.3 Valores numéricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 3.4 Gráfico da variação em um dado corte . . . . . . . . . . . . . . . . . . . . . p. 47 3.5 Janela de informações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47 4.1 Imagem do IRIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51 4.2 Nosso sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 52 4.3 IRIS sem topografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 53 4.4 Primeiro evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 4.5 Corte do PPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 4.6 Arquivo do corte aberto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 4.7 Segundo evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56 4.8 Valores numéricos exibidos . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57 4.9 Reimpressão dos valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57 4.10 Terceiro evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 4.11 Gráficos dos valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58 4.12 Reimpressão da reta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 59 Lista de Tabelas 2.1 Freqüência dos radares meteorológicos . . . . . . . . . . . . . . . . . . . . . p. 23 2.2 Cores para dBZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 3.1 Campos fixos no nome do arquivo . . . . . . . . . . . . . . . . . . . . . . . p. 37 3.2 Campos variáveis no nome do arquivo . . . . . . . . . . . . . . . . . . . . . p. 37 3.3 Exemplo de decodificação do nome de arquivo . . . . . . . . . . . . . . . . p. 38 4.1 Máquinas usadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50 4.2 Arquivos utilizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50 15 1 Introdução 1.1 Considerações iniciais Meteorologia (do grego meteoron, “flutua no céu”, logos, “conhecimento”) é a área interdisciplinar de estudo da atmosfera focada nos processos e na previsão do clima. Os principais fatores dos fenômenos meteorológicos são a temperatura, a pressão e a humiade relativa, além do relacionamento e das alterações que eles sofrem durante o tempo. O conhecimento do clima e a capacidade de prevê-lo são de grande interesse econômico não somente na agricultura, como nos meios de transporte, na prevenção de desastres, e mesmo em apólices de seguro. Esse conhecimento se torna mais útil quanto obtido com relativa antecedência, mesmo que não seja tão preciso (ZHU et al., 2002). Para que possam ser aplicados os modelos matemático-estatísticos, é necessária uma grande quantidade de dados reais variados e uma idéia de como esses dados evoluem durante o tempo. No estudo específico das precipitações, torna-se dispendioso observar grandes territórios, e nem sempre é possível obter uma noção precisa da evolução das nuvens. Um dos métodos de coleta de dados meteorológicos para o estudo e computação dos mesmos é o uso de radares Doppler. Desde 1941 (ATLAS, 1990), radares têm sido utilizados para estudar o comportamento de nuvens de chuva e precipitações. Nos Estados Unidos, existe o NEXRAD1 , uma rede interligada com 158 radares de alta-definição operacionais (National Weather Service, 2007), como pode ser visto na Figura 1.1. Os dados gerados por esta rede são de domínio público, o que além do excelente material para os meteorologistas, também tem ajudado a planejar rotas aéreas, evitando regiões de turbulência (JOHNSON, 2007). No Brasil, temos uma quantidade bem mais discreta de radares – cerca de 30, incluindo na contagem os radares militares. No estado de São Paulo, os radares mais importantes são os de Bauru e Presidente Prudente, pertencentes ao IPMet2 , UNESP de Bauru. 1 2 Next Generation Weather Radar, Radar da próxima geração Instituto de Pesquisas Meteorológicas 16 1.1 Considerações iniciais Figura 1.1: Mapa da rede NEXRAD Existem ainda radares no Sul, Norte e Nordeste brasileiro, mas seria necessária uma rede bem maior (com um número de radares próximo ao do NEXRAD) para que pudesse ser feito um estudo satisfatório. Um mapa das posições dos radares utilizados pelo Brasil pode ser vista na Figura 1.2. Figura 1.2: Localização dos radares existentes no Brasil e instituições responsáveis. 1.2 Objetivos e metodologias 1.1.1 17 Motivação e escopo Esses radares normalmente funcionam utilizando o efeito Doppler, e conseguem gerar rapidamente uma quantidade muito grande de dados. Para que se torne viável aos estudiosos identificar e acompanhar a evolução das informações e, por conseqüência, estudá-las de maneira satisfatória, torna-se necessário o auxilio de ferramentas específicas. Atualmente, as ferramentas disponíveis para o estudo do enorme volume de dados gerado pelos radares meteorológicos são não-livres, dependentes de arquitetura e de difícil acesso por parte dos pesquisadores. 1.2 Objetivos e metodologias O objetivo do projeto é criar uma ferramenta em código aberto que seja de fácil manutenção capaz de ler e visualizar os dados gerados por radares meteorológicos. Além disso, o programa também deve disponibilizar uma série de recursos que facilitem a visualização e localização de informações pelo usuário. Serão implementadas ferramentas que permitam a visualização dos dados de várias maneiras, como a projeção sobre o mapa geopolítico, visualização de cortes e mesmo a exibição de dados numéricos em formato de tabela. Um objetivo mais discreto é o de mimetizar as características dos softwares não-livres s atualmente utilizados pelos pesquisadores, criando assim uma base de familiaridade para os novos usuários. Põem-se então em prática os conhecimentos adquiridos nas disciplinas de planejamento e construção de software, matemática, computação gráfica, bem como estudos dirigidos nas áreas de meteorologia, ondulatória e programação visual. A programação do projeto será feita em C++, que é uma linguagem moderna e poderosa, além de ter um desempenho considerável. Para a parte gráfica, optou-se por utilizar API OpenGL, devido à facilidade de manutenção e grande quantidade de documentação disponível. 1.3 Organização da monografia 1.3 18 Organização da monografia A monografia está organizada em cinco capítulos. O Capítulo 1 é uma introdução breve sobre o assunto do projeto. O Capítulo 2 contém uma explicação do funcionamento dos sistemas de radar, além de dar uma noção sobre como a meteorologia pode usar esses equipamentos. Também faz uma menção do uso da computação na visualização dos dados de radar meteorológico. O Capítulo 3 descreve o problema da ausência de software livre para visualização de dados de radar meteorológico, e a solução apresentada nesse trabalho. Inclui também uma descrição dos problemas encontrados para visualizar os dados de maneira funcional. O Capítulo 4 apresenta uma série de testes das funções do sistema, bem como uma boa quantidade de imagens do programa funcionando. Ele inclui também vários exemplos de leituras de radar. O Capítulo 5 contém as conclusões e lições aprendidas durante o desenvolvimento desse trabalho. 19 2 Radares meteorológicos e a computação gráfica “Toda ciência ou é física ou é coleção de selos.” Ernest Rutherford O termo radar1 foi criado em 1941, substituindo o termo britânico RDF2 , cunhado, por sua vez, em meados da década de 30. Esse dispositivo utiliza ondas eletromagnéticas para obter dados como a distância, a altitude, a direção e a velocidade de objetos, estejam eles em movimento ou estacionários. Apesar de muitos usos de radar não necessitarem mais do que uma grandeza escalar como saída, a exemplo dos radares de velocidade usados por policiais para controle de trânsito, sistemas como medições meteorológicas costumam gerar um volume de dados tão grande que seu estudo direto se torna praticamente inviável. Só como exemplo, a rede americana de radares NEXRAD gerava, em meados de 2005, 480 gigabytes de dados por dia, valor estimado para atingir 6.5 terabytes diários com o surgimento de novas tecnologias. Uma das maneiras de visualizar esses dados é a utilização de ferramentas gráficas especializadas. Graças aos avanços da Computação Gráfica, tornou-se possível fazer projeções de dados de maneira satisfatória aos usos humanos. A projeção passou de monitor de fósforo que podia dar apenas variações de intensidade (brilho) para os atuais monitores com palhetas de 16 milhões de cores. Também se tornou possível exibir dados de dimensão elevada - uma única leitura de radar meteorológico pode gerar quase quatro megabytes de informação vetorial. 1 2 Acrônimo para RAdio Detection And Ranging (do inglês, Detecção e Telemetria utilizando Rádio). Radio Direction Finding (do inglês, Localização de Direção de Rádio). 2.1 Um breve histórico sobre os radares 2.1 20 Um breve histórico sobre os radares Antes que o radar surgisse, foi necessário que os cientistas compreendessem os princípios das ondas de rádio. Apesar das equações das ondas eletromagnéticas terem sido propostas pelo matemático inglês James Maxwell no início da década de 1860, foi apenas em 1888 que a existência de tal fenômeno foi demonstrada de maneira satisfatória, pelo cientista alemão Heinrich Hertz. Hertz também desenvolveu um sistema para medir a velocidade das ondas, e seus estudos encorajaram investigações científicas mais profundas sobre o assunto. 2.1.1 Do telemobiloscópio ao radar Hertz já havia feito experiências com ondas de rádio em 1887, mas levou quase 20 anos para que os primeiros experimentos que utilizaram ondas de rádio para localizar objetos fossem realizados. Em 1904, o também alemão Christian Hülsmeyer desenvolveu um aparelho que poderia ser considerado o precursor do radar – o telemobiloscópio, como pode se visto na Figura 2.1 – que podia apenas detectar a presença de grandes objetos de metal (navios), mas não sua distância. A invenção de Hülsmeyer não foi prontamente aceita, mas ele chegou a propor um complicado ferramental para que fosse possível medir a distância do objeto. Nikola Tesla estabeleceu, em 1917, princípios que relacionavam a freqüência e o nível energético para as unidades primitivas do radar. Figura 2.1: Patente do telemobiloscópio 2.2 O funcionamento do radar 21 Às vésperas da segunda guerra mundial, o desenvolvimento do radar foi impulsionado pelo conflito iminente e pela vulnerabilidade britânica aos ataques aéreos. Os ingleses chamaram o novo sistema RDF, um dos grandes trunfos dos Aliados durante a guerra. O RDF foi utilizado por muito tempo como aparelho de navegação; hoje, está sendo substituído pelo GPS3 . O funcionamento do RDF é semelhante ao do radar, com a diferença que ele é utilizado para encontrar a direção onde um determinado sinal de rádio conhecido é mais forte. Algum tempo depois, os alemães conseguiram reproduzir a tecnologia. Nos anos posteriores ao conflito, a tecnologia desenvolvida foi aplicada no controle de tráfego aéreo, astrometria, medição de velocidade no trânsito e monitoração do tempo. 2.2 O funcionamento do radar O radar opera da seguinte maneira: Uma fonte emissora gera um pulso forte e focado. Essa onda segue sem muita degradação até se chocar com um objeto capaz de refleti-la. A esse objeto, dá-se o nome de refletor. A maior parte do sinal é perdida no processo, refletida para direções que não retornarão ao radar. Uma pequena parte do sinal refletido atinge então um sensor especial, sensível à onda de rádio, chamado de receptor, que normalmente está localizado na mesma posição que o transmissor. Pode-se ver melhor esse funcionamento na Figura 2.2. Figura 2.2: Caminho do sinal do radar 3 Global Positioning System, Sistema Global de Posicionamento. 22 2.2 O funcionamento do radar 2.2.1 A equação do radar A modelagem matemática do funcionamento do radar é dada na Equação 2.1, também conhecida como Equação do radar. Essa equação fornece a energia do pulso recebido (Pr ) pelo radar (RINEHART, 1997). Pr = Pt Gt Ar σF 4 (4π)2 Rt2 Rr2 (2.1) Pt é a energia do pulso transmitido. Gt é o ganho da antena transmissora. Ar é a abertura (área) efetiva da antena receptora. retornado , é uma razão entre a quantidade de energia que atinge um objeto σ dado por σ = 4π PPinterceptado pela quantidade de energia refletida por aquele alvo que volta para o radar. F é relativo à facilidade com que a onda se propaga no meio (1 é igual ao vácuo). Rt é a distância entre o transmissor e o alvo. Rr é a distância entre o receptor e o alvo. Como normalmente o transmissor e o receptor estão na mesma posição, podemos simplificar a equação 2.1 se fizermos R = Rt = Rr , chegando na equação 2.2 (RINEHART, 1997). Pr = 2.2.2 Pt Gt Ar σF 4 (4π)2 R4 (2.2) Tempo de resposta Se a resistência do meio (seja ele gás ou líquido) for igual em todo o percurso, e supondo que a onda se move numa velocidade muito próxima à da luz, pode-se rapidamente dizer que o intervalo (em segundos) necessário para que a onda seja emitida e então recebida é de d , 2c onde c é a velocidade da luz e d a distância do refletor em relação ao radar. Surge então o problema da sobreposição de sinais. Se não for esperado o tempo adequado antes da emissão de um novo pulso, é possível que sinais de dois pulsos diferentes cheguem de volta ao radar no mesmo tempo. 2.2 O funcionamento do radar 23 Tabela 2.1: Freqüência dos radares meteorológicos Freqüência (GHz) Comprimento de Onda (cm) Banda Atenuada por 90 0.1 W Nuvens 30 1.0 K Nuvens 10 3.0 X Precipitações 5 6.0 C Precipitações 3 10.0 S Precipitações 1.5 20.0 L Tempestades e Aviões Essa situação, denominada ambigüidade, é facilmente contornada quando a distância máxima em que as ondas refletidas voltam diretamente para o radar com intensidade suficiente para a leitura é conhecida. Sendo essa distância dmax , tem-se que a espera deve ser de pelo menos dmax 2c Exemplo segundos antes de uma nova transmissão. Em radares meteorológicos é comum o uso de distâncias de até 200 km, podendo haver extensão para até 450 km. Para evitar ambigüidade na leitura do sinal é necessário esperar pelo menos que a onda que tem o maior alcance retorne. Se a onda de maior alcance atinge os 450 km do ponto de origem, deve-se esperar aproximadamente 7.5 × 10−4 segundos entre uma transmissão e outra. Um ponto interessante é que o tempo de transmissão de um pulso de radar é da ordem de 10−6 segundos. Costuma-se dizer que sistemas de radar passam mais tempo “ouvindo” do que “falando”. Na verdade, eles passam quase 99% do tempo recebendo sinais, e 1% do tempo transmitindo-os. 2.2.3 Freqüência e atenuação Como o sinal recebido normalmente é muito mais fraco que o sinal gerado, as ondas de rádio são preferidas ao som e à luz visível, pois podem ser facilmente ampliadas sem introdução de ruído na leitura. Mesmo assim, as diferentes freqüências de rádio não são igualmente eficientes em todas as condições. A Tabela 2.1 ilustra o fato, de acordo com a utilização por radares meteorológicos. Quanto maior o comprimento de onda, menos atenuação sofre o sinal. Um sinal de banda4 W é atenuado por nuvens, enquanto um sinal de banda L atravessa a maioria das precipitações sem problemas. Em contrapartida, ondas de maior comprimento de onda são menos “sensíveis”, e normalmente não conseguira “ver” objetos menores. As ondas de banda S são as mais utiliza4 Banda é o nome dado a um intervalo qualquer de freqüências do espectro eletromagnético. 2.2 O funcionamento do radar 24 das na meteorologia por radar, pois são razoavelmente precisas, detectam bem a precipitação, e ignoram a maior parte das nuvens. 2.2.4 Ângulo de emissão/recepção No caso específico dos radares que lidam com objetos no céu, é importante notar a existência de um ângulo de inclinação para a emissão do sinal de rádio. Isso ocorre para que o radar não detecte objetos próximos ao nível do solo, como acidentes geográficos e construções. Devido a essa inclinação, quanto mais longe do radar está o sinal, maior é a distância entre a altura do radar e a altura do feixe de rádio naquela posição. Ao invés de um plano de observação, obtém-se uma superfície de cone. Essa situação é acentuada ainda mais pelo fato da terra ter formato aproximado ao de uma esfera. Exemplo No exemplo específico dos radares meteorológicos, o menor ângulo para a leitura costuma ser maior ou igual a 0.5◦ em relação à componente horizontal, apesar de existirem radares com ângulo inferior, e até mesmo negativo. O ângulo pode parecer pequeno, mas se for tomada uma superfície plana, o feixe de rádio estaria a quase 4 km de altura em relação ao nível do radar, na distância de 450 km (normalmente a máxima usada em radares meteorológicos). Ao lembrar que a terra é curva, a situação se torna ainda mais extrema: Tem-se quase 20 km de diferença na mesma distância de 450 km! 2.2.4.1 Equação da variação da altura do sinal Para o calculo genérico da diferença de altitude entre o radar e o solo, pode-se utilizar a Equação 2.3, cuja visualização está na Figura 2.3 (RINEHART, 1997). q 2 H= r2 + (ke ae ) + 2rke ae sen (Θe ) − ke ae + ha Onde: r é a distância que o raio percorre ke é o coeficiente de refração do meio. No caso do ar, uma boa aproximação é 34 . ae é o raio da terra, que varia, aproximadamente, entre 6356 km e 6378 km. Θe é o ângulo, em relação à componente horizontal. (2.3) 25 2.2 O funcionamento do radar Figura 2.3: Altura do feixe de radar ha é a altura do feixe em relação à altura do radar. Muitos radares podem fazer a leitura em mais de um ângulo, de uma vez só. Dados desse tipo são úteis para composições tridimensionais de nuvens e precipitações. 2.2.5 O efeito Doppler O efeito Doppler foi descrito pela primeira vez em 1842, pelo cientista austríaco Christian Doppler em sua monografia. O fenômeno descreve a variação relativa da freqüência de uma onda, causada pelo movimento relativo entre o seu emissor e o receptor. Quando o emissor e o observador se aproximam, a freqüência da onda emitida aumenta (em relação áquele observador). O contrário acontece quando eles se afastam, ocorrendo uma diminuição da freqüência da onda gerada (novamente, em relação àquele observador), como pode ser observado no modelo da Figura 2.4. Esse comportamento pode ser modelado matematicamente, como mostrado nas Equações 2.4 e 2.5 (RINEHART, 1997). Alteração de freqüência: ∆f = fv v = c λ (2.4) fv c (2.5) Freqüência observada: ∆f 0 = f + Onde: 2.2 O funcionamento do radar 26 Figura 2.4: Ilustração do Efeito Doppler f é a freqüência transmitida; v é a velocidade relativa entre o observador e o emissor, positiva quando estão de aproximando, e negativa quando de afastam; c é a velocidade da luz (3.108 ). Essas equações são simplificações, razoavelmente precisas para aproximações de primeira ordem. Disso, nota-se que a freqüência da onda observada aumenta quando o observador e o emissor se aproximam, e diminui quando eles se afastam. Se eles se movem diretamente numa mesma reta, é interessante notar que a freqüência observada da onda permanece constante, mas em qualquer outro caso, a freqüência varia conforme o tempo. O efeito Doppler pode ser facilmente observado no dia a dia. Um caso comum é a sirene da ambulância, que é mais aguda (maior freqüência) quando ela se aproxima, e se torna rapidamente mais grave enquanto ela se distancia. Astrônomos usam o efeito para estudar o movimento de estrelas, detectando, por exemplo, se uma estrela é binária, ou mesmo para medir velocidade de rotação de galáxias. 2.3 Radares meteorológicos 2.2.5.1 27 Radares Doppler Os radares Doppler utilizam o efeito Doppler para medir a velocidade de objetos detectados. A medida é feita calculando-se a mudança de freqüência que o sinal de rádio emitido sofre ao ser recebido. Radares de trânsito utilizam o tal artifício para calcular a velocidade dos veículos. Na meteorologia, os radares Doppler podem ser utilizados para calcular o movimento das nuvens, auxiliando não só no estudo das precipitações, como também do vento (LUCK, 1949). 2.3 Radares meteorológicos Os primeiros usos de radares para detecção de precipitações ocorreram por volta de 1941. Os técnicos de radar dos Aliados, na Segunda Guerra Mundial, tinham problemas em se livrar do ruído em suas leituras, pois grandes áreas de sujeira dificultavam a detecção de navios e aviões. Rapidamente, perceberam que estavam detectando nuvens. Reconhecendo o conhecimento do tempo como um recurso estratégico, os militares treinaram meteorologistas no uso de radares, e utilizaram essa informação para planejar as investidas. Depois da Segunda Guerra, muitos governos passaram a endossar pesquisas na área dos radares meteorológicos. Os dados gerados produziram material valioso para que físicos de nuvens, hidrólogos e meteorologistas pudessem fazer estudos focados no desenvolvimento, movimento e estrutura das precipitações (JOSS; WALDVOGEL, 1990). Nos anos 60, os primeiros radares Doppler foram utilizados para medidas meteorológicas. Isso foi importante para o estudo de tempestades mais violentas, como furacões e tornados. Para se ter idéia, os radares Doppler atuais geram informações tão precisas que é possível gerar um alerta de emergência dezenas de minutos antes de um tornado tocar o solo. 2.3.1 Um exemplo americano - o NEXRAD Nos Estados Unidos, foi criado o NEXRAD (NEXt-generation RADar, radares da Próxima Geração), no final da década de 70. O NEXRAD faz cobertura de todo o território americano, e seus dados são publicados abertamente. Esses dados têm uso governamental e comercial, como por exemplo, na previsão de tempestades e inundações. O NEXRAD conta atualmente com 158 radares Doppler de alta resolução do tipo WSR-88D (Weather Surveillance Radar, 1988, Doppler), que substituíram os antigos radares WSR-57 e WSR-74. Radares meteorológicos também são utilizados para controle de trafego aéreo, auxiliando 28 2.3 Radares meteorológicos dBZ 65+ 50-65 35-50 20-35 20- Tabela 2.2: Cores para dBZ Cor Evento Observado Magenta Tempestade Vermelho Chuva pesada Amarelo Chuva media Verde Neve ou Chuva leve Azul Neve leve, Garoa na criação de rotas que desviem do mal tempo e de certos tipos de vento que possam causar acidentes aéreos (ABER, 1990), (KAWECKI, 1978). 2.3.2 Tipos de dados Os radares meteorológicos produzem uma série de dados diferentes. Muitas vezes, só é possível ter real compreensão de um fenômeno meteorológico se forem observados vários tipos de informação. Entre os tipos de dados gerados por radares Doppler, como os instalados no Brasil, os mais comumente utilizados são a refletividade e a velocidade. 2.3.2.1 Refletividade O tipo mais comum é a refletividade, cuja unidade é o dBZ5 (decibéis em Z). Esse valor é relacionado à intensidade do pulso que foi refletido pelo objeto detectado. Para a leitura de dados do radar, costuma utilizar-se uma escala de cores (em contrapartida à escala de brilho, utilizada antes do fortalecimento da computação gráfica, apresentada na Figura 2.5). Esses valores podem ser facilmente interpretados como a intensidade da precipitação na região. A Tabela 2.2: Cores para dBZ faz essa explicação, baseada no padrão utilizado pelo NEXRAD. Um exemplo moderno de como são as projeções gráficas dos dados de radar meteorológicos é apresentada na Figura 2.6. Em radares que podem fazer leitura em diferentes altitudes, é comum o uso da refletividade composta. Nesse tipo de visualização, o valor da refletividade em cada ponto é o maior valor em dBZ de todas as leituras em diferentes camadas. Desta forma, é possível ter uma melhor visão de um evento meteorológico. 5 Z é um indicador de intensidade de chuva através da energia refletida ao radar. Como os valores Z variam Z muito, usa-se dBZ, onde dBZ = 10log Z0 , onde Z0 é uma refletividade de referência. 2.3 Radares meteorológicos Figura 2.5: Display de um radar meteorológico em 1960 Figura 2.6: Display de um radar meteorológico Moderno (NEXRAD) 29 30 2.4 O caso brasileiro 2.3.2.2 Velocidade Com a popularização dos radares Doppler, tornou-se possível calcular não só a movimentação das nuvens, mas as correntes de ar que influíam em pequenas porções da precipitação. Normalmente, utiliza-se uma escala de brilho para a velocidade (quanto menos brilho, mais rápido) e de cores para a direção (verde para o movimento em direção ao radar, vermelho para o movimento contrário a ele). Dados das diferentes camadas de vento podem ser obtidos de forma similar à da refletividade composta. Um exemplo de como esses dados podem ser apresentados está na Figura 2.7 Figura 2.7: Velocidade dos ventos por radar Doppler A combinação desses dados é bastante útil para o estudo da formação, evolução e deslocamento das precipitações. 2.4 O caso brasileiro Existem atualmente mais de 20 radares meteorológicos que atuam em território brasileiro, pertencentes a instituições diversas. Para melhor compreensão do clima nacional, utilizam-se também dados de radares pertencentes à Argentina e ao Paraguai. Apesar dos radares meteorológicos conseguirem fazer leituras num raio de até 450 km, esses dados são mais confiáveis se a distância não ultrapassar 250 km, por fatores como atenuação e o rápido ganho de altitude do pulso de rádio, já mencionados anteriormente (ANGELIS et al., 2006). Em São Paulo, conta-se principalmente com os radares de Bauru e de Presidente Prudente, de responsabilidade do IPMet/UNESP. Desde 2004, um convênio do Departamento de Controle do Espaço Aéreo (DECEA) com o Centro de Previsão do Tempo e Estudos Climáticos (CPTECINPE) está sendo realizado para integração dos radares nacionais. Atualmente, radares situados nas regiões sul, sudeste e centro-oeste operam em rede, 24 horas por dia, e os dados são enviados 2.5 A computação gráfica na interpretação dos dados meteorológicos 31 para o CPTEC em tempo real (ANGELIS et al., 2006). Para que os dados fossem suficientes para um estudo completo das precipitações brasileiras, seria necessário um número bem maior de radares, cobrindo toda a extensão do território nacional. Atualmente, não existem planos para tal expansão. 2.5 A computação gráfica na interpretação dos dados meteorológicos Apesar da obtenção e armazenamento dos dados serem problemas já bem estudados pelo meio científico, existem ainda desafios a serem resolvidos no que diz respeito à visualização e interpretação das informações. Nos primórdios da utilização do radar, bastava que o aparelho emitisse algum aviso quando um objeto era detectado na direção observada. Quando aplicações mais modernas surgiram (como os radares de base rotatória), tornou-se necessário o desenvolvimento de ferramentas que pudessem auxiliar o trabalho dos técnicos. Os primeiros sistemas capazes de reproduzir adequadamente leituras de radar foram adaptações de osciloscópios. Eles utilizavam uma conversão simples da força e direção do sinal para os eixos X e Y da tela. Existiram basicamente quatro variações desse sistema, utilizadas principalmente pelos militares (NAVAL HISTORICAL CENTER, ). A-Scope apresenta a distância do objeto detectado, em (x,y), onde X é a distância e Y é a quantidade de energia refletida. B-Scope apresenta distância e azimute em (x,y), onde x é o azimute e y é a distância. C-Scope apresenta altitude e azimute em (x,y), onde x é o azimute e y é a altitude. PPI (Plan Position Indicator, do inglês, indicador de posição no plano) é a mais conhecida forma de visualização dos dados de radar, normalmente utilizada em filmes de ação. O display é um circulo cujo centro representa a posição da antena do radar, e os objetos são representados por coordenadas azimutais, com o raio representando a distância e o ângulo, a direção. O PPI ainda é o meio mais utilizado para visualização geral de um evento meteorológico, apesar de que desde a década de 80, sejam preferidos monitores de rasterização, pois são mais baratos e razoavelmente precisos. 2.6 Considerações finais 32 A visualização de dados meteorológicos é, no entanto, mais complexa. Um radar Doppler gera dados sobre posição, intensidade, velocidade e direção do deslocamento precipitações, que são difíceis de projetar de maneira satisfatória. A maioria dos sistemas de software, como o Java NEXRAD Tools, opta por apresentar os dados em camadas separadas. O problema da visualização de fenômenos meteorológicos foi extensivamente examinado (PAPATHOMAS; SCHIAVONE; JULESZ, 1988), (SCHÖNHUBER et al., 1997), (MCCASLIN; MCDONALD; SZOKE, 2000), mas apesar dos esforços, ele parece persistir. Apesar de ainda não ter sido obtido um resultado ideal (RILEY et al., 2004), algumas soluções não-livres foram propostas, as quais foram responsáveis por grande parte no avanço do ramo. Empresas como a IBM reconhecem o potencial desse ramo da ciência, e investem ativamente em ferramentas especializadas (TREINISH, 1999). Na computação gráfica, trabalhos foram propostos desde o início da década de 80 (KAJIYA; HERZEN, 1984), focando-se na visualização de fenômenos atmosféricos de maneira a aproveitar as então novas tecnologias digitais. O uso dos modernos algoritmos de renderização, bem como do poder crescente do hardware voltado para gráficos também gerou frutos, inspirando pesquisas e soluções baseadas em um poder de processamento cada vez mais notável (HAASE et al., 2000). Alguns sistemas modernos se propõem a uma representação volumétrica dos corpos meteorológicos. Essa idéia começou no final da década de 80 (DREBIN; CARPENTER; HANRAHAN, 1988), mas só se tornou realmente viável e capaz de produzir resultados em tempo real com o advento de novas técnicas de processamento 3d e do barateamento do hardware relacionado (ENGEL; KRAUS; ERTL, 2001), (KNISS et al., 2002). Por fim, vale também citar que ainda é inviável tecnologicamente coletar e reproduzir todas as informações que poderiam ser importantes para a exibição dos dados meteorológicos. Existem sistemas que sanam esse problema utilizando modelos matemáticos complexos para simular e gerar informações que servirão para tapar as lacunas existentes (EBERT; MUSGRAVE, 2003), (STAM; FIUME, 1995). 2.6 Considerações finais Neste capítulo, foi apresentado um breve histórico dos sistemas de radar utilizados para medições meteorológicas. Inicialmente, houve a exposição dos primeiros estudos sobre eletromagnetismo e ondas de rádio, ainda no século XIX. Foram citados trabalhos precursores ao radar, e sobre a alavancada que a Segunda Guerra Mundial exerceu sobre as pesquisas de de- 2.6 Considerações finais 33 tecção de objetos à distância. Falou-se também sobre os primeiros usos de sistemas de radar para detecção de nuvens e precipitações, e sobre o rápido interesse militar – e posteriormente, econômico - dessas aplicações. Uma abordagem sobre o funcionamento dos radares, incluindo descrição dos principais problemas encontrados nesses sistemas e sua influência nas leituras meteorológicas. Foi feita também uma explicação do efeito Doppler e do funcionamento dos radares Doppler, bem como o uso dessa tecnologia para fins meteorológicos. Também se falou sobre a rede norte-americana de radares, o NEXRAD, e sua importância para a população local. Uma breve descrição das instalações brasileiras foi dada, incluindo o problema da falta de estrutura para melhor desenvolvimento das pesquisas. Por fim, foram citados os principais tópicos que utilizam a computação gráfica como ferramenta para visualizar os dados meteorológicos. 34 3 Visualização de dados de radar meteorológico usando OpenGL “Como regra, os homens se preocupam mais com o que não podem ver do que com o que podem.” Julio Cesar A vizualização dos dados de radar normalmente é feita por meio de software não-livre. É portanto interessante o desenvolvimento de software livre para o mesmo fim. Em Bauru e Presidente Prudente os radares Sigmet, sob responsabilidade do IPMet 1 , são fontes valiosas de informação para o estado de São Paulo. Infelizmente, os dados produzidos por esses aparelhos só podem ser visualizados com facilidade no sistema fechado IRIS 2 , da própria Sigmet. Esses sistemas são dependentes de plataforma e são muito caros, o que impede que muitos cientistas possam estudar os dados de maneira satisfatória. Propomos nesse capítulo um sistema de visualização dos dados dos radares Sigmet, de maneira a mimetizar algumas das funções do software IRIS, utilizando a API OpenGL. 3.1 Motivação Em meados de 2006, 75% da população brasileira ocupava o espaço urbano, proporção que chegava aos 90% em estados como São Paulo. Esse fenômeno, típico de países em desenvolvimento, tem sido significativo desde a década de 70. Com a concentração da população nos centros urbanos, ocorreu uma queda na qualidade de vida nas cidades não só por fatores socioeconômicos, mas também climáticos. As inundações são consideradas um fenômeno típico decorrente dessa urbanização acelerada, quando diz respeito à água no meio urbano. São normalmente decorrentes da ocupação de áreas ribeirinhas com risco de inundação, e de locais 1 2 Instituto de Pesquisas Meteorológicas Interactive radar Information System 3.2 Objetivos 35 com grandes inclinações, como morros urbanos, que estão sujeitos a deslizamentos após período de chuvoso. Na medida em que aumentam os aglomerados urbanos impermeabilizando o solo, diminuindo sua capacidade de infiltração, a quantidade de água que chega ao mesmo tempo no sistema de drenagem aumenta, produzindo inundações mais freqüentes, atingindo principalmente a população ribeirinha (TUCCI; PORTO; BARROS, 1995). Seria inviável, na maioria dos casos, a instalação de uma rede pluviométrica de superfície grande o suficiente para que se possam obter todas as informações necessárias para o correto estudo das chuvas. Entra aí o radar meteorológico, um sistema de monitoramento das condições atmosféricas em tempo real, capaz de cobrir as falhas deixadas pela insuficiência da rede pluviométrica já existente, como por exemplo, sub ou super estimativa do total de chuva ou sua variabilidade espacial. Com os radares, é possível observar a área onde a precipitação que está ocorrendo em um determinado momento ou então de forma acumulada em um determinado período em uma área extensa. A previsão de chegada de um sistema precipitante sobre um local determinado com algumas horas de antecedência, dada com o uso de modelos numéricos de alerta à ocorrência de precipitação intensa, contribui para a redução de impactos de prejuízos em diversas escalas, como por exemplo, sobre regiões suscetíveis a inundações abruptas (ANTÔNIO, 1998). Os radares de Bauru e Presidente Prudente foram fabricados pela Sigmet, uma empresa norte-americana especializada em sistemas de radares. São equipamentos caros, delicados e de difícil manutenção. Os dados gerados pelos radares são interpretados nativamente pela plataforma IRIS, produzida pela mesma empresa. Essa é uma plataforma não-livre, ou seja, não se sabe exatamente o que acontece dentro dela, só suas entradas e saídas. Cada radar custa em torno de U$1.000.000,00, sem incluir a instalação; o software IRIS custa em torno de U$40.000,003 . O IRIS é muito caro e dependente de plataforma, o que torna seu acesso limitado, mesmo aos cientistas do ramo. Existem alternativas mais baratas, mas a maioria delas se aplica aos dados de radar do NEXRAD, o que as torna pouco útil para pesquisadores brasileiros. Além disso, não existem aplicações de código aberto que possam ser ajustadas às necessidade dos usuários ou evoluída conforme novas tecnologias se tornem disponíveis. 3.2 Objetivos Devido aos problemas apresentados, decidimos criar a base para um sistema de visualização dos dados dos radares meteorológicos focado nos casos específicos de Bauru e Presidente 3 Dados cedidos pelo Sigmet. 3.3 Problema 36 Prudente. O trabalho visa a implementação um sistema que possa ser utilizado por pesquisadores que não tenham acesso ao IRIS e que desejem examinar os dados de radar de maneira satisfatória. O trabalho visa, em sua fase inicial, a criação de um visualizador em PPI dos dados gerados pelo radar com controles para ampliação de imagem, seleção de cortes e circulares e exibição de valores numéricos de uma determinada região do mapa exibido. Além disso, é interessante que o software possa salvar esses dados em formato texto ou em imagem, para que seja possível focar o estudo em partes relevantes das informações obtidas pelo radar. 3.3 Problema Para modelar nosso sistema, tivemos primeiro que entender o funcionamento do IRIS. Antes mesmo de iniciarmos o planejamento da interface e das funcionalidades, foi necessário compreender a organização interna dos arquivos gerados pelo IRIS. Depois disso, discutimos as funcionalidades do IRIS que são desejáveis para nosso software, e algumas funcionalidades extras que decidimos por implementar, dado potencial de uso. 3.3.1 Os arquivos de radar Computacionalmente falando, os arquivos de radar são representados por matrizes de dados de dimensão elevada4 . Uma leitura completa tem em torno de 4 megabytes mas, graças à evolução do hardware nos últimos anos, é possível trabalhar confortavelmente com arquivos desse tamanho na memória. Um problema que surge é fato dos arquivos serem em formato ASCII, possuindo uma grande quantidade de informação distribuída de maneira não uniforme, o que torna a leitura mais complicada, pois o programa precisa diferenciar o tipo de informação que está lendo a cada passo de sua execução. Depois de uma análise do problema, percebemos que é possível dividir cada arquivo de radar em três partes significativas, que devem ser tratadas diferentemente pela função de leitura – O Nome do Arquivo, o Cabeçalho e a Matriz de Dados. Essas serão descritas nas próximas sessões. 4 Em torno de 360 × 2000 37 3.3 Problema Tabela 3.1: Campos fixos no nome do arquivo Caracteres Significado 1,2 e 3 Origem 4e5 Ano 6e7 Mês 8e9 Dia 10 e 11 Horas 12 e 13 Minutos 14 e 15 Segundos 16 “.”, marcação de fim da Data Tabela 3.2: Campos variáveis no nome do arquivo Caracteres Significado Entre “.” e “km” Raio inicial da leitura, de 1 a 3 casas km Marcação de final de raio inicial Entre “km” e “-” Azimute inicial, de 1 a 3 casas Marcação de final do azimute inicial Entre “-” e “az” Azimute final, de 1 a 3 casas az Marcação de final do azimute final 3.3.1.1 Nome do arquivo O IRIS utiliza um padrão bastante interessante para nomear os arquivos gerados pelo radar. Ele contém dados da Localização, momento da leitura e outras informações úteis para a exibição dos dados. Muitos desses dados não podem ser encontrados em nenhum outro lugar do arquivo, e são, portanto, extremamente úteis para o escopo de nosso trabalho. Nessa seção, utilizamos como exemplo o arquivo PPR070104151526.257km87-100az. Para facilitar a compreensão, transcrevemos essas informações na Tabela 3.1. Arquivos com a matriz inteira costumam ter o nome só até esse ponto, seguindo uma extensão qualquer, como “.txt”. Os demais arquivos (que foram os mais comuns em nosso material de testes) exibem ainda uma extensão dessas informações. Eles são então compostos pelos dados da Tabela 3.1, com as adições da Tabela 3.2. Exemplo O nome do arquivo já exibido, PPR070104151526.257km87-100az, pode ser de- codificado conforme mostra a Tabela 3.3. Sabemos então que ele diz respeito a uma leitura em Presidente Prudente, no primeiro de janeiro de 2007, pouco depois das 15 horas e 15 minutos, e começou no quilômetro 257 (distância do radar). 38 3.3 Problema Tabela 3.3: Exemplo de decodificação do nome de arquivo Caracteres Significado PPR Origem (Presidente Prudente) 07 Ano 01 Mês 04 Dia 15 Horas 15 Minutos 26 Segundos . Marcação de fim da Data 257 Raio inicial da leitura km Marcação de final de raio inicial 87 Azimute inicial Marcação de final do azimute inicial 100 Azimute final az Marcação de final do azimute final Sabemos agora como é codificado o nome do arquivo, mas ainda é interessante estudar o cabeçalho do mesmo para que possamos compreender o tipo de informações que pode ser extraída de lá. 3.3.1.2 Cabeçalho A seguir, apresentamos o cabeçalho do arquivo PPR070104151526.257km87-100az, já exibido na seção 3.3.1.1. ------------- Product Summary for PPR070104151526.RAWMRYJ ------------Ingest site name : ’Sao Paulo,Brazil’, Version: 8.10 Ingest hardware name: ’Sao Paulo,Brazil’ Product site name : ’Sao Paulo,Brazil’, Version: 8.10 File size: 933888 bytes (Disk space: 933888 bytes) Product type is: Raw Data PCO name: SURVEILLANCE, TCO name: SURVEILLANCE PRF: 250Hz, Wavelength: 10.70cm, Nyquist: 6.69m/s(V), 6.69m/s(W) XMT Polarization: Horizontal, Wind:??? Constant:72.74 dB, I0:-112.09 dBm, Cal Noise:-80.92 dBm, Bandwidth:0 kHz. Heights: Radar: 493m, Ground: 473m, Melting: ????m MSL Maximum range: 450.0 km Single sweep #1, Force 8-bit, All data recorded Ingest time: 15:15:26 Volume scan time: 15:15:26 4 JAN 2007 BRT (180 minutes west) 4 JAN 2007 BRT (LT: BRT 180 minutes) Oldest Ing time: 15:15:26 4 JAN 2007 LT Product Gen time: 18:16:08 4 JAN 2007 UTC Input count: 1 Product is not composited. Information from INGEST Header 39 3.3 Problema -----------------------------Site name: ’Sao Paulo,Brazil’, Scan: PPI Full, Task name: ’SURVEILLANCE’ Speed: 9.00 deg/sec, Resolution:1.00 deg Description: ’Surveillance to 450 km’ Location: 22◦ 10.5’S 51◦ 22.5’W, Volume Time: 15:15:26.673 Altitude: 493 meters, Melting height:Unknown 4 JAN 2007 BRT (180 min. west) (LT: BRT 180 min.) Flags: SPT, SPV, 3lag, ship, unfold, fall, block, attn, target PRF: 250Hz, PulseWidth: 1.91 usec (1) BeamWidth: 2.00/2.00 deg. Radar constant: 72.74/72.74 dB, Receiver bandwidth 0 kHz. Calibration I0: -112.09/-104.30 dBm, with noise -80.92/-72.37 dBm. LOG-Noise: 0.1613, Lin-Noise: 0.1613, I-Off: 0.0000, Q-Off: 0.0000 SOPRM Flags: 0x04af, LOG Slope: 0.480, Z-Cal: -39.31dBZ, H/V: 0.00 dB Filters: Dop:2, Log:0; PntClt: 0, Thresh: 0.0 dB; Samples: 32 Processing Mode: FFT Zdr Threshold: LOG GDR = 0.00 dB, T Threshold: LOG LOG = 1.8 dB Z Threshold: LOG & CSR SIG = 5.0 dB V Threshold: SQI & CSR CSR = 18.0 dB W Threshold: SIG & SQI & LOG SQI = 0.50 XDR = 0.00 dB Available moments are: dBT dBZ V W Original moments were: dBT dBZ V W Starting range 1.000 km, range bin spacing 250 meters There are 1 sweeps, each having 360 rays and 1797 bins Angle list: 0.3 This RAW product contains only sweep #1. What parameter do you wish to display? Sorry, unrecognized parameter, try again: What parameter do you wish to display? Do you want just performance information? Enter starting range in km: Sweep began at: 15:15:26 4 JAN 2007 BRT Com uma leitura rápida, é fácil perceber que o cabeçalho possui uma série de informações relevantes ao teor de nosso trabalho. Dessas, as mais importantes são apontadas a seguir. Starting range 1.000 km, range bin spacing 250 meters Dessa linha, notamos que cada uma das leituras do radar é feita com um incremento de 250 metros de raio em relação à medida anterior. Percebemos também que o primeiro quilômetro de leituras não é computado nos dados. Na linha seguinte, temos outra informação valiosa: There are 1 sweeps, each having 360 rays and 1797 bins É possível saber que temos apenas uma tabela de dados no arquivo (1 sweep, ou seja, apenas uma leitura do radar), que ela tem 360 linhas (ou seja, o radar disparou 360 feixes de rádio), e que tem 1797 colunas (em outros termos, significa que o radar separou as leituras em 1797 intervalos de tempo, e, diretamente, distâncias). 40 3.3 Problema Percebemos que informações relevantes, como número de colunas e linhas, ou distância inicial da leitura, são omitidas nesse cabeçalho. Para essas informações, a Seção 3.3.1.1 nos mostra uma alternativa bem mais aceitável. Outro motivo que nos desencoraja o estudo do cabeçalho é a grande quantidade de informações técnicas encontradas. Cada arquivo tem uma coleção de dados sobre a calibragem do equipamento e outros fatores que fogem ao escopo de nosso trabalho. 3.3.1.3 A Matriz de dados O arquivo gerado pelos radares do IPMet possuem, como já mencionado, um cabeçalho de dados, mas a maioria dessas informações só é significativa nas mãos de técnicos de radar, pois tratam de aspectos relacionados à calibragem e configuração do aparelho. Para os estudiosos das informações observadas pelo radar, é mais interessante o foco nos dados da leitura. Esses dados só se iniciam depois de um cabeçalho de tamanho variável que, para nosso estudo, deve ser desconsiderado da leitura. É necessário então entender exatamente onde terminam os cabeçalhos e começam os dados. A seguir, vemos exemplos da transição do cabeçalho para a matriz onde estão os dados. Omitimos os dados, pois uma única linha da tabela poderia ocupar várias páginas. Eles estão disponíveis no CD que acompanha esse texto, cujo conteúdo está referenciado no Anexo B. Exemplo Leitura do arquivo PPR070126014527.51km256-285az Sweep began at: 01:45:27 26 JAN 2007 BRT # 0 Az: 359.34, Exemplo 0.51 El: 0.35, 0.31 Size:1797 1:46:06 Leitura do arquivo BRU070126014508.292km271-279az Sweep began at: 01:45:08 26 JAN 2007 BRT # 0 Az: 359.37, 0.53 El: 0.31, 0.33 Size:1797 1:45:35 Como a linha iniciada por # é uma espécie de cabeçalho de cada linha de dados (omitida nesses exemplos), percebemos que a primeira linha a ter informações relativas aos dados começa logo após a linha iniciada por “Sweep began at:” Percebemos também que nenhuma linha do exemplo de cabeçalho começa com o caractere #. Isso pode ser constatado para todas as linhas, observando o cabeçalho completo já exibido na 3.3 Problema 41 Subseção 3.3.1.2. Sem grandes dificuldades, pode-se bolar um algoritmo para que a leitura do arquivo só seja iniciada nesse ponto, bastando posicionar a cabeça de leitura na primeira linha iniciada pelo caractere “#”. Então, nos resta entender como fazer a leitura da matriz dos dados propriamente dita. Primeiro, notemos que a linha “# 0 Az: 359.37, 0.53 El: 0.31, 0.33 Size:1797 1:45:35” pode ser decodificada facilmente. São-nos interessantes apenas os termos iniciais “0 Az: 359.37”. Desses, o número “0” representa o índice da matriz (no campo dos azimutes), enquanto o número “359.37” é o azimute da leitura que vamos tratar. Terminada a obtenção dos dados a respeito do conteúdo da linha, devemos iniciar a leitura das informações por ela contida. Os valores são formatados de maneira bem simples: as linhas te dados são compostas por seqüencias de palavras entre 3 e 5 dígitos (incluindo também os símbolos “.” e “-”), separadas por espaços ou caracteres diferentes de “#”. Nosso software deve ler essas linhas, colocando os dados de cada uma das palavras na coluna respectiva da tabela de dados. Não existe padrão para a quantidade mínima e máxima de colunas da tabela, apesar de termos um limite teórico de 1800 colunas para as leituras, o que equivaleria a 450 km em condições padrão. Também não existe necessidade de que exista o mesmo número de colunas por linha, pois muitos cortes reduzem o intervalo de azimutes estudado. Por outro lado, é necessário manter a ordem das colunas durante a leitura. Isso pode ser feito simplesmente retornando a cabeça de escrita para a coluna inicial já conhecida devido aos cabeçalhos do arquivo. A leitura continua até que seja encontrado o final do arquivo ou um erro na formação dos dados. Podemos então partir para a segunda fase de nosso projeto, que é a exposição das informações do arquivo em formato inteligível. 3.3.2 Requisitos Já conhecemos o tipo de informação que precisamos ler do arquivo. Devemos agora definir exatamente quais são os objetivos de nosso sistema no que diz respeito à interface e utilização. Para isso, temos como base o software IRIS. Em nosso estudo, tivemos contato apenas com screenshots5 do IRIS, o que não nos possibilitou conhecer a fundo todas suas funções. Utilizamos então informações sobre como os dados eram utilizados por pesquisadores, com a intenção de criar uma ferramenta que facilitasse esse 5 Capturas de telas ou fotos de um software em funcionamento 42 3.3 Problema tipo de uso. 3.3.2.1 Exibição dos dados No IRIS, a exibição básica dos dados é feita nos modelos do PPI, já explicado no item 2.5. Significa que devemos projetar os dados da matriz utilizando coordenadas azimutais em um espaço basicamente cartesiano. Para isso, tivemos de primeiro converter as coordenadas azimutais em coordenadas polares, e por fim, transformá-las em pares no plano cartesiano. A equação 3.1 ensina como calcular as coordenadas polares a partir das coordenadas azimutais (uma simples conversão de azimutes para graus), enquanto o sistema 3.2 nos mostra como proceder para encontrar o par (x, y) de coordenadas cartesianas. Θ = 90 − Φ x = r · cos Θ (3.1) (3.2) y = r · sen Θ r é o raio (distância em relação ao radar), em colunas. Θ é o ângulo, em graus. Φ é o azimute, em graus. (x, y) é o vetor de coordenadas do plano cartesiano. Assim, basta que implementemos uma função em nosso programa que varra a matriz de dados e imprima na tela, em PPI, os dados encontrados. Claro, seria muito difícil ler esses dados em valor numérico, por isso, utilizamos a escala de cores mencionada na Tabela 2.2. Outro ponto importante é que nosso visualizador seja semelhante ao do IRIS, para maior conforto dos usuários que já estejam habituados ao sistema. O IRIS possui uma série de informações bastante úteis, como marcadores de distância e azimute, como mostra a Figura 3.1. Seria pouco prático se nosso programa não fosse capaz de reproduzir essas funções. Dessa forma, garantimos que nosso sistema é semelhante, pelo menos visualmente, ao que os cientistas estão acostumados a trabalhar. Com as decisões básicas do design tomadas e com 43 3.3 Problema Figura 3.1: Screenshot do IRIS a idéia do mecanismo por trás da exibição do PPI, devemos agora nos concentrar em tornar o sistema fácil de compreender e usar pelos pesquisadores da área. 3.3.2.2 Interatividade Não seria possível utilizar o programa de maneira produtiva, caso não houvesse funções especiais desempenhadas em resposta às ações do usuário. Em nosso sistema, a maior parte dessa interatividade é feita com o uso do mouse. Para facilitar a visualização das informações do PPI, optamos pelo uso de um mostrador que apresente os dados relativos à posição do ponteiro do mouse, ou seja, distância e azimute em relação ao radar, além valor da leitura no ponto escolhido. Com isso, o usuário pode obter exatamente as informações de um ponto da circunferência, sem necessitar de aproximações intuitivas. Decidimos também que utilizaríamos o recurso de clicar e arrastar para selecionar zonas especiais de nossa exibição. As ações que escolhemos para o nosso sistema foram as seguintes: • Ampliar: Amplia a projeção atual para que se foque nos dados do retângulo de seleção escolhido pelo mouse. Útil para estudar detalhes. 3.4 Implementação 44 • Visualizar Setor Circular: Amplia a projeção atual num Setor Circular escolhido pelo mouse, tornando o resto da amostragem invisível. Útil para se estudar partições dos dados de maneira isolada. • Visualizar Corte: Cria um gráfico escalar da linha reta entre dois pontos escolhidos pelo mouse. Bastante importante para o estudo do perfil dos dados. • Visualizar Formato Numérico: Mostra os dados de maneira numérica, em uma tabela, centrada no ponto escolhido pelo mouse. Especialmente útil para visualizar informações precisas sobre uma dada posição. • Arrastar Projeção: Serve para deslocar a projeção, de modo que seja possível esturar os demais dados sem a necessidade de fazer uma nova seleção. Além disso, também foram definidos alguns comandos com o teclado, para maior comodidade dos usuários. As mais importantes são listadas logo abaixo: • ESC: retorna o programa para um estado anterior. Dessa forma, é possível alternar rapidamente entre dois tipos de visualização de informação. • c: altera rapidamente a opção de quantidade de cores do PPI de maneira circular. • q: altera rapidamente a opção de qualidade da exibição do PPI de maneira circular. • u: alterna rapidamente entre as unidades de medida da projeção (milhas e quilômetros). 3.4 Implementação Definimos os problemas iniciais e as propostas para que o software fosse construído, e agora resta a programação do sistema. Em nossa busca por encontrar as ferramentas ideais para a implementação do projeto, tivemos de fazer duas escolhas importantes. A primeira escolha diz respeito à API gráfica que usaríamos. Escolhemos o OpenGL por ser leve e de fácil portabilidade, existindo sua implementação em várias arquiteturas distintas. Como uma camada de abstração para facilitar a criação de janelas e o uso de comandos do teclado e do mouse, escolhemos pela biblioteca GLUT, pelas mesmas facilidades do OpenGL. O GLUT é uma coleção de rotinas que visa simplificar a programação de projetos em computação gráfica, e é distribuído gratuitamente na internet, além de possuir uma documentação bastante farta. 45 3.4 Implementação Munidos da API, restava escolher a linguagem. Por sorte, o OpenGL e o GLUT foram portados para muitas linguagens diferentes. Optamos pelo C++, por ser uma linguagem moderna e praticamente uma linguagem comum entre os cientistas da computação. Essa escolha foi importante não só pelas poderosas capacidades da programação orientada a objetos, mas pela facilidade de encontrar programadores da mesma, de forma a tornar o código fonte acessível a uma parcela maior de desenvolvedores. Também optamos por fazer uma ferramenta de código aberto, pois é interessante que o sistema continue a evoluir conforme surgirem novas necessidades ou tecnologias. Também outros desenvolvedores poderão fazer suas modificações, garantindo uma vida mais longa para nosso trabalho. Feitas essas colocações, é hora de entender os conceitos básicos de nossa implementação. 3.4.1 As janelas Decidimos por implementar o sistema utilizando não somente uma, mas duas janelas diferentes. Muitas vezes, o usuário só está interessado na tela do PPI, e não se incomoda em não observar os dados relativos ao local ou momento exato de um evento estudado. Utilizamos as capacidades nativas do GLUT para gerar as duas janelas, definindo separadamente os controles de cada uma delas. Na janela principal, temos as projeções propriamente ditas. A tela inicia com o PPI do arquivo, apontado na inicialização, mostrada na Figura 3.2, e contém as seguintes informações: Figura 3.2: Janela PPI 46 3.4 Implementação • Projeção colorida da matriz de dado, em coordenadas azimutais. • Mapa do estado de São Paulo e vizinhanças, centrado na localidade do radar em questão. • Escala de distância e azimute (variando a distância entre quilômetros e milhas). • Um quadro mostrando qual a posição atual do ponteiro do mouse (distância e azimute em relação ao radar), bem como o valor da leitura na região apontada (em dBZ). Além dessas informações, podemos escolher, via botão direito do mouse, duas outras opções de visualização: observar os números diretamente (por uma tabela, como na Figura 3.3) ou observar o gráfico da variação dos valores das medidas em um mesmo ângulo ou distância, exemplificado pela Figura 3.4. Figura 3.3: Valores numéricos Na segunda janela, temos informações importantes para a identificação do arquivo. Em nosso sistema, incluímos, seguindo o padrão do IRIS, o Lugar, Data e Hora em que foi realizada a leitura que estamos exibindo. Também optamos por exibir uma escala das cores que utilizamos para representar cada variação de dBZ, como podemos ver na Figura 3.5. Em nossa implementação, optamos por utilizar as mesmas 32 cores que o IRIS possui. Para deixar que o usuário escolha como deve ser feita essa impressão. Existem opções para outros modos de cores (com menos ou mais cores, além do padrão de brilho utilizado antes dos computadores modernos) e também outros modos para decidir que tipo de transição deve existir entre as leituras do radar no PPI (dégradé suave, transição brusca ou pontos, utilizados por alguns programas). 47 3.4 Implementação Figura 3.4: Gráfico da variação em um dado corte Figura 3.5: Janela de informações 3.5 Consideraçõs finais 3.4.2 48 Interatividade Decidimos manter nossa solução baseada mais no uso do mouse que no do teclado. Essa escolha foi feita para evitar que o usuário tenha que aprender vários comandos e teclas de atalho. Em qualquer tela do programa, quando o usuário clica com o botão direito do mouse, surge um menu com as opções relativas ao que ele pode fazer em dado momento. Na janela de projeção, ele pode alterar a forma como os dados são apresentados. Quando essas opções são escolhidas, normalmente o usuário deve clicar com o botão direito e arrastar o ponteiro, de forma a escolher a partição de dados que gostaria de observar. Na tela de informações, o usuário tem um menu para alterar as opções de exibição, como quantidade de cores, qualidade da imagem e outras características do software. Na tela de informações, também são exibidos os atuais valores de cada uma dessas opções, para que o usuário possa escolher com mais facilidade. 3.5 Consideraçõs finais Nesse capítulo, falamos sobre os problemas que nos motivaram à realização desse projeto. Propusemos-nos a criar um software livre que pudesse realizar algumas funções do IRIS, um sistema não-livre e bastante caro. Nos aprofundamos no estudo dos arquivos de radar gerados pelo software da Sigmet, que foram o principal foco de estudo durante a implementação de nosso sistema. Também discutimos brevemente as transformações de coordenadas necessárias para que nosso sistema pudesse funcionar corretamente. Por fim, falamos sobre nosso produto final, um visualizador de dados de radar utilizando OpenGL e C++. Comentamos sobre nossas escolhas em relação à interface e interatividade, e mostramos algumas capturas de tela do resultado final. 49 4 Testes e exemplos “Nada é impossível para aquele que tenta.” Alexandre o Grande Nesse capítulo discutimos o produto final de nosso trabalho e também os resultados obtidos com sua construção. Apresentamos detalhes que nos levaram a modificações e novas abordagens durante o período inicial de testes, e explicamos por que algumas decisões de modelagem foram tomadas. Abordamos cada uma das principais funções do software desenvolvido, incluindo uma comparação com o IRIS. 4.1 Explicações necessárias Antes de iniciarmos a apresentação de nossos resultados, devemos dar detalhes sobre as condições onde o software foi testado. Isso inclui a máquina onde foi executado, o sistema operacional, e também quais foram os arquivos necessários para o software pudesse ser executado sem problemas. Apresentamos, ainda, informações sobre as leituras de radar que utilizamos em nosso exemplo, para que os testes possam ser repetidos por usuários futuros. Nosso sistema foi desenvolvido utilizando a linguagem C++. Utilizamos a IDE Bloodshed Dev-C++ versão 4.9.9.2 em todo o processo de programação, aliada ao compilador GCC versão 3.4.2. Também utilizamos uma série de bibliotecas disponíveis naturalmente junto ao GCC, a C++ STL (Standard Template Library), para facilitar o desenvolvimento. A API OpenGL, em sua versão 2.1, foi largamente utilizada no projeto, sendo a base de todas as projeções. Também utilizamos, em menor escala, a biblioteca GLU (OpenGL Utility Library) versão 1.3, e, em maior escala, a biblioteca GLUT (OpenGL Utility Toolkit) versão 3.7. O GLUT foi muito importante em nosso trabalho, responsável pelo controle de entrada do mouse e teclado, bem como das janelas. Além disso, utilizamos as bibliotecas ZLIB versão 1.2.3, libJPEG versão 6b e libTIFF 50 4.2 Comparação Máquina Processador Memória RAM Video S.O. Disco Rígido Tabela 4.1: Máquinas usadas Desktop 1 Notebook Athlon XP 1800+ Athlon XP 3400+ 512mb 256mb GeForce4 Ti4200 GeForceGo6150 Windows 2003 Windows XP 286gb 40gb Desktop 2 Pentium III 700mhz 128mb Intel i810 8mb Windows 98 SE 10gb Tabela 4.2: Arquivos utilizados Nome do Arquivo BRU040107170009 BRU060826200000 BRU061015164507 (RINEHART, 1997) versão 3.6.1 para realizar as funcionalidades relacionadas com salvar a amostra em formato de imagem. O executável é um arquivo único, com pouco mais de 1,2 megabytes. No Windows, são necessários que os seguintes arquivos estejam na pasta System32 do diretório onde o sistema foi instalado ou no diretório do executável do programa: libtiff3.dll, jpeg62.dll, zlib1.dll, opengl32.dll, glu32.dll, glut32.dll. Esses arquivos são relacionados às bibliotecas que utilizamos em nosso software. Utilizamos três computadores diferentes para validar nosso projeto, de forma a minimizar a chance de erros e localizar problemas relacionados com portabilidade. As máquinas utilizadas para os testes possuíam as características apontadas na Tabela 4.1. Elas possuem características bem distintas, para assegurar que o sistema pode ser executado em máquinas mais modestas e nas mais modernas sem grandes diferenças de desempenho, mantendo resultados coerentes. Em nossos testes, utilizamos os arquivos listados na Tabela 4.2, que contém leituras de radar. O funcionamento e formatação desses arquivos foram devidamente tratadas na seção 3.3.1. 4.2 Comparação Nessa primeira fase de nossos testes, tratamos da validação de um dos objetivos iniciais propostos pelo projeto: a semelhança com o software IRIS, no qual baseamos parte de nosso sistema. Fazemos uma comparação entre as visualizações (PPI) geradas por ambos os programas, com comentários relevantes a cada situação apresentada. 51 4.2 Comparação 4.2.1 Esclarecimentos O IRIS mostra o PPI e as informações sobre a leitura em uma única janela. Em nosso estudo, percebemos que muitas vezes a sub-janela de informações sobre a leitura nem sempre é tão importante quanto a amostragem dos dados e, por isso, optamos pelo uso de duas janelas diferentes, de forma que o usuário possa rapidamente se desfazer da janela de informações se essa não o interessar. Também devemos salientar que nosso padrão de cores foi baseado no padrão utilizado por uma série de capturas de tela do IRIS em funcionamento. Em alguns dos exemplos, o usuário alterou o padrão do IRIS de forma a enfatizar algum dado da leitura. Optamos por não alterar nosso padrão de maneira semelhante, para facilitar a interpretação e comparação entre nossas próprias capturas. 4.2.2 PPI inicial O evento dessa primeira comparação é de uma leitura feita pelo radar de Bauru, em 26 de agosto de 2006, às 20 horas. É uma leitura com alcance de 450km, e é interessante por possuir área bem grande de precipitações. A Figura 4.1 é o PPI gerado IRIS, acompanhado das informações relevantes. O padrão das cores está levemente alterado, como mencionado na seção 4.2.1, tendendo mais para o verde, enquanto nossa exibição tende mais para o amarelo. Essa divergência não é um erro, e sim, uma variação das capacidades de exibir os dados. Figura 4.1: Imagem do IRIS 52 4.2 Comparação Nosso PPI e os dados são apresentados na Figura 4.2, e pode-se notar que as informações são válidas, tomado como parâmetro o IRIS. A diferença no formato das precipitações deve-se ao fato que o IRIS só começa a exibir os dados acima de 15 dBZ, enquanto nosso software exibe informações desde -12.5 dBZ. Podemos argumentar que, nesse exemplo, nossa leitura é, de fato, mais precisa que a do IRIS, apesar de normalmente informações abaixo de 0 dBZ não serem tão úteis quanto as informações acima dos 20 dBZ (RINEHART, 1997). Figura 4.2: Nosso sistema Um detalhe ausente em nosso sistema é o detalhamento topográfico do mapa do estado de São Paulo, como podemos ver na Figura 4.1. Essa opção não prejudica de forma considerável o estudo dos dados, mas poderia ser considerada para um trabalho posterior. Em muitas fotos, o IRIS não usa o mapa, como por exemplo, na Figura 4.3. Outra diferença bastante marcante que pode ser considerada como um avanço de nosso sistema em relação ao IRIS é o marcador de posição do ponteiro do mouse. É o pequeno conjunto de dados do lado esquerdo da tela, que informam sobre qual a distância do radar e o azimute do ponto apontado no PPI, bem como o valor da leitura naquela posição. Essa pequena melhoria é útil para encontrar rapidamente as informações, sem ser necessário aproximar mentalmente os dados. 53 4.3 Exibição das funções Figura 4.3: IRIS sem topografia 4.3 Exibição das funções Nossos testes não poderiam estar completos sem que fosse realizada uma análise mais aprofundada de suas capacidades. Como parte de nosso processo de validação do software, exibimos suas funcionalidades do e dos detalhes que nos levaram a escolher uma ou outra abordagem durante a fase final do desenvolvimento. Também fazemos uma revisão nos métodos de saida e manipulação de dados que programamos em nosso sistema, com as devidas explicações para cada uma de nossas escolhas. No Capítulo 3, relatamos as diferentes maneiras implementadas em nosso sistema pelas quais é possível exibir os dados obtidos pelas leituras do radar meteorológico. Apesar de nosso principal foco ter sido o PPI simples, padrão na maioria dos sistemas estudados, nós também exibimos gráficos escalares e a planilha dos valores numéricos, opções bastante úteis para um estudo mais focado de uma região ou evento. 4.3.1 Salvando em texto Uma das características mais importante de nosso sistema é sua capacidade de salvar partições dos dados de radar meteorológico exibidos num formato que permita sua re-interpretação pelo sistema. Nosso programa consegue salvar no formato do IRIS os dados de qualquer leitura bem 54 4.3 Exibição das funções construída que possa ser exibida sem problemas. O processo, no entanto, requer uma condição especial – o usuário deve estar visualizando os dados na forma de Corte da Seção Circular, Gráfico Escalar ou a grade de valores numéricos. Esse teste envolve as operações de selecionar, salvar e abrir os arquivos salvos. Em todos os exemplos, utilizamos o arquivo de saída. TIFF para as capturas de tela. 4.3.1.1 Fatia Nessa sub-seção, fazemos o teste de salvar como arquivo de texto os dados de uma partição selecionada de um PPI gerado pela interpretação do arquivo BRU070225140101, como mostra a Figura 4.4. Figura 4.4: Primeiro evento Na Figura 4.5, temos a seleção da partição, iniciando no raio 72km em relação ao radar (ou range) até o raio 115km, no intervalo entre os azimutes 79 e 88. Esse arquivo será salvo utilizando a função de salvar como texto de nosso software. Por fim, temos a exibição sem ampliação de todo o PPI, tela inicial de nosso software, na Figura 4.6. Esse resultado foi obtido utilizando o arquivo salvo anteriormente como arquivo de entrada. Podemos observar que nosso sistema suporta a leitura de arquivos que ele mesmo gerou. 55 4.3 Exibição das funções Figura 4.5: Corte do PPI Figura 4.6: Arquivo do corte aberto 56 4.3 Exibição das funções 4.3.1.2 Valores numéricos Vamos apresentar um teste agora utilizando os valores numéricos de uma seleção do arquivo BRU070316133101. Podemos observar o arquivo completo na Figura4.7. Figura 4.7: Segundo evento A grade numérica apresentada na Figura 4.8 é semelhante à captura de tela da Figura 3.3, mas optamos por utilizar outro padrão de cores (uma das opções do software) para facilitar o reconhecimento dos dados. Nosso teste termina com o uso do arquivo gerado como entrada. Na Figura 4.9, podemos ver o quão pequenos são o intervalo de pouco mais de 7 km que apresentamos na tela anterior, quando exibidos em um PPI. 4.3.1.3 Gráfico Como último teste, exibimos o gráfico relativo ao corte fixo no azimute 246, dos raios 77 km até 230 km. A Figura 4.10 e o PPI do arquivo BRU040107170009. Vemos então o gráfico na Figura 4.11. As cores estão diferentes do gráfico apresentado na Figura 3.4 apenas para podermos mostrar a função de alteração de cores de nosso sistema. 57 4.3 Exibição das funções Figura 4.8: Valores numéricos exibidos Figura 4.9: Reimpressão dos valores 58 4.3 Exibição das funções Figura 4.10: Terceiro evento Figura 4.11: Gráficos dos valores 4.4 Desempenho e soluções encontradas 59 Para finalizar os testes para salvar como texto, resta abrir o arquivo gerado utilizando nosso sistema. Podemos ver o resultado na Figura 4.12. Figura 4.12: Reimpressão da reta Podemos concluir que os testes de imagens funcionaram com os três exemplos propostos. Melhor que isso, os arquivos gerados são compatíveis com os arquivos do IRIS, o que é uma vantagem. Numa versão posterior, poderia ser implementada a capacidade de salvar esses arquivos em formatos diferentes. 4.4 Desempenho e soluções encontradas Nos primeiros testes que realizamos com o software, notamos uma lentidão considerável ao abrir arquivos cujo alcance da leitura fosse superior a 100km. Na verdade, é fácil entender o problema. Cada arquivo na verdade deve ser considerado como uma matriz de azimute × distância do radar, como já mencionado na Seção 3.3.1.3. Cada um desses pares é associado a coordenadas (x, y) no plano cartesiano, que são utilizadas pelo OpenGL. Além disso, cada par (r, θ) também é associado a um valor real, que é a intensidade, em dBZ, da leitura naquele ponto. O problema dessa interpretação é que uma matriz com 360 azimutes e 2000 intervalos de 4.5 Considerações finais 60 distância ocuparia quase 8MB na memória. É uma quantidade muito grande de dados para se exibir de forma vetorial. Descobrimos que o tempo entre as atualizações de tela do OpenGL eram de mais de 1 segundo, inaceitável para um software que não realiza operações complexas. Uma abordagem diferente foi utilizada. Analisando com cuidado as capturas de tela do IRIS, notamos que ele não parecia mostrar os dados em intervalos de 250m, mas em intervalos de quase 1km. Resolvemos utilizar uma solução semelhante. Optamos por criar uma nova matriz, com metade dos valores dos raios. Como opção de desenvolvimento, o sistema atribui o maior valor entre duas leituras adjacentes para um único valor da tabela simplificada. Com isso, passamos de 2000 valores em cada azimute para 1000 valores. O ganho em velocidade foi de mais de 50%, e não houve perda considerável na qualidade do PPI. Como teste, reduzimos ainda mais uma vez esse valor, para 500 valores por azimute, obtendo um resultado bem mais interessante, com redução pouco significativa da qualidade da exibição. Decidimos, porém, implementar uma opção para que o usuário possa decidir entre qual das 3 versões usar. Aumentos progressivos da distância mínima (oito ou 16 vezes maior) se mostraram ainda mais rápidos, mas a qualidade do PPI ficou bastante degradada. Optamos por deixar esses valores fora do software devido a esse problema. Na versão final, o sistema consegue operar com leituras de 450 km com um intervalo mínimo de atraso. 4.5 Considerações finais Nosso sistema pretendia mimetizar algumas das características visuais do IRIS, e nossos testes mostram que fizemos um grande avanço nesse setor. Restam ainda algumas funcionalidades do programa não-livre, como capacidade de exibir mais de uma leitura ao mesmo tempo, ou ainda, de fazer animações com a progressão dos eventos pelo tempo. Além disso, nosso software mostrou ser capaz de manipular os dados e salva-los de maneira que continuem compatíveis com os dados de leitura de radar gerados pelo IRIS. Essa característica é bem importante, e poderia ser explorada futuramente para a geração de outros formatos de saída, para que os pesquisadores possam utilizar vários softwares para fazerem suas análises numéricas. Também estudamos o problema de desempenho com o qual lidamos até uma fase avançada 4.5 Considerações finais 61 de nosso projeto, e mostramos a solução apresentada. As idéias poderiam ser melhor ainda aproveitadas, gerando mais comodidade ao usuário final. 62 5 Conclusões “A vitória pertence aos mais perseverantes.” Napoleão Bonaparte Devido à importância da meteorologia, foram desenvolvidos vários meios de estudar os fenômenos climáticos. Um deles foi o uso de radares para o estudo de precipitações, que pode dar informações importantes sobre o regime de chuvas de uma região. Um dos problemas gerados pelo estudo dos dados das leituras do radar é a visualização dos mesmos. Apesar dos estudos nas formas de apresentar esses dados serem bastante avançados, ainda existem carências no que diz respeito aos softwares utilizados para tal fim. Esse problema foi bem explorado no Capítulo 2. Este trabalho oferece um software livre que permite visualizar dados oriundos dos radares do Sigmet. 5.1 O projeto O Projeto na construção do software para visualizar dados de radar meteorológico usando OpenGL foi concluído com sucesso. Ele dispõe de todas as funcionalidades requeridas em nossa primeira análise de requisitos, e pode ser utilizado por pesquisadores da área. Foi importante para nos ensinar mais sobre OpenGL e sobre C++, além de ter nos ensinado bastante sobre administração de código. A versão final do código fonte tem cerca de 8 mil linhas, totalmente formatadas e documentadas para facilitar manutenção futura. Os testes mostraram que as funcionalidades foram atingidas. O resultado pode ser utilizado profissionalmente, como ferramenta de auxilio aos estudos dos dados dos radares. 5.2 Futuro 5.2 63 Futuro Apesar de nosso sistema já estar maduro o suficiente para ser utilizado por pesquisadores, ele ainda não está completo. Faltam-lhe algumas capacidades que, se implementadas, poderiam torná-lo uma ferramenta realmente poderosa para cientistas. Não foram implementadas funcionalidades para abrir e fechar arquivos utilizando os diálogos do sistema operacional; impressão em papel seria bem vinda. A adição ao suporte de mais formatos de arquivos seria de todo uma boa aquisição para as capacidades do software. Pelo fato do código do sistema ser aberto, isso permitirá que desenvolvedores futuros adicionem funcionalidades extras para o software, conforme seja necessário ao seu campo de trabalho. 64 ANEXO A -- Manual do Software Esse anexo é um pequeno manual para o software desenvolvido pelo projeto. A.1 Abrir o arquivo Para abrir um arquivo de radar, basta seguir um desses dois passos: Linha de Código Em linha de código, vá para a pasta onde está o arquivo bolacha.exe, e digite: bolacha.exe "caminho do arquivo de radar" Onde “caminho do arquivo de radar”1 (sem aspas) pode incluir diretórios. Arrastar e Soltar Arraste o ícone do arquivo de dados de radar para cima do ícone do programa bolacha.exe, e solte o botão do mouse. A.2 Tela inicial A tela inicial exibe a projeção completa do arquivo de radar. A partir desta tela, podemos ter acesso a todas as funções do programa. Em arquivos muito grandes, o programa pode se tornar lento. Isso ocorre devido ao grande número de pontos necessários para que a projeção seja feita de forma correta. Existe uma segunda janela, com dados e informações sobre a leitura. É possível melhorar o desempenho diminuindo a qualidade dos gráficos. Na tela inicial, existe uma escala (em quilômetros ou milhas), cuja função é orientar o usuário. No canto inferior esquerdo da tela, existe um quadro negro que mostra, dada a posição 1 Nota do Desenvolvedor: O programa só aceita dados de radar IRIS, no formato de texto padrão. Para que seja possível utilizar o Mapa e o posicionamento correto do raio inicial, é recomendado que o arquivo de radar tenha o formato apresentado na Seção 3.3.1.1 da monografia. 65 A.3 Menu do ponteiro do mouse, os valores do raio e ângulo azimutal (em relação ao radar, no centro) e o valor da refletividade em dBZ. Esse valor é atualizado conforme o cursor do mouse for movido. Devido aos problemas da biblioteca GLUT, se os valores não estiverem se atualizando, basta clicar com o botão esquerdo do mouse em qualquer parte da tela do programa. Nessa tela, é exibido um mapa simplificado do estado de São Paulo e seus estados vizinhos, além da localização de algumas cidades.2 A.3 Menu O menu é acessado pelo clique do botão direito do mouse em qualquer ponto da tela do programa. A.3.1 Menu principal Ampliar Amplia a imagem do PPI. Visualizar→ Sub-menu de Visualização. Voltar Retorna à tela inicial. Salvar→ Sub-menu de Salvar. Sair Sai do programa. A.3.2 Sub-menu “Vizualizar” Corte→ Sub-menu Corte. Setor Circular Seleciona um setor circular do PPI. Deslocar Bolacha Desloca o centro do PPI para outra posição. Valores Numéricos Mostra a grade de números. 2 Nota do Desenvolvedor: Fica a cargo de futuros desenvolvedores a implementação de um mapa mais preciso, bem como a presença de mais cidades. É um processo simples, porém braçal, e leva muito tempo. A.4 Menu de opções A.3.3 66 Sub-menu “Gráfico Escalar” Intervalo Angular Gráfico por variação de azimute. Intervalo Radial Gráfico por variação de raio. A.4 Menu de opções Fundo e Texto (Gráficos e Números) Altera as cores dos dados Qualidade do Display Controla interpolação de cores. Quantidade de Cores Define padrão das cores usadas. Sistema de Unidades Quilômetros ou Milhas. Distância entre Leituras Precisão da impressão. A.5 Telas Vamos agora explicar cada uma das telas do programa. A.5.1 Tela ampliada Na tela ampliada, o mouse funciona de maneira idêntica à na tela inicial, incluindo o menu. A única diferença é que agora é possível deslocar o mapa utilizando as teclas direcionais do teclado. Isso é muito útil para varrer uma região em busca de informações. A.5.2 Tela de corte Na tela de corte, o mouse funciona de maneira idêntica à na tela inicial, incluindo o menu. A única diferença é que agora é possível deslocar o mapa utilizando as teclas direcionais do teclado. Isso é muito útil para varrer uma região em busca de informações. Além disso, todas as informações fora da área de corte são escondidas, para que seja mais fácil analisar os dados. 67 A.5 Telas A.5.3 Tela de gráfico escalar A tela de gráfico escalar não se beneficia de nenhum menu, apesar de estarem disponíveis. Ela se beneficia do teclado da mesma forma que as outras telas ampliadas, ou seja, os direcionais alteram as unidades. A.5.4 Tela dos dados numéricos Essa tela imprime os valores dos dados numéricos, e é possível usar o teclado para alterar o foco da tela, utilizando as teclas direcionais. O mouse nessa tela não tem funções, e o menu não tem toda a funcionalidade. 68 ANEXO B -- Conteúdo do CD Um CD acompanha essa monográfia, contendo os seguintes arquivos: binario.rar Executável do programa. codigo.rar Código fonte do programa. monografia.pdf Esse texto, em sua integridade. requisitos.rar Arquivos de pré-requisitos e bibliotecas necessárias para o uso do software. exemplos.rar Eventos para testar o software. 69 Referências ABER, R. Social and Economic Benefits of Weather Services: Assessment Methods, Results and Applications’ in WMO. Econorra’c and Social Benefits of Meteorological and Hydrological Services, v. 1, p. 26–30, 1990. ANGELIS, C. F. et al. Rede de radares meteorológicos: ação conjunta decea - inpe/cptec. CONGRESSO BRASILEIRO DE METEOROLOGIA, XIV - (CBMET), 2006. ANTÔNIO, M. A. Técnica de ajuste em tempo real de medidas de chuva com radar. Tese (Doutorado) — "Universidade Estadual Paulista, Faculdade de Ciências Agronômicas"UNESP, 1998. ATLAS, D. E. Radar in meteorology. American Meteorological Society, 1990. DEITEL, H.; DEITEL, P. C++ how to program. [S.l.]: Prentice Hall Upper Saddle River, NJ, 1998. DREBIN, R.; CARPENTER, L.; HANRAHAN, P. Volume rendering. ACM SIGGRAPH Computer Graphics, ACM Press New York, NY, USA, v. 22, n. 4, p. 65–74, 1988. EBERT, D.; MUSGRAVE, F. Texturing and Modeling: A Procedural Approach. [S.l.]: Morgan Kaufmann, 2003. ECKEL, B. Thinking in C++. [S.l.]: Prentice-Hall, Inc. Upper Saddle River, NJ, USA, 1995. ENGEL, K.; KRAUS, M.; ERTL, T. High-quality pre-integrated volume rendering using hardware-accelerated pixel shading. Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware, ACM Press New York, NY, USA, p. 9–16, 2001. FOLEY, J. Computer Graphics: Principles and Practice. [S.l.]: Addison-Wesley Professional, 1995. HAASE, H. et al. Meteorology meets computer graphics-a look at a wide range of weather visualisations for diverse audiences. Computers and Graphics, Elsevier Science, v. 24, n. 3, p. 391–397, 2000. HEARN, D.; BAKER, M. Computer graphics: C version. [S.l.]: Prentice-Hall, Inc. Upper Saddle River, NJ, USA, 1996. JOHNSON, R. C. Airline flights get less turbulent. eetimes.com, 9 2007. JOSS, J.; WALDVOGEL, A. Radar in Meteorology. Proc. Battan Memorial and 40th Anniversary Radar Meteorol. Conf, p. 577–606, 1990. Referências 70 KAJIYA, J.; HERZEN, B. V. Ray tracing volume densities. Proceedings of the 11th annual conference on Computer graphics and interactive techniques, ACM Press New York, NY, USA, p. 165–174, 1984. KAWECKI, A. Economical aspects of the meteorological radar system synthesis. Acta Geophysica Polonica, v. 26, n. 2, p. 173–184, 1978. KILGARD, M. The OpenGL Utility Toolkit (GLUT) Programming Interface API Version 3. Web Site: http://www. opengl. org/developers/documentation/glut, 1996. KNISS, J. et al. Volume rendering multivariate data to visualize meteorological simulations: a case study. Proceedings of the symposium on Data Visualisation 2002, Eurographics Association Aire-la-Ville, Switzerland, Switzerland, 2002. LUCK, D. Frequency Modulated Radar. [S.l.]: McGraw-Hill New York, 1949. MCCASLIN, P.; MCDONALD, P.; SZOKE, E. 3D visualization development at NOAA forecast systems laboratory. ACM SIGGRAPH Computer Graphics, ACM Press New York, NY, USA, v. 34, n. 1, p. 41–44, 2000. NATIONAL WEATHER SERVICE. NEXRAD Radar Operations Center, WSR-88D. Web Site: http://www.roc.noaa.gov/, 03 2007. NAVAL HISTORICAL CENTER. U.S. Radar - Operational Characteristics of Radar Classified by Tactical Application,. [S.l.]: Department of the Navy. NEIDER, J.; DAVIS, T.; WOO, M. OpenGL. Programming guide. [S.l.]: Addison-Wesley Reading, Mass, 1997. NEIDER, J. et al. OpenGL Programming Guide:: the Official Guide to Learning OpenGL. [S.l.]: Pearson Education, 2005. OLIVEIRA, J. de; FERREIRA, N.; JÚNIOR, A. Estimativas de precipitação derivadas de imagens do satélite goes-8 e de radar meteorológico doppler. OPENGL, A. OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.1. [S.l.]: Addison-Wesley, Reading, MA, 1997. PAPATHOMAS, T.; SCHIAVONE, J.; JULESZ, B. Applications of computer graphics to the visualization of meteorological data. Proceedings of the 15th annual conference on Computer graphics and interactive techniques, ACM Press New York, NY, USA, p. 327–334, 1988. RILEY, K. et al. A system for realistic weather rendering. 20th International Conference on Interactive Information and Processing Systems, 2004. RINEHART, R. Radar for Meteorologists. [S.l.]: Rinehart Publications Grand Forks, ND, 1997. SCHÖNHUBER, M. et al. Weather radar versus 2D-video disdrometer data. Weather Radar Technology for Water Resources Management, p. 159–171, 1997. STAM, J.; FIUME, E. Depicting fire and other gaseous phenomena using diffusion processes. Proceedings of the 22nd annual conference on Computer graphics and interactive techniques, ACM Press New York, NY, USA, p. 129–136, 1995. Referências 71 TREINISH, L. Task-specific visualization design. Computer Graphics and Applications, IEEE, v. 19, n. 5, p. 72–77, 1999. TUCCI, C.; PORTO, R.; BARROS, M. Inundações urbanas. Drenagem urbana, v. 1, p. 15–36, 1995. WRIGHT, R.; LIPCHAK, B. OpenGL SuperBible. [S.l.]: Sams Indianapolis, IN, USA, 2004. ZHU, Y. et al. The economic value of ensemble-based weather forecasts. Bulletin of the American Meteorological Society, v. 83, n. 1, p. 73–83, 2002.