Software radar meteorológico: utilizando bibliotecas de código aberto para processamento de dados
Software radar meteorológico: utilizando bibliotecas de código aberto para processamento de dados
Quando pensamos em software radar, muitos detalhes do desenvolvimento vem à mente. Um deles é a obtenção dos dados do radar, o estudo das variáveis medidas pelo radar meteorológico.
Neste artigo, vamos entender um pouco mais sobre o desenvolvimento do software radar meteorológico, como são medidas suas informações e como visualizá-las, incluindo a utilização das Bibliotecas de Software Livre para Processamento dos Dados. Além disso, vamos falar sobre a preparação do ambiente de desenvolvimento através de ferramentas de desenvolvimento de software como o Anaconda Navigator e Spyder.
Obtenção de dados de radar
A obtenção de dados pode ser realizada a partir do site do Centro Nacional de Monitoramento e Alerta de Desastres Naturais (CEMADEN). Assim, no site podemos encontrar as informações de pluviômetros, estações hidrológicas e radares meteorológicos.
Os dados são fornecidos no formato Rainbow5, que consiste em um arquivo XML que contém metadados e conteúdo binário. Então, estes arquivos possuem extensão .vol e armazenam as medições do radar.
Estudo das variáveis medidas por Sensoriamento Remoto
Um radar meteorológico funciona emitindo pulsos de energia eletromagnética em frequências de micro-ondas. Ou seja, parte da energia é retroespalhada pelos alvos, e retorna para a mesma direção da antena do radar, sendo captada pelo refletor.
Dessa forma, a energia recebida é analisada por computadores para determinar a localização do alvo, intensidade da precipitação, informações sobre a velocidade e direção do vento, além da distância (mensurada através da medida do tempo que leva o pulso de energia se deslocar da fonte do alvo e retornar até o refletor).
As variáveis obtidas através desse sistema podem ser analisadas e determinar, por exemplo, a estrutura interna da chuva. Assim, permitem estimar a precipitação, realizar monitoramento e previsão de curtíssimo prazo com diversas aplicações.
Nesta etapa, podemos escolher as variáveis básicas necessárias para realizar a estimativa de precipitação, que são:
Refletividade (Z)
É uma medida da eficiência do alvo de um radar em interceptar e retornar a energia do radar, que depende dos parâmetros físicos do alvo. Bem como o número e tamanho das gotas de chuva por unidade de volume e unidade de mm6m-3.
Refletividade Diferencial (ZDR)
É uma medida do logaritmo da razão entre a refletividade transmitida com pulso horizontal e refletividade transmitida com pulso vertical em um volume. Então, pode também ser pensada como o logaritmo da razão entre a refletividade horizontal para a refletividade vertical nas unidades lineares.
Fase Diferencial Específica (KDP)
É a derivada espacial da fase diferencial. Ou seja, uma comparação da diferença de fase entre os pulsos polarizados horizontal e verticalmente, em duas distâncias diferentes.
Velocidade radial (VR)
É a velocidade de aproximação ou afastamento dos alvos em relação ao radar na direção do feixe.
Utilização das Bibliotecas de Software Livre para Processamento dos Dados do Radar Meteorológico
Para o processamento de dados, podemos utilizar duas bibliotecas com código aberto, que tem o objetivo de ler e manipular os dados de radar, a Python ARM Radar Toolkit (Py- ART) e a Biblioteca para processamento de dados de radar meteorológico (WRADLIB).
Assim, elas foram criadas para facilitar o uso de dados de radar meteorológico, são bem documentadas e fáceis de usar. Ambas são escritas na linguagem de programação Python.
Anaconda Navigator
Para a utilização das bibliotecas, instalamos a Anaconda Navigator, uma interface gráfica que permite gerenciar ambientes de programação. Então, na Figura 1, é possível ver a interface e algumas aplicações gerenciadas pela Anaconda Navigator.
Spyder
Depois da instalação do Anaconda, utilizamos o ambiente científico Spyder, uma das ferramentas apresentadas em sua tela inicial. Dessa forma, com o Spyder, é possível editar, analisar e depurar arquivos.
Plotagem do campo PPI
Na Figura 2, podemos ver um exemplo de leitura e plotagem do campo PPI (Plan Position Indicator, em inglês), que é um campo bidimensional do radar meteorológico que representa a variável escolhida (neste caso a refletividade) com a antena do radar no centro da tela e a altura acima do solo com círculos concêntricos. Portanto, a refletividade é plotada conforme uma barra de cores na lateral direita da figura.
Py-Art
Para a utilização da biblioteca Py-Art, além do Python, instalaremos mais quatro bibliotecas, NumPy, SciPy, Matplotlib e netCDF4.
Py-ART tem a capacidade de ler uma série de formatos de radar meteorológico comuns, incluindo os formatos: Sigmet IRIS, MDV, CF Radial, Universal Format (UF) e arquivos no formato NEXRAD Nível II. O Py-ART também contém rotinas que podem produzir os gráficos de radar mais utilizados, incluindo PPIs, CAPPIs e RHIs.
Nesse caso, o método mais fácil para instalar o Py-ART é usar os pacotes gerenciados pela ferramenta “conda”. Assim , é recomendado criar um novo ambiente ao usar Py-ART ou, até mesmo, outros pacotes como Wradlib, de modo a se criar um ambiente exclusivo para o projeto.
Assim, o Py-ART pode ser usado para uma variedade de tarefas, desde plotagem básica até a execução de processamento mais complexos. Além disso, os usos mais específicos para Py-ART incluem:
- Leitura de dados de radar em vários formatos de arquivo;
- Criação de plotagens e visualização de dados de radar;
- Doppler dealising (remoção do artefato de falseamento da relação velocidade- distância);
- Correção da atenuação;
- Processamento de fase usando um método de programação linear;
- Mapeamento de dados de um ou vários radares em uma grade cartesiana;
- Executar recuperação de dados mapeados ou nos dados brutos originais;
- Gravar dados em coordenadas polares ou cartesianas em arquivos NetCDF.
Do mesmo modo, a leitura dos arquivos do radar meteorológico é feita pelo Py-ART por meio do módulo pyart.io. Portanto, para a utilização da Wradlib, podemos reutilizar o ambiente criado para o Py-Art, por conter as mesmas dependências e adicionar as bibliotecas h5py, h5netcdf, xarray, xmltodict e gdal. Isso porque a Wradlib tem a capacidade de fazer leitura de formatos de dados semelhante ao Py-ART.
Visualizando resultados
Com o Py-ART, é possível criar plotagens de plano gráfico de indicador de posição (PPI) como mostra a Figura 3. Dessa forma, o PPI é gerado de uma varredura de medida angular do sistema de coordenadas horizontais, conhecida como azimute com uma elevação constante.
Em primeiro lugar, a variável é plotada em um plano, em que o centro é a posição do radar meteorológico. Neste caso, a figura 3 mostra um exemplo de PPI utilizando a biblioteca Py-ART, em um raio de 200 km.
Através do uso do Py-ART e Wradlib, é possível gerar e visualizar dados das variáveis básicas, ilustrado na Figura 4. Em (a) Refletividade (Z), em (b) Refletividade Diferencial (ZDR), em (c) Fase Diferencial Específica (KDP) em (d) Velocidade Radial (Vr).
É possível extrair informações dos arquivos do radar meteorológico através da função radar.info(‘compact’) ou radar.info(‘full’) utilizando Py-ART. Isto é, porque eles podem fornecer detalhes sobre os dados armazenados.
Metadados
Metadados contendo as variáveis: altitude, longitude, latitude, azimute, elevação, metadados, título, versão do arquivo, nome do radar meteorológico, além de outros estão contidos no arquivo, bem como ilustra a Figura 5. Então, para obter detalhes dos arquivos através da biblioteca Wradlib, utilizamos a função wrl.io.read_rainbow(‘path’), onde ‘path’ se refere ao caminho do arquivo.
Plotagem de anéis
Para a plotagem de anéis, podemos utilizar a função display.plot_range_rings(), em que os parâmetro são: um array, para uma faixa de 250 km. Neste caso, utilizamos a função da seguinte maneira: display.plot_range_rings([250]), como podemos ver na fig. 6 (a), display.plot_range_rings([50, 100]) para fig. 6(b), display.plot_range_rings([50, 100, 150, 250]) para fig. 6(c).
Mapa de cores
Além disso, é possível personalizar as cores da plotagem do PPI, através da biblioteca matplotlib, que possui vários mapas de cores integrados acessíveis via matplotlib.cm.get_cmap. Ou através da classe ListedColormap e uma matriz Nx4 numpy de valores entre 0 e 1 para representar os valores RGBA do mapa de cores.
Ainda mais, podemos fazer um novo mapa de cores. Para isso, é necessário informar o comprimento, os intervalos entre as cores e suas respectivas cores. Como podemos ver na Figura 7, N representa o comprimento, a fig. 7 (a) representa os valores para as cores em RGB e fig. 7 (b) mostra os intervalos entre cada cor. Assim, o resultado da plotagem é apresentado na fig. 7 (c), onde o comprimento vai de 0 à 60 e apresenta intervalos de 10 e 5.
Conclusão
Como vimos no artigo, a utilização das bibliotecas Py-ART e Wradlib aponta para a viabilidade no processo de análise, visualização e processamento de dados do radar meteorológico.
Além disso, dentre diversas facilidades oferecidas por estas bibliotecas, encontra-se a de plotagem. Isto é, por meio da plotagem, conseguimos gerar o PPI. Assim, levando em consideração a utilização da linguagem Python e suas bibliotecas, é possível manipular facilmente as cores geradas no PPI.