Inmet/ANA
Dados Pluviométricos do Rio Grande do Sul
Dados obtidos através da ANA - Agência Nacional de Águas
A ANA - Agência Nacional de Águas mantém informações sobre estações fluviométricas e pluviométricas em um portal que pode ser acessado pelo endereço http://www.snirh.gov.br/hidroweb/apresentacao. O portal permite acesso a dados da "Rede Hidrometeorológica Nacional" que é composta de 4641 pontos 1 de monitoramento no país, onde 1874 estações monitoram parâmetros fluviais e 2767 monitoram as chuvas.
Obtenção dos dados das estações do Rio Grande do Sul ANA
Para obter-se os dados das estações pluviométricas do Rio Grande Sul digita-se o trecho a seguir em um navegador com acesso à Internet:
https://www.snirh.gov.br/hidroweb/rest/api/dadosHistoricos?estadoCodigo=24&tipoEstacao=P&size=1326&page=0, em resposta são apresentados dados em formato json de 1000 estações ao qual deverá ser salvo em um arquivo com formato json
Para obter as estações restantes basta colocar o valor 1 ao invés de 0 na mesma requisição feita no navegador, assim: https://www.snirh.gov.br/hidroweb/rest/api/dadosHistoricos?estadoCodigo=24&tipoEstacao=P&size=1326&page=1. Em resposta obtem-se os dados das 326 estações restantes em formato json que também devem ser salvos em um arquivo de extenção json (
Apps a obtenção dos arquivos json, pretende-se uní-los e ao mesmo tempo deixá-los em formato csv. Supondo-se que os dados mencionados acima tenham sido salvos com os nome dados.json e dados2.json, executaremos o script Python abaixo com a finalidade de transformar os dois arquivos json em um único arquivo com formato csv (chamaremos de dados.csv).
import pandas as pd
import json
with open('data.json') as f:
jsonstr = json.load(f)
df1 = pd.io.json.json_normalize(jsonstr['content'])
with open('data2.json') as f:
jsonstr = json.load(f)
df2 = pd.io.json.json_normalize(jsonstr['content'])
df=pd.concat([df1, df2])
df.set_index('id', inplace=True)
df.to_csv('data.csv', sep=';', index='False')
Para a extração dos códigos das estações utilizaremos o awk
awk -F";" {print $1}\'' dados.csv > estacoes.txt
Como o plugin processa no máximo 200 estações por vêz, reagrupou-se as estações em arquivos com no máximo 200 estações executou-se o comando:
split --lines=200 estacoes.txt
dia | mês | ano | valor |
---|---|---|---|
1 | 1 | 1970 | 2.000000 |
2 | 1 | 1970 | 0.000000 |
3 | 1 | 1970 | 0.000000 |
4 | 1 | 1970 | 13.500000 |
Os arquivos de todas as estações foram agrupadas em um diretório único onde substituiu-se os espaços em branco entre os campos pelo delimitador ponto e vírgula utilizando-se os comandos:
sed -i 's/[[:blank:]]\+/;/g' *.txt
sed -i 's/.//' *.txt
Verificou-se que 812 arquivos de estações que tinham o tamanho 390372 bytes registravam as datas corretamente, porém com o valor -1.000000. Considerou-se estes arquivos inválidos para o estudo e assim foram separados dos demais arquivos. Para separar os arquivos utilizou-se:
find . -type f -size '390372c' -exec mv '{}' ../invalidos \;
De posse dos arquivos que não estão totalmente com dados inválidos, passou-se ao processamento para consolidá-los em um único arquivo recuperando-se o número de estação. O número da estação é a denominação de cada um dos arquivos. Para este serviço usou-se o script abaixo que obtem o nome do arquivo e grava este número com os demais dados (dia, mês, ano e valor).
#!/bin/bash
dir_path="./saida_hidro/geral"
x=`ls $dir_path`
for item in $x
do
while read linha
do
estacao=`echo $item | cut -c1-8`
uf="RS"
sep=";"
gravar="${estacao}${sep}${linha}"
echo "${gravar}" >> consolidado_ANA_${uf}.csv
done < $dir_path/$item
done
Observe-se que a execucação do script pressupõem que os arquivos de dados a serem processados encontram-se no diretório atual apontado pela variável dir_path na linha 2 do script e neste mesmo local será gerado o arquivo final com a denominacao "consolidado_ANA_
estação | dia | mês | ano | valor |
---|---|---|---|---|
02751005 | 6 | 1 | 1970 | 0.000000 |
02751005 | 7 | 1 | 1970 | 8.000000 |
02751005 | 8 | 1 | 1970 | 1.000000 |
02751005 | 9 | 1 | 1970 | 3.700000 |
02751005 | 10 | 1 | 1970 | 0.100000 |
A primeira coluna é o número da estação, a segunda será o dia, a terceira o mês, na quarta coluna irá conter o ano e a quinta o valor da preciptação. Esse valor é dado em milímetros por dia. As falhas são representadas pelo valor “-1”. Foi verificada a quantidade de leituras com falhas no arquivo consolidade através do comando:
awk -F";" '$5 ~ "-1.000000" ' consolidado_ANA_RS|wc -l
O total de linha de informações no arquivo consolidado é de 9574792. O total de linhas que tem falhas na leitura é de 5566865. Ou seja 58,14% dos dados do arquivo foram gravados com falhas.
Dados obtidos através do INMET - Instituto Nacional de Meteorologia
O INMET - Instituto Nacional de Meteorologia mantém informações sobre estações pluviométricas em uma página do seu portal que pode ser acessado pelo endereço https://portal.inmet.gov.br/dadoshistoricos. A página permite acesso a dados meteorologiocos de estações entre os anos 2000 até os dias atuais. Obtendo-se os arquivos dos anos, observou-se a inclusão de novas estações a medida que os anos passam, dessa forma no ano 2000 haviam 4 estações e no ano 2020 haviam 554 estações. Para o estado do Rio Grande do Sul em 2020 haviam 44 estações instaladas. A ordem de entrada das estações desse estado da federação, o ano de início de operação e a quantidade de registros coletados estão informados a seguir:
Cidade | ano | quantidades |
---|---|---|
PORTO ALEGRE | 2000 | 177753 |
RIO GRANDE | 2001 | 167664 |
SANTA MARIA | 2001 | 167424 |
SANTANA DO LIVRAMENTO | 2001 | 167520 |
SANTO AUGUSTO | 2001 | 167208 |
ALEGRETE | 2006 | 125016 |
BENTO GONCALVES | 2006 | 123480 |
CACAPAVA DO SUL | 2006 | 127368 |
CAMAQUA | 2006 | 123216 |
ERECHIM | 2006 | 123624 |
PASSO FUNDO | 2006 | 123576 |
RIO PARDO | 2006 | 124968 |
SANTA ROSA | 2006 | 123864 |
SAO JOSE DOS AUSENTES | 2006 | 124344 |
TORRES | 2006 | 127872 |
URUGUAIANA | 2006 | 125016 |
BAGE | 2007 | 122664 |
CANGUCU | 2007 | 122184 |
CRUZALTA | 2007 | 119136 |
JAGUARAO | 2007 | 122544 |
LAGOA VERMELHA | 2007 | 121296 |
QUARAI | 2007 | 115800 |
FREDERICO WESTPHALEN | 2007 | 114408 |
SAO BORJA | 2007 | 117912 |
SAO GABRIEL | 2007 | 118152 |
SAO LUIZ GONZAGA | 2007 | 117816 |
MOSTARDAS | 2008 | 112296 |
PALMEIRAS DAS MISSOES | 2008 | 112632 |
CANELA | 2008 | 108336 |
SANTA VITORIA DO PALMAR | 2008 | 112368 |
SOLEDADE | 2008 | 112536 |
TRAMANDAI | 2008 | 112344 |
VACARIA | 2008 | 111192 |
SANTIAGO | 2009 | 104376 |
IBIRUBA | 2012 | 70584 |
TEUTONIA | 2012 | 72264 |
CAMPOBOM | 2013 | 62160 |
SAO VICENTE DO SUL | 2016 | 41544 |
SERAFIN CORREA | 2016 | 41664 |
TUPANCIRETA | 2016 | 38496 |
CAMBARA DO SUL | 2017 | 35976 |
ENCRUZILHADA DO SUL | 2018 | 24552 |
CAMPO DO LEAO PELOTAS | 2019 | 12792 |
Obtenção dos dados das estações do Rio Grande do Sul INMET
Após a extração dos dados pelo portal das estações por ano através de transferência (download), obtem-se arquivos em formato zip que foram extraídos em um diretório temporário. Uma particularidade a ser tratada é que uma parte da informação que necessitamos encontra-se no nome dos arquivos a outra são os dados do arquivo. Dessa forma o arquivo "INMET_S_RS_A826_ALEGRETE_01-01-2007_A_31-12-2007.CSV" obtido nos site do INMET contém informaçoes da estação A826 do município de Alegrete no período que inicia-se em 01-01-2007 e vai até 31-12-2007.
Criou-se também um novo diretório que irá receber os dados que pretende-se analisar cujo nome foi RS_INMET e executou-se a instrução:
find ./temporario/ -name INMET_S_RS_*.CSV -exec cp {} ./RS_INMET \;
#bin/bash
dir_path="./RS_INMET"
x=`ls $dir_path`
for item in $x
do
while read linha
do
estacao=`echo $item | cut -f4 -d'_'`
cidade=`echo $item | cut -f5 -d'_'`
sep=";"
gravar="${estacao}${sep}${cidade}${sep}${linha}"
echo "${gravar}" >> ./csv/consolidado.csv
done < $dir_path/$item
done
O script tem por finalidade gravar no arquivo consolidado.csv os dados das estações acrescidos do nome da estação e da cidade onde situa a estação que estão no nome do arquivo processado.
O arquivo consolidado.csv gerado tem campos separados pelo caracter ";" e tem o seguinte layout:
- Nome da estação;
- Município;
- Data no formato ano-mês-dia (aaaa-mm-dd);
- Hora no formato hh:mm;
- Precipitação total (mm);
- Pressão atmosférica (mB);
- Pressão atmosférica máxima na hora anterior (mB);
- Pressão atmosférica mínima na hora anterior (mB);
- Radiação Global (Kj/m²);
- Temperatura do ar - Bulbo Seco (°C);
- Temperatura do ponto de orvalho(°C);
- Temperatura máxima na hora anterior (°C);
- Temperatura mínima na hora anterior (°C);
- Temperatura orvalho máxima na hora anterior (°C);
- Temperatura orvalho mínima na hora anterior (°C);
- Umidade relativa máxima na hora anterior (%);
- Umidade relativa mínima na hora anterior (%);
- Umidade relativa do ar (%);
- Vento direção horária (gr) (° (gr));
- Vento rajada máxima (m/s);
- Vento velocidade horária (m/s);
Exemplo de uma linha do arquivo consolidado:
A803;SANTAMARIA;2002-01-02;12:00;0;995,6;995,6;995,3;1990;24,9;18,5;25;23,7;19,3;18,5;73;68;68;262;5,5;2,1
O arquivo consolidado contém 4791686 linhas com informações. Dessas 238303 apresentaram o campo relativo a "Precipitação Total" com valor -9999 que são caracterizados como leituras com falhas. Assim o arquivo consolidado apresenta 95,02% de dados íntegros.
Como obteve-se a quantidade de linhas com dados com falhas do arquivo consolidado:
awk -F";" '$6 ~ "-9999" ' ./csv/consolidado.csv |wc -l
Obs.: a partir do ano de 2019 verificou-se mudança na anotação do campo dia de yyyy-mm-dd para yyyy/mm/dd e insere-se a string UTC juntamente com a hora. Com objetivo de tornar separados os dados de ano, mês e dia como utilizado nas coletas da ANA, foram ajustadas o campo dia do registro do Inmet separando-os em ano, mês e dia. Para isso utilizou-se os seguintes procedimentos:
sed -i 's/\([0-9][0-9][0-9][0-9]\)\/\([0-9][0-9]\)\/\([0-9][0-9]\)/\1:\2:\3/g' ,/csv/consolidado.csv_bkp
sed -i 's/\([0-9][0-9][0-9][0-9]\)\-\([0-9][0-9]\)\-\([0-9][0-9]\)/\1:\2:\3/g' ./csv/consolidado.csv_bkp
As localizações das estações do Inmet no estado do Rio Grande do SUL podem ser vistas no mapa do link: https://parabolicamara.com.br/pibic/mapInmetRS.html.