Trabalhando com os dados do Instituto Nacional de Meteorologia

Mapa das Estações

Contextualizando

No artigo anterior nós utilizamos a biblioteca HydroBR com foco apenas nos dados da Agência Nacional de Águas (ANA), nesse artigo focaremos no uso da biblioteca visando a obtenção dos dados do Instituto Nacional de Meteorologia (INMET).

O INMET tem como uma de suas atribuições coordenar e operar as redes de observações meteorológicas e de transmissão de dados. No seu banco de dados público, o INMET incorpora informações com discretização diária (estações convencionais) coletadas desde 1961, e discretização horária (estações automáticas) coletadas a partir de 2000. São disponibilizados dados de temperatura, umidade relativa do ar, direção e velocidade do vento, pressão atmosférica, precipitação, entre outras variáveis.

Nesse artigo, seguiremos o seguinte roteiro:

  1. Seleção de estações do INMET a partir de um shapefile de área de interesse (de maneira menos detalhada);
  2. Abordagem para download dos dados das estações baixadas;
  3. Visualização da disponibilidade temporal dos dados (de maneira menos detalhada).

1. Selecionando as estações do INMET

Para a seleção das estações que estão dentro da bacia, precisaremos das bibliotecas HydroBR, GeoPandas e Shapely. O processo aqui é semelhante ao que foi apresentado no artigo anterior. Por isso, serei menos detalhista.

Primeiro iremos importar as bibliotecas:

Para o processo de filtragem por área, reuni o passo a passo do que fizemos anteriormente em uma função. A função baseia-se na seleção das estações a partir da lista de estações e na área de interesse. Uma novidade que apresento aqui é a possibilidade de selecionar um valor de buffer no momento da seleção das estações.

Aqui iremos abrir o shapefile da área de interesse, nessa aplicação continuarei utilizando como base a bacia hidrográfica do rio Doce. Mas destaco novamente que você pode utilizar o shapefile de qualquer outra área, desde que esteja localizada no Brasil.

Nesse passo, iremos obter o inventário de estações. Como dito anteriormente o INMET possui dois tipos de estações, automáticas e convencionais.

  • As estações automáticas apresentam discretização horária, delas podem ser obtidos dados tanto no formato horário quanto diário;
  • No caso das estações convencionais só podem ser obtidos dados no formato diário.

A função da biblioteca HydroBR responsável pela obtenção do inventário do INMET é a seguinte: hydrobr.get_data.INMET.list_stations()

A função .list_stations apresenta como argumento a variável station_type com argumento padrão ‘both’. Isso significa que ao chamar a função list_stations, por padrão, ela retornará o inventário que contém as estações automáticas e convencionais.

No entanto podemos selecionar apenas um tipo de estação. Em resumo:

  • hydrobr.get_data.INMET.list_stations()- Para obter o inventário com as estações automáticas e convencionais;
  • hydrobr.get_data.INMET.list_stations(station_type='automatic')- Para obter o inventário com apenas as estações automaticas.
  • hydrobr.get_data.INMET.list_stations(station_type='conventional')- Para obter o inventário com apenas as estações convencionais.

Nessa aplicação iremos obter o inventário de estações completo e selecionaremos apenas as que estações inseridas na nossa área de interesse utilizando a função select_stations_area que definimos anteriormente.

Que nos retorna:

Assim, podemos perceber que temos 2 estações convencionais e 9 estações automáticas em operação inseridas na bacia hidrográfica do rio Doce.

Podemos plotar a distribuição espacial das estações, utilizando o shapefile da bacia hidrográfica do rio doce como base.

2. Fazendo o download dos dados

Para o download dos dados do INMET a biblioteca HydroBR possui uma função para os dados com discretização horária e uma função para os dados com discretização diária.

Diferentemente das funções que fazem download dos dados da ANA, para os dados do INMET o método realiza o download de apenas uma estação por vez, sendo fornecido o código da estação no formato de string.

hydrobr.get_data.INMET.daily_data- Obtém os dados com discretização diária e funciona para códigos de estações manuais e de estações automáticas. Retornando um DataFrame com uma variável climática por coluna. Podendo retornar as seguintes variáveis:

  • Prec — Precipitação (mm)
  • Tmean — Temperatura média diária (ºC)
  • Tmax — Temperatura máxima (ºC)
  • Tmin — Temperatura mínima(ºC)
  • RH — Umidade relativa (%)
  • SD — Insolação (horas)

hydrobr.get_data.INMET.hourly_data- Obtém os dados com discretização horária e funciona para apenas para códigos de estações automáticas. Retornando um DataFrame com uma variável climática por coluna. Podendo retornar as seguintes variáveis:

  • Tins — Temperatura instantânea (ºC)
  • Tmax — Temperatura máxima (ºC)
  • Tmin — Temperatura mínima(ºC)
  • RHins — Umidade relativa instantânea (%)
  • RHmax — Umidade relativa máxima (%)
  • RHmin — Umidade relativa mínima (%)
  • DPins — Temperatura do ponto de orvalho instantânea (ºC)
  • DPmax — Temperatura do ponto de orvalho máxima (ºC)
  • DPmin — Temperatura do ponto de orvalho mínima (ºC)
  • Pins — Pressão instantânea (hPa)
  • Pmax — Pressão máxima (hPa)
  • Pmin — Pressão mínima (hPa)
  • Wspeed — Velocidade do vento (m/s)
  • Wdir — Direção do vento (º)
  • Wgust — Rajada Máxima (vento) (m/s)
  • Radiação global (kJ/m²)
  • Prec — Precipitação (mm)

A título de exemplo podemos realizar o download dos dados horários da estação automática de código A554 (Note que o volume de dados para um monitoramento com discretização horária é muito grande, por isso o download pode demorar, a depender da conexão!):

Observação

Caso você esteja interessado em apenas algumas variáveis, é possível fazer um for loop que chama a função de download dos dados para uma lista de códigos de estações. Nesse caso, são criados DataFrames particulares para cada variável de interesse, que será preenchido utilizando o método concat da biblioteca Pandas (iremos importar a seguir).

Supanhamos que estamos interessados apenas nas variáveis de Precipitação e Temperatura Média, com discretização diária das estações automaticas que estão inseridas na bacia do rio Doce. Logo, poderíamos utilizar o seguinte código:

3. Visualizando a disponibilidade temporal dos dados

Com o for loop anterior baixamos os dados de temperatura e precipitação das estações automaticas do rio Doce. Podemos visualizar a disponibilidade temporal dos dados de temperatura, a título de exemplo, utilizando o gráfico de gantt.

Conclusão

Nesse artigo focamos apenas nos dados do INMET e vimos que podemos obter dados com discretização horária e diária. Além disso, foi apresentado como realizar o download de mais de uma estação utilizando um for loop do python.

O link para o projeto no github é esse aqui.

Obrigado pela leitura! Nos vemos no próximo artigo!

--

--

Wallisson Carvalho
Wallisson Carvalho

Written by Wallisson Carvalho

Environmental and Sanitation Engineer, Hydrologist and Data Scientist

No responses yet