Aponte para o rio. A bacia inteira responde.
Navegação na Base Hidrográfica Ottocodificada da ANA
Todo estudo hidrológico começa pela mesma pergunta: de onde vem a água que passa por aqui? O sistema BHO responde a ela para qualquer ponto do Brasil. Basta dar o nome do rio, o código da ottobacia ou um clique no mapa: ele devolve a bacia a montante, o curso d'água principal até a nascente mais distante, o perfil ao longo da calha, o caminho até a foz e as sub-bacias, prontos para exportar.
É a ferramenta de apoio que sustenta os outros sistemas da plataforma FERAH: a regionalização de vazões, a curva-chave e o HAND, a ponte de Budyko da elasticidade e a seleção de estações do Webservice ANA.
Números medidos e registrados na documentação de implementação do sistema (docs/09, agosto de 2026) e no README do sistema. Nenhum valor desta página foi estimado para a página.
Um mapa em que cada pedaço de rio sabe quem está acima e quem está abaixo dele
A Base Hidrográfica Ottocodificada é a representação oficial da rede de drenagem brasileira mantida pela Agência Nacional de Águas e Saneamento Básico. Ela divide o país em ottobacias: para cada trecho de rio, o polígono de terra que drena diretamente para ele. Na versão de 2017, na escala 1:5.000 para as grandes bacias, são 464.067 trechos e polígonos.
O que a torna especial não é o desenho, é o código. Cada ottobacia recebe um número construído pela codificação de Otto Pfafstetter, um engenheiro do antigo DNOS que criou o método em 1989. O código carrega a posição do trecho na rede: pela aritmética dos seus dígitos é possível saber se um trecho está a montante ou a jusante de outro, em que rio ele está e onde esse rio deságua, sem olhar para a geometria.
É por isso que a navegação na BHO é, entre todos os recursos do FERAH, o que a equipe considera mais valioso: ele transforma uma pergunta geográfica, cara e lenta, numa pergunta sobre números.
O que cada ottobacia traz
- cobacia
- o código Otto da ottobacia, a chave de tudo
- cocursodag
- o código do curso d'água em que o trecho está
- nutrjus
- o trecho imediatamente a jusante, a ligação topológica explícita
- nuareacont · nuareamont
- a área que drena direto para o trecho e a área acumulada a montante
- nudistbact
- a distância até a foz pela rede
- noriocomp · dedominial
- o nome do rio e a dominialidade, federal ou estadual
São 43 campos na BHO 2017. A BHAE 2023 acrescenta a tabela HGM (declividade por sete métodos, tempo de concentração por dez fórmulas, geometria hidráulica) e o Curve Number de 2022.
Quatro regras de aritmética que substituem qualquer consulta geográfica
A codificação segue um princípio simples: em cada nível, os quatro maiores afluentes recebem os dígitos pares (2, 4, 6, 8), da foz para a nascente; os trechos do rio principal entre eles, as interbacias, recebem os ímpares (1, 3, 5, 7, 9). Cada subdivisão acrescenta um dígito. Disso decorrem as regras que o sistema aplica.
Curso d'água
Leia o código da direita para a esquerda e corte até o primeiro dígito par, mantendo-o.
77415 → 774862911 → 8627499891 → 74998Sem dígito par, o curso é o primeiro dígito: 4111 → 4, o Amazonas.
Bacia a montante
Todos os códigos maiores ou iguais ao consultado que começam pelo mesmo curso d'água.
7743=
7743, 77431, 7745…Dentro de um curso, a ordem alfabética dos códigos é a ordem do rio. É isso que torna a consulta instantânea.
Trecho a jusante
Pelo último dígito: par desce 1; ímpar diferente de 1 desce 2; 1 sobe de nível; 0 é bacia fechada.
7744 → 77437743 → 77417741 → 7737740 → fozPara onde escoa a água
A regra 3 diz onde termina este curso d'água. Para saber para onde a água segue na confluência, o sistema usa a ligação topológica gravada na base (nutrjus).
Achado da implementação: propagar área só pela regra de Otto deixava o Amazonas 98,8% menor. Pela topologia, a diferença é 0,00%.
Por que é instantâneo: a bacia é uma fatia de um array
Num array de códigos ordenado como texto, todas as ottobacias de um curso d'água formam um bloco contíguo, e a bacia a montante de qualquer trecho é uma fatia desse bloco. Duas buscas binárias encontram o início e o fim da fatia. Foi assim que a consulta do Rio Negro, que levava 527 ms no banco, passou a levar 0,034 ms em memória, com resultado idêntico.
A geometria continua no PostGIS, onde o índice espacial resolve bem: só o mapa precisa dela.
O Rio das Velhas em oito abas
Escolhida a bacia, todo o resto da tela deriva dessa escolha. As capturas abaixo são da ottobacia 76941111, a foz do Rio das Velhas no São Francisco, em Minas Gerais, feitas em 30/09/2026 sobre a BHO 2017 5k.
Busca que entende homônimos
"Rio das Velhas" existe 19 vezes na base, do São Francisco ao Paraguai. O catálogo de toponímia pré-computado, com 93.394 pares de nome e curso d'água, devolve todos em milissegundos, ordenados por área e com a região hidrográfica ao lado. O painel legado fazia um select distinct de 463 mil linhas a cada abertura e despejava 93 mil nomes numa tabela para rolar à mão.
| Grandeza | Valor |
|---|---|
| área a montante | 27.871 km² |
| ottobacias | 2.839 |
| nascentes | 1.420 |
| rede de drenagem | 14.824 km |
| extensão do curso principal | 811 km |
| distância da foz ao oceano | 2.055 km |
| trechos até o exutório do São Francisco | 659 |
A primeira versão delimitava o Rio das Velhas em 18 segundos. Hoje leva meio segundo, e 5 milissegundos na segunda vez
As tabelas geométricas da BHO não têm índice utilizável no código da ottobacia; o único índice que serve é o espacial. O ganho veio de três decisões: guardar a caixa envolvente de cada bacia no cache da rede, para que toda consulta comece pela geometria; dissolver ottobacias como cobertura poligonal, costurando arestas em vez de intersectar polígonos; e mandar a hidrografia para a tela simplificada, invisível no zoom de uma bacia.
| Operação | Antes | Depois |
|---|---|---|
| contorno da bacia | 17.964 ms | 511 ms |
| hidrografia (tamanho da resposta) | 6.364 KB | 1.030 KB |
| sub-bacias | 32.859 ms | 1.468 ms |
| recorte de 250 unidades | 30.181 ms | 143 ms |
| segunda visita à mesma bacia | igual à primeira | 5 ms |
Medido no Rio das Velhas em agosto de 2026 (docs/09 §4.4).
Uma tela só, seis maneiras de perguntar e seis camadas de resposta
Capturas reais da interface, feitas em 30/09/2026 no ambiente interno do DPM. Selecione uma imagem para ampliar.
Seis consultas
Rio (nome), Código (cobacia), Ponto (lon/lat ou clique), Lote (vários pontos de interesse de uma vez), Polígono (domínio desenhado ou enviado) e Incremental (bacia entre seções). Cada uma corresponde a um quadro do painel legado.
Seis produtos
Contorno da bacia, hidrografia, curso principal, ottobacias, ottobacia do exutório e sub-bacias, com a hidrografia colorida por ordem de Strahler, ordem do curso, área acumulada ou dominialidade. Mais o que o Java não tinha: perfil, composição, relação entre dois pontos, lâmina d'água e código Otto.
Exportar
Shapefile ou GeoJSON: um ZIP com as cinco camadas em EPSG:4326, a tabela de atributos em CSV e um LEIA-ME com a procedência. O que o botão TOTAL gravava em disco.
Topologia em memória, geometria no banco, respostas em cache
Carga da topologia
Um script lê a base do PostGIS uma vez e grava a rede (códigos, ligações, áreas e caixas envolventes) em arquivos de 20 MB. Na BHAE, que não traz a topologia pronta, ela é calculada no próprio script em 0,8 s.
Arranque
O servidor carrega as duas bases e aquece os índices derivados em cerca de 0,6 s. Pagar isso no início é melhor do que na primeira consulta do usuário.
Navegação
Montante, jusante, nascentes, curso principal, perfil e estatísticas saem do array em memória, sem tocar no banco.
Geometria
Contorno, hidrografia, ottobacias e ponto vão ao PostGIS, sempre começando pela caixa envolvente e dissolvendo como cobertura poligonal; a rede vai simplificada e com detalhe automático.
Cache e exportação
Cada resposta geométrica fica em disco, com chave por base e parâmetros e teto de 400 MB. A exportação empacota as camadas com a procedência.
A ferramenta de apoio que virou o endereço de todos os resultados
- Modelagem e regionalização. Assinaturas de vazão, intervalo conformal e classe de confiança A–D em cada ottobacia; série diária sob demanda para qualquer trecho.
- Curva-chave e HAND. A lâmina de referência em 463.105 trechos da BHO 2017 e o HAND alinhado à drenagem da BHO, não à que o modelo digital de elevação inventa.
- Elasticidade. A ponte de Budyko responde por unidade hidrográfica da BHO ou da BHAE: quanto a média, a Q95 e a cheia mudam quando o clima muda.
- Webservice ANA. Selecionar estações pela bacia de um rio: a ottobacia 8629111 (Rio Negro, PR/SC, 9.829 km²) devolve 33 estações dentro do contorno e 72 com 20 km de margem.
- Balanço hídrico e acumulação de demandas. Propagação em cascata pela topologia, o uso clássico do painel legado.
Nenhum sistema importa código de outro. Quando um deles precisa da BHO, chama o núcleo compartilhado diretamente, com o motivo escrito no código. Assim, se este sistema cair, o vizinho não cai junto.
O que entra, o que sai e o que ainda não é possível
Dados
- BHO 2017 5k (bho_2017_v_01_05_5k, 2018): 464.067 trechos, 93.394 rios nomeados, 43 campos. A referência.
- BHAE 2023 (bhae_v_01_01): 482.349 trechos, 83.494 rios nomeados, com HGM e Curve Number 2022.
- Ambas no PostGIS do DPM, em leitura; a topologia em cache local.
Validação
- Área propagada pela topologia confere com a base: Amazonas 5.921.836 km² (0,00%); Rio Negro 9.839 km².
- Em 167.091 bacias acima de 100 km², erro mediano 0,000%; só 53 (0,03%) passam de 1%, por código de curso inválido na própria base.
- As duas bases concordam no Jequitinhonha: 69.815 km² (BHO) e 69.811 km² (BHAE).
- Uma única regra de curso d'água, fixada por teste, onde o Java tinha duas que discordavam.
Limitações
- A BHO não traz cota: o perfil é hidrológico (área acumulada), não altimétrico.
- O São Francisco leva cerca de 8 s na primeira visita.
- 53 bacias têm curso d'água inválido na base; é qualidade de dado da BHO, não do porte.
- A BHAE não tem atributos climáticos próprios; toma emprestado da BHO por centroide.
- Sem banco, contorno, hidrografia e ponto não respondem; montante, jusante e perfil continuam funcionando.
Estável desde agosto de 2026
- As seis consultas e os seis produtos do painel BHO2017 do FERAH/OpenJUMP, portados e verificados (25/08/2026).
- Duas bases (BHO 2017 5k e BHAE 2023) com topologia em memória e cache de respostas.
- Perfil, composição, relação entre pontos, lâmina d'água e código Otto, que o painel legado não tinha.
- Exportação em Shapefile e GeoJSON com procedência.
- Sistema em operação no ambiente interno do DPM, sem endereço público.
- O quadro de estado dos sistemas (04/09/2026) registra "estável, nada pendente".
- Camada de mancha de inundação por ottobacia, ligada ao HAND, prevista na documentação do sistema Curva-chave.
- Contorno das bacias muito grandes em menos de um segundo, quando o servidor tiver a biblioteca geométrica mais nova.
Bases, método e documentação
Bases e método
- ANA. Base Hidrográfica Ottocodificada Multiescalas 2017 5k. metadados.snirh.gov.br.
- ANA. Base Hidrográfica Ottocodificada por Área Elementar (BHAE), versão 2023. Catálogo de metadados do SNIRH: metadados.snirh.gov.br.
- Pfafstetter, O. Classificação de bacias hidrográficas: metodologia de codificação. Rio de Janeiro: DNOS, 1989. Manuscrito não publicado.
- Verdin, K. L.; Verdin, J. P. A topological system for delineation and codification of the Earth's river basins. Journal of Hydrology, v. 218, p. 1–12, 1999. doi:10.1016/S0022-1694(99)00011-6.
- Strahler, A. N. Quantitative analysis of watershed geomorphology. Transactions, American Geophysical Union, v. 38, n. 6, p. 913–920, 1957.
Documentação do projeto
- FERAH. Núcleo BHO: regras de navegação Otto (docs/03) e implementação web dos módulos BHO e Webservice (docs/09), agosto de 2026. Documentos internos do DPM.
- FERAH. Estado dos sistemas, retrato de 04/09/2026 (docs/30-migracao). Documento interno.
- FERAH. Legado: painel BHO2017 do FERAH/OpenJUMP (org.snirh.util.analiseottobacia), origem das regras portadas.
Glossário breve
- Ottobacia
- Polígono de contribuição direta de um trecho de rio; a unidade da BHO.
- Código Otto (cobacia)
- Número que guarda a posição do trecho na rede, pela codificação de Pfafstetter.
- Curso d'água (cocursodag)
- O rio, da nascente à foz, a que o trecho pertence; um prefixo do código.
- Montante e jusante
- O que drena para o trecho e para onde o trecho drena.
- Exutório
- A seção de saída de uma bacia.
- Ordem de Strahler
- Hierarquia da rede: 1 nas cabeceiras; duas de mesma ordem que se juntam formam a ordem seguinte.
- Hidrorreferenciar
- Achar a ottobacia que contém uma coordenada.
- Dominialidade
- Se o rio é de domínio federal (cruza estados ou países) ou estadual.