Skip to main content

Catalogação de estações hidrometeorológicas da ANA

Project description

Pluvia logo

Cliente para coleta de dados hidrometeorológicos do Brasil.

Instalação

pip install pluvia

Como usar

Uso via CLI

Após a instalação, o comando pluvia fica disponível no PATH do seu ambiente Python.

Por conveniência, o pacote inclui contornos dos estados brasileiros (IBGE) embutidos.

pluvia --state SP --start 2026-01-01 --end 2026-06-30 --output ./dados

Para filtrar estações por qualquer limite vetorial (bacias hidrográficas, municípios, áreas de estudo etc.):

pluvia --shapefile ./bacias.shp --shape-column codigo --shape-id 01 --output ./dados
Argumento Descrição
--state Sigla do estado brasileiro (ex: CE, SP, RJ). Obrigatório se --shapefile não for informado.
--start Data de início no formato YYYY-MM-DD (padrão: ontem).
--end Data de fim no formato YYYY-MM-DD (padrão: hoje).
--output Diretório para salvar os dados CSV (padrão: diretório atual).
--rebuild Ignora o cache e re-consulta todas as estações.
--update-active Re-consulta estações ativas mesmo que o intervalo já esteja coberto (padrão: True).
--shapefile Caminho para shapefile vetorial customizado (.shp, .gpkg, .geojson).
--shape-column Coluna de atributo do shapefile para filtrar (padrão: acronym).
--shape-id Valor do ID na coluna de atributo do shapefile.
--station-type Tipo de estação: fluviometrica, pluviometrica, telemetric.

Uso via API

import pluvia

client = pluvia.ANA()

# Contornos embutidos (estados brasileiros)
stations = client.get_stations(
    contour="uf.shp", column="acronym", value="SP"
)

# Shapefile customizado
stations = client.get_stations(
    contour="./bacias.shp", column="codigo", value="01"
)

# Filtro por tipo de estação
stations = client.get_stations(
    contour="uf.shp", column="acronym", value="SP",
    station_type="fluviometrica"
)

data = client.fetch_data(
    stations=stations,
    start="2026-01-01",
    end="2026-06-30",
    variable="chuva",  # chuva, nivel, vazao, cota
    rebuild=True,  # força re-consulta completa (use na primeira execução)
    update_active=True,  # re-consulta estações ativas mesmo com cache válido
)

Caching

O serviço de dados da ANA (Agência Nacional de Águas) é lento e com limitações diversas. Para otimizar o uso dos dados, a biblioteca implementa uma estratégia de caching incremental e orientado a intervalos.

  1. Apenas os períodos ainda não baixados são consultados na API.
  2. O inventário de estações é re-buscado apenas quando expira (padrão: 7 dias).
  3. Estações sem dados são marcadas como inativas e re-consultadas com TTL dinâmico.
  4. Erros de rede consecutivos colocam a estação em cooldown de 24 h.

O TTL dinâmico dita a frequência com que as estações são re-consultadas:

  • diariamente se tiveram dados recentes
  • a cada 3 dias se o último dado tem entre 30 dias e 1 ano
  • semanalmente se ainda mais antigo

Essa estratégia visa reduzir tempo de coleta de dados ao mesmo tempo em que busca não desperdiçar estações que, por eventual (milagre) voltem a operar ou que tenham sofrido interrupções temporárias no serviço.

Desenvolvimento

pixi run -e dev lint        # ruff check
pixi run -e dev format      # ruff format
pixi run -e dev typecheck   # pyrefly
pixi run test               # pytest

Build e publicação no PyPI

O projeto usa Conventional Commits e versionamento semântico automatizado com bump-my-version. O changelog é gerado automaticamente com git-cliff a partir dos commits seguindo Conventional Commits.

Configure um token em pypi.org/manage/account/token e salve em ~/.pypirc.

# ~/.pypirc
[pypi]
username = __token__
password = pypi-xxxxxxxxxxxx

Siga o fluxo para release de uma nova versão:

# 1. Atualizar versão (cria tag automaticamente)
pixi run -e dev bump        # patch
pixi run -e dev bump minor  # minor
pixi run -e dev bump major  # major

# 2. Atualizar changelog
pixi run -e dev changelog

# 3. Build
pixi run -e dev build

# 4. Publicar (requer API token no PyPI)
pixi run -e dev publish

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pluvia-0.1.1.tar.gz (13.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pluvia-0.1.1-py3-none-any.whl (13.8 MB view details)

Uploaded Python 3

File details

Details for the file pluvia-0.1.1.tar.gz.

File metadata

  • Download URL: pluvia-0.1.1.tar.gz
  • Upload date:
  • Size: 13.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pluvia-0.1.1.tar.gz
Algorithm Hash digest
SHA256 491ab09d89a93f56c20c17b3c851a57b90ebd3444040042bdb8410a63dd22d73
MD5 490b3f65578363cdaf4d3fc60660b620
BLAKE2b-256 8270b5fea98cd24f1fedb3c81bf51d2f41775afda9956ad7e4f64eada68275ee

See more details on using hashes here.

File details

Details for the file pluvia-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pluvia-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 13.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pluvia-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 010f30a852c0e0f2e9af3866c803cd0e2756036476a32a84a080a2402685587e
MD5 b9415a056c7b2e81537a38aa9919530c
BLAKE2b-256 d62137c38a170ca7034432a964b1e4a2d4a04ba5c3755d08581125d8cf413432

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page