Blog

Software radar meteorológico: utilizando bibliotecas de código aberto para processamento de dados

A imagem mostra uma mesa com um notebook exibindo imagens de um software radar meteorológico
Desenvolvimento / Desenvolvimento de Software / Programação / Tutoriais

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.

Fig. 1. Interface visual da tela inicial da Anaconda Navigator. Imagem gerada a partir de print screen da aplicação instalada no sistema operacional Windows 10.
Fig. 1. Interface visual da tela inicial da Anaconda Navigator. Imagem gerada a partir de print screen da aplicação instalada no sistema operacional Windows 10.

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.

Fig. 2. Interface visual do Spyder3. Imagem gerada a partir de print screen da aplicação no sistema operacional Windows 10.
Fig. 2. Interface visual do Spyder3. Imagem gerada a partir de print screen da aplicação no sistema operacional Windows 10.

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.

Fig. 3. Imagem gerada a partir de dados do radar instalado na cidade de Maceió, Alagoas. Plotagem PPI do evento de chuva de granizo em Pariconha, Alto sertão de Alagoas, ocorrido no dia 25 de dezembro de 2015 às 18:40 p.m.
Fig. 3. Imagem gerada a partir de dados do radar instalado na cidade de Maceió, Alagoas. Plotagem PPI do evento de chuva de granizo em Pariconha, Alto sertão de Alagoas, ocorrido no dia 25 de dezembro de 2015 às 6:40 p.m.

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).

Fig. 4. Visualização de PPI do radar Selex ES Gmbh no dia 25 de dezembro de 2015 às 18:40 p.m. Para (a) Refletividade (Z); (b) Refletividade Diferencial (ZDR); (c) Fase Diferencial Específica (KDP); e (d) Velocidade radial (VR) em um raio de 200 km.
Fig. 4. Visualização de PPI do radar Selex ES Gmbh no dia 25 de dezembro de 2015 às 18:40 p.m. Para (a) Refletividade (Z); (b) Refletividade Diferencial (ZDR); (c) Fase Diferencial Específica (KDP); e (d) Velocidade radial (VR) em um raio de 200 km.

É 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.

Fig. 5. Visualização das informações (metadados) extraídas dos arquivos gerados pelo radar de Maceió no dia 25 de dezembro de 2015, medição realizada às 18:40 p.m. Para (a) Utilização da biblioteca Py-ART; em b (b) Utilização da biblioteca Wradlib.
Fig. 5. Visualização das informações (metadados) extraídas dos arquivos gerados pelo radar de Maceió no dia 25 de dezembro de 2015, medição realizada às 6:40 p.m. Para (a) Utilização da biblioteca Py-ART; em b (b) Utilização da biblioteca Wradlib.

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).

Fig. 6. Plotagem de PPI com anel do radar Selex ES Gmbh no dia 25 de dezembro de 2015 às 18:40 p.m. Para (a) Plotagem do anel a 250 km; (b) Plotagem do anel a 50 km e 100 km; (c) Plotagem do anel a 50 km, 100 km, 150 km e 250 km;
Fig. 6. Plotagem de PPI com anel do radar Selex ES Gmbh no dia 25 de dezembro de 2015 às 6:40 p.m. Para (a) Plotagem do anel a 250 km; (b) Plotagem do anel a 50 km e 100 km; (c) Plotagem do anel a 50 km, 100 km, 150 km e 250 km;

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.

Fig. 7. Manipulando mapa de cores no matplotlib utilizando a classe ListedColormap. Para (a) valores das cores em RGB; (b) intervalos das cores; (c) resultado da plotagem com as cores personalizadas.
Fig. 7. Manipulando mapa de cores no matplotlib utilizando a classe ListedColormap. Para (a) valores das cores em RGB; (b) intervalos das cores; (c) resultado da plotagem com as cores personalizadas.

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.

Leia também:

Tratamento global de erros em páginas Razor 

Leave your thought here

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the comparison bar
Compare