Utilizando a biblioteca HydroBR — Parte 2
Trabalhando com os dados do Instituto Nacional de Meteorologia
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:
- Seleção de estações do INMET a partir de um shapefile de área de interesse (de maneira menos detalhada);
- Abordagem para download dos dados das estações baixadas;
- 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!