Ir para o conteúdo

Coleta bruta (agrobr.bruto)

Guarda em disco o arquivo ou as páginas originais da fonte, como ela publica, e registra cada aquisição numa linha do manifesto.jsonl. Não devolve DataFrame nem normaliza nada: é para quem precisa do dado original, com hash, cabeçalhos e cobertura conferida. O formato do manifesto, o layout em disco, os status e a retomada estão no contrato da coleta bruta.

coletar

from agrobr import bruto

coleta = await bruto.coletar("ibge", "malha_municipal", uf="AL", destino="dados/bruto")
coleta.entrada.status          # "ok"
coleta.manifesto               # Path de dados/bruto/manifesto.jsonl

Versão síncrona: agrobr.sync.bruto.coletar(...), com os mesmos argumentos.

Parâmetros

Parâmetro Tipo Obrigatório Descrição
fonte str Sim Fonte da tabela de recursos (ana, cnuc, funai, ibama, ibge, incra, acervo_fundiario, sfb, sicar)
recurso str Sim Recurso da fonte, exatamente como na tabela
destino str | PathLike Sim Pasta da coleta; recebe o manifesto.jsonl e os arquivos
nome str Não Identifica a seleção no manifesto; padrão: a UF, ou brasil sem recorte. Obrigatório com bbox
uf str Depende Sigla da UF; obrigatória, opcional ou recusada conforme o recurso
bbox tuple[float, float, float, float] Não (minx, miny, maxx, maxy) em longitude/latitude; recusada nos recursos de arquivo (ZIP e CSV)
bbox_crs "EPSG:4674" | "EPSG:4326" Não CRS da bbox; padrão EPSG:4674
tamanho_pagina int Não Feições por página nos recursos paginados, de 1 a 1.000; padrão 100 (20 em funai/terras_indigenas); None nos recursos de arquivo e em incra/quilombolas (página única)
compactar bool Não Gzip local das páginas e controles; padrão True; o arquivo (ZIP ou CSV) é guardado como veio
retomar bool Não Reaproveita a entrada ok da mesma consulta depois de conferir os hashes; padrão False
limites bruto.LimitesBrutos Não Orçamento da chamada; padrão LimitesBrutos()

Recursos

Fonte Recurso Seleção Formato / chave da cobertura
ana massas_dagua UF e/ou bbox obrigatórios esri_json / FID
cnuc ucs UF, bbox, ambos ou Brasil; sempre limite=uc gml / cd_cnuc
ibge malha_municipal UF, bbox, ambos ou Brasil geojson / cd_mun
ibge areas_urbanizadas bbox ou Brasil; UF recusada geojson / fid
funai terras_indigenas, terras_indigenas_pontos Brasil; UF e bbox recusadas; polígonos com 20 por página no padrão geojson / gid
incra quilombolas Brasil; UF, bbox e tamanho_pagina recusados; página única, sem campo ordenável geojson / feature.id
acervo_fundiario sigef_publico, sigef_privado UF obrigatória zip
acervo_fundiario snci_publico, snci_privado, snci_brasil UF obrigatória zip
acervo_fundiario assentamentos Brasil; UF e bbox recusadas; o ZIP nacional do INCRA zip
sfb cnfp Brasil; UF e bbox recusadas; o Brasil inteiro pede tamanho_pagina=20 e max_bytes_pagina de 24 MiB esri_json / fid
sicar imoveis UF obrigatória; bbox opcional geojson / feature.id
cnuc cadastro Brasil; UF e bbox recusadas; edição 202607 conferida no catálogo do MMA csv
ibama termos_embargo Brasil; UF e bbox recusadas; traz dado pessoal (nome e CPF/CNPJ) csv
ibge malha_municipal_zip, areas_urbanizadas_zip Brasil; UF e bbox recusadas zip

Retorno

bruto.ColetaBruta, com manifesto (caminho absoluto do manifesto.jsonl), entrada (bruto.RecursoBruto, a linha do manifesto) e reutilizado (True só quando retomar=True reaproveitou uma entrada ok sem ir à rede).

Limites (bruto.LimitesBrutos)

Campo Padrão Aplicação
max_bytes_recurso 4 GiB Bytes do recurso inteiro; o arquivo tem teto de 4 GiB
max_bytes_pagina 8 MiB Cada página ou controle
max_paginas 10.000 Páginas por coleta
max_ids 500.000 IDs retidos para a conferência
max_bytes_ids 64 MiB Memória das estruturas de IDs
max_segundos 3.600 Prazo da chamada, incluindo esperas de retry e do rate limiter

Erros

Situação Resultado
Argumento, seleção, destino ou nome inválidos InvalidParameterError, antes da rede e sem mudar o manifesto
404 no arquivo (ZIP ou CSV) Retorna com status="ausente_na_fonte"; a próxima retomada tenta de novo
Falha HTTP ou de rede depois das tentativas SourceUnavailableError, com a entrada erro no manifesto
Envelope inválido, erro OGC em HTTP 200, arquivo 200 fora do formato ou cobertura divergente ParseError, com a entrada erro
Limite excedido ResourceLimitError
Manifesto existente inconsistente ContractViolationError; o manifesto anterior fica intacto

A coleta não tem retorno parcial de sucesso: nos recursos paginados, ok exige a cobertura inteira conferida (contagens antes e depois, IDs, CRS e a ordem da paginação); nos de arquivo, o corpo inteiro recebido e o início conferido (assinatura do ZIP ou cabeçalho do CSV). Veja o contrato para a regra de cada recurso e o exemplo completo em examples/bruto.py.