Wrapper user-friendly para facilitar o acesso aos dados hidrometeorológicos de grandes centros.
O nuvem
conta com diversas funções para obtenção e manipulação de dados em grade e séries temporais.
Contribuições são bem vindas!
Aqui você vai encontrar:
✨ Módulos para obtenção de dados de grandes centros!
-
API da ANA;
-
API do INMET;
-
FTP do CPTEC para dados do MERGE.
✨ Diversos cálculos hidrológicos
-
Hidrograma de cheias por convolução;
-
Determinação da curva chave;
-
Fator de forma;
-
Coeficiente de runoff;
-
etc...
✨ Módulos de utilidade para lidar com dados em grade e séries temporais.
# 1. no terminal, clone o projeto
git clone git@github.com:andradelis/nuvem.git
# 2. entre na pasta do projeto
cd nuvem
# 3. instale as dependências
bash conda-install.bash
# 4. Ative o ambiente do projeto!
conda activate nuvem
import timeless
import geopandas as gpd
from nuvem.MERGE.api import merge
data_inicial = timeless.datetime(2022, 1, 1)
data_final = timeless.today()
contorno = gpd.read_file(
<caminho-para-o-shapefile>
)
# baixar dados diários do merge em disco
merge.baixar_dados_diarios(
data_inicial=data_inicial,
data_final=data_final
)
# utilizar o dataset baixado para obter a chuva no contorno
merge.obter_chuva_no_contorno(
contorno=contorno,
media_regional=True,
dados=<caminho-para-o-dataset-gravado-em-disco>
)
from nuvem.ANA.api import ana
import timeless
import geopandas as gpd
# obtém o inventário de postos pluviométricos da ANA
inventario_ana_plu = ana.inventario_plu()
# obtém o inventário de postos fluviométricos da ANA
inventario_ana_flu = ana.inventario_flu()
# obtém os postos de chuva que estão localizados dentro de um contorno
contorno = gpd.read_file(
<caminho-para-o-shapefile>
)
postos_ana = inventario_ana_plu[["latitude", "longitude"]]
gdf_plu = geo.atribuir_geometrias(df=postos_ana)
postos = geo.obter_pontos_no_contorno(pontos=gdf_plu, contorno=contorno)
# obtém a série de vazões e cotas de um posto fluviométrico
posto = 58235100
serie = ana.obter_vazoes(posto)
cotas = ana.obter_cotas(posto)
# obtém as séries de chuva dos postos dentro de um contorno
data_inicial = timeless.datetime(2022, 1, 1)
data_final = timeless.today()
contorno = gpd.read_file(
<caminho-para-o-shapefile>
)
df_ana = ana.obter_chuva_no_contorno(
data_final=data_final,
data_inicial=data_inicial,
contorno=contorno,
telemetrica=True,
convencional=False
)
from nuvem.INMET.api import inmet
import timeless
import geopandas as gpd
# obtém o inventário de estações telemétricas
inventario_telemetrica = inmet.inventario(telemetrica=True)
# obtém o inventário de estações convencionais
inventario_convencional = inmet.inventario(telemetrica=False)
# obtém dados medidos de uma estação em um período
data_inicial = timeless.datetime(2022, 1, 1)
data_final = timeless.today()
dados = inmet.obter_dados(
data_inicial=data_inicial,
data_final=data_final,
codigo=A706,
freq="D"
)
# obtém um mapeamento das variáveis disponíveis no
# dataframe de medições do INMET
variaveis = inmet.variaveis()
# seleciona a variável de pressão
pressao_inmet = dados[variaveis['pressão']]
# obtém as séries de chuva dos postos dentro de um contorno
contorno = gpd.read_file(
<caminho-para-o-shapefile>
)
df_inmet = inmet.obter_chuva_no_contorno(
data_final=data_final,
data_inicial=data_inicial,
contorno=contorno,
)