Coleta bruta¶
O modo bruto guarda os arquivos e as respostas originais das fontes, com proveniência e
verificação de integridade. A API assíncrona é agrobr.bruto.coletar; a mesma operação está
disponível em agrobr.sync.bruto.coletar. Não requer o extra geo.
O contrato público do manifesto.jsonl é 1.0.0, independente da versão da biblioteca e
dos contratos de tabelas. Ele descreve a aquisição, não o schema dos atributos publicados
pela fonte. Os formatos originais são ZIP, CSV, Esri JSON, GML e GeoJSON.
API e recursos¶
from os import PathLike
from typing import Literal
from agrobr import bruto
async def coletar(
fonte: str,
recurso: str,
*,
destino: str | PathLike[str],
nome: str | None = None,
uf: str | None = None,
bbox: tuple[float, float, float, float] | None = None,
bbox_crs: Literal["EPSG:4674", "EPSG:4326"] = "EPSG:4674",
tamanho_pagina: int | None = None,
compactar: bool = True,
retomar: bool = False,
limites: bruto.LimitesBrutos | None = None,
) -> bruto.ColetaBruta: ...
fonte e recurso são os identificadores exatos da tabela. Não são URLs ou nomes livres.
bbox_crs aceita somente EPSG:4674 e EPSG:4326.
| Fonte | Recurso | Seleção | Formato / identidade de paginação |
|---|---|---|---|
ana |
massas_dagua |
UF e/ou bbox obrigatórios | esri_json / FID |
cnuc |
ucs |
UF, bbox, ambos ou Brasil; filtro obrigatório limite=uc |
gml / cd_cnuc |
ibge |
malha_municipal |
UF, bbox, ambos ou Brasil | geojson / cd_mun |
ibge |
areas_urbanizadas |
bbox ou Brasil; UF não é aceita | geojson / fid |
funai |
terras_indigenas |
Brasil; UF e bbox não são aceitas; tamanho_pagina padrão 20 |
geojson / gid |
funai |
terras_indigenas_pontos |
Brasil; UF e bbox não são aceitas | geojson / gid |
incra |
quilombolas |
Brasil; UF, bbox e tamanho_pagina não são aceitos; página única |
geojson / feature.id |
acervo_fundiario |
sigef_publico |
UF obrigatória; bbox não é aceita | zip |
acervo_fundiario |
sigef_privado |
UF obrigatória; bbox não é aceita | zip |
acervo_fundiario |
snci_publico |
UF obrigatória; bbox não é aceita | zip |
acervo_fundiario |
snci_privado |
UF obrigatória; bbox não é aceita | zip |
acervo_fundiario |
snci_brasil |
UF obrigatória; arquivo Brasil da UF | zip |
acervo_fundiario |
assentamentos |
Brasil; UF e bbox não são aceitas | zip |
cnuc |
cadastro |
Brasil; UF e bbox não são aceitas | csv |
ibama |
termos_embargo |
Brasil; UF e bbox não são aceitas | csv |
ibge |
malha_municipal_zip |
Brasil; UF e bbox não são aceitas | zip |
ibge |
areas_urbanizadas_zip |
Brasil; UF e bbox não são aceitas | zip |
sfb |
cnfp |
Brasil; UF e bbox não são aceitas; 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 |
UF aceita sigla, convertida para maiúsculas. UF e bbox combinados significam interseção.
A bbox é (minx, miny, maxx, maxy), sempre longitude/latitude na entrada, com números
finitos, -180 <= minx < maxx <= 180 e -90 <= miny < maxy <= 90. Não cruza o
antimeridiano. O adaptador serializa a ordem de eixos exigida pelo protocolo; não reprojeta
a resposta. Sem bbox, bbox_crs fica null no manifesto.
nome identifica a seleção: o padrão é a UF, ou brasil quando não há recorte.
Com bbox, nome é obrigatório, mesmo com UF. Aceita [A-Za-z0-9][A-Za-z0-9_-]{0,63};
nomes de dispositivo do Windows, como CON, NUL e COM1, são recusados sem distinguir
maiúsculas. Dois nomes que diferem apenas por maiúsculas colidem em qualquer plataforma.
O nome não aplica filtro.
tamanho_pagina=None resolve para 100 em consultas paginadas, exceto em funai/terras_indigenas
(20) e em incra/quilombolas (página única, que não aceita o parâmetro). Um valor explícito deve
ser inteiro entre 1 e 1.000, nunca booleano. Em arquivo (ZIP ou CSV), deve ser None. Ele divide a aquisição;
não limita o total de feições. compactar=True aplica gzip às páginas e controles, com
mtime=0 e sem nome original no cabeçalho; arquivo (ZIP ou CSV) não recebe compactação adicional.
compactar=False preserva os mesmos corpos sem gzip.
A malha municipal usa a camada CGMAT:qg_2025_030_munic, edição 2025; áreas urbanizadas
usam CGEO:AU_2026_AreasUrbanizadas2022_Brasil, edição 2022. A edição está em
selecao.edicao; não é inferida do ano de coleta. O bruto pede todos os atributos e a
geometria. ANA pede explicitamente outSR=4674 e returnGeometry=true; CNUC e IBGE
não pedem CRS de saída, e conferem o CRS nativo declarado, EPSG:4674. Um CRS
incompatível encerra a consulta com erro. O ZIP conserva seu PRJ; crs=null significa
que o CRS do arquivo não foi verificado.
O SICAR (sicar/imoveis) usa a camada da UF, sicar:sicar_imoveis_<uf>, sem CRS de saída, e confere o CRS
nativo EPSG:4674. Guarda todas as versões publicadas de um imóvel e conta pelo feature.id, não pelo
cod_imovel. Como o SICAR não publica um identificador ordenável, as páginas vêm em
sortBy=cod_imovel A,dat_criacao A, e a coleta só fecha ok com o par (cod_imovel, dat_criacao)
estritamente crescente em toda a coleta: duas versões com o mesmo dat_criacao, par fora de ordem ou data
fora do formato encerram a consulta com erro. Um ok prova a ordem das feições recebidas naquela coleta,
não que o par seja único na base inteira.
As terras indígenas da FUNAI (funai/terras_indigenas, camada Funai:tis_poligonais, e
funai/terras_indigenas_pontos, camada Funai:tis_pontos) são sempre nacionais: UF e bbox são recusadas e
selecao.edicao é null, porque as camadas não publicam edição. As páginas vêm em sortBy=gid, sem srsName nem
propertyName, e a coleta só fecha ok com gid inteiro e estritamente crescente em toda a coleta. O GeoServer
recusa resultType=hits (HTTP 403): as contagens antes e depois são o numberMatched de um GetFeature GeoJSON com
count=1 na mesma ordem, guardado como controle json. O CRS nativo conferido é EPSG:4674. Os polígonos são
grandes: em 04/10/2026 eram 665 feições e 49,3 MB, a maior com 2,95 MB; com o padrão de 20 por página, a maior
página tinha 5,6 MB, e 40 ou mais por página passam do teto de 8 MiB. Os pontos (163 feições, cerca de 100 kB)
seguem o padrão de 100.
Os quilombolas (incra/quilombolas) vêm da camada CMR-PUBLICO:lim_quilombolas_a, do INCRA, publicada no
GeoServer do CMR, sempre nacional: UF e bbox são recusadas e selecao.edicao é null. A camada não tem atributo
único nem ordenável, então não é paginada: tamanho_pagina não é aceito e a coleta é uma página única
(count=1000&startIndex=0, sem sortBy e sem CRS de saída), registrada com opcoes.tamanho_pagina=1000. É a
exceção à conferência da ordem pelo campo: o ok exige a contagem (resultType=hits) antes e depois igual às
feições recebidas e ao numberMatched da página, com feature.id presentes e distintos
(cobertura.campo_id="feature.id"). Contagem acima de 1.000 encerra a coleta com ParseError antes de pedir a
página; página acima de max_bytes_pagina, com ResourceLimitError. O CRS nativo conferido é EPSG:4674; em
04/10/2026 eram 445 feições numa página de 6,7 MB.
O CNFP (sfb/cnfp) é a camada Hosted/CNFP_v19_03_retificado_17072025/FeatureServer/9 do ArcGIS do SFB,
sempre nacional: UF e bbox são recusadas. A edição em selecao.edicao é 20250717, a data de retificação no nome do
serviço; a última edição da camada só aparece no etag das respostas (o lastEditDate do ArcGIS, em milissegundos).
O agrobr conta, lê a lista oficial de fid e pede as páginas por faixa de fid, com orderByFields=fid, todos os
atributos e a geometria, sem outSR. Cada página tem de trazer exatamente os fid da faixa, em ordem crescente, e o
CRS nativo declarado (wkid 102100, latestWkid 3857), registrado como EPSG:3857. Os polígonos são grandes: em
04/10/2026 eram 20.829 feições, a maior com 5,52 MB, e páginas de 100 chegavam a 37,7 MB. Nenhum tamanho de
página cabe nos limites padrão (3 ou mais feições por página passam de 8 MiB; 2 ou menos passam de max_paginas), e
a chamada padrão para cedo, na 4ª página, com ResourceLimitError que informa a página, a faixa de fid e o
max_bytes_pagina. Para o Brasil inteiro, use tamanho_pagina=20 e
limites=bruto.LimitesBrutos(max_bytes_pagina=24 * 1024**2): a coleta de 04/10/2026 fechou ok com 1.042 páginas (980 MB),
a maior com 19,3 MB, em 37,5 minutos.
Os cinco arquivos nacionais (acervo_fundiario/assentamentos, cnuc/cadastro, ibama/termos_embargo,
ibge/malha_municipal_zip e ibge/areas_urbanizadas_zip) vêm num GET só, sem recorte: UF e bbox são recusadas e o nome padrão é brasil.
O corpo é guardado como a fonte publica, inclusive o encoding, o separador e os fins de linha do CSV. Antes de publicá-lo,
o agrobr confere só o início: a assinatura do ZIP ou, no CSV, a primeira linha com as colunas que identificam a tabela
(Código UC no CNUC; SEQ_TAD e NUM_TAD no IBAMA). HTML de erro, planilha XLSX rotulada como CSV ou corpo vazio
em HTTP 200 encerram a coleta com ParseError. A edição fica em selecao.edicao: 2025 na malha municipal
(BR_Municipios_2025.zip), 2022 nas áreas urbanizadas (AreasUrbanizadas2022_Brasil.zip, a mesma publicação da
camada WFS), 202607 (ano e mês) no cadastro do CNUC e null nos termos de embargo do IBAMA e nos assentamentos do INCRA, que não
publicam edição; a data do arquivo está em cabecalhos (last-modified). Os assentamentos são o Assentamento Brasil.zip
nacional do Acervo Fundiário, não o arquivo de uma UF; os outros recursos do Acervo seguem por UF.
O cadastro do CNUC é o CSV da edição de julho de 2026 no catálogo de dados abertos do MMA. Antes do GET, o agrobr
confere no catálogo (package_show?id=unidadesdeconservacao) que o recurso CNUC_2026_07 em CSV aponta para a URL
fixada na biblioteca. Outra URL (edição republicada ou retirada) encerra a coleta com ParseError, e o catálogo fora do
ar, com SourceUnavailableError. A consulta ao catálogo conta no orçamento, no prazo e nas tentativas da chamada
(com o teto de max_bytes_pagina) e não fica no manifesto; se ela falhar, erro.url é a do catálogo. Edição nova do
cadastro chega com versão nova do agrobr.
O CSV dos termos de embargo do IBAMA traz nome e CPF/CNPJ das pessoas físicas e jurídicas embargadas. É dado pessoal:
guarde e trate o arquivo conforme a LGPD. A coleta avisa com UserWarning (uma vez por processo) e grava o mesmo aviso
em avisos da entrada.
O retorno ColetaBruta tem três atributos obrigatórios:
| Atributo | Tipo Python | Exemplo / significado |
|---|---|---|
manifesto |
pathlib.Path |
Caminho absoluto de destino/manifesto.jsonl |
entrada |
bruto.RecursoBruto |
Modelo Pydantic da linha; entrada.status e entrada.model_dump(mode="json") |
reutilizado |
bool |
True somente quando retomar=True reutilizou um recurso ok verificado, sem rede |
A função retorna para ok e ausente_na_fonte. Falhas de aquisição registram erro,
quando possível, e levantam a exceção indicada adiante. Não há retorno parcial de sucesso.
Representação e layout¶
O manifesto usa UTF-8 sem BOM, LF e uma linha JSON completa por recurso, inclusive a
última terminada em LF. Não contém comentários, linhas vazias, cabeçalho ou linha de áreas
de estudo. A chave é (fonte, recurso, nome), com uma única entrada corrente.
A ordem das linhas não tem significado. A ordem de paginas tem: números contíguos
a partir de 1, na ordem da aquisição, sem ordenar ou alterar os bytes das feições.
coleta/
manifesto.jsonl
ana/massas_dagua/AL/<coleta_id>/p000001.esri.json.gz
ana/massas_dagua/AL/<coleta_id>/controles/c000001.json.gz
cnuc/ucs/brasil/<coleta_id>/p000001.gml.gz
ibge/malha_municipal/AL/<coleta_id>/p000001.geojson.gz
ibge/areas_urbanizadas/area_teste/<coleta_id>/p000001.geojson.gz
acervo_fundiario/snci_publico/AL/<coleta_id>/original.zip
cnuc/cadastro/brasil/<coleta_id>/original.csv
.bruto/lock
.bruto/<coleta_id>/checkpoint.json
.bruto/<coleta_id>/diagnostico/
Todo campo arquivo contém um caminho relativo a destino, com /, nunca absoluto,
.. ou escape por link/junction. coleta_id é opaco: não extraia data dele. O sufixo
.gz só existe com compressao="gzip". Controles usam a extensão de seu corpo, JSON
ou XML; o arquivo do modo arquivo é original.zip ou original.csv, conforme o formato. O leitor deve usar
formato e compressao, não adivinhar pela extensão.
.bruto é estado privado, sem schema público; não é fonte de recursos consumíveis.
Corpos são gravados em temporários .part e publicados depois de fechados e conferidos.
Só depois é substituído o manifesto, de forma atômica. Uma falha pode deixar artefatos
órfãos, mas nunca deve publicar uma linha ok apontando para um corpo parcial.
A substituição de uma entrada mantém as outras. Há uma trava exclusiva por destino,
válida entre threads e processos e liberada pelo sistema operacional ao encerrar o
processo. Outro gravador falha imediatamente com ResourceLimitError; não espera uma fila.
bytes e sha256 descrevem o corpo após decodificar o Content-Encoding HTTP e antes
do gzip local. Não são bytes da conexão, hash de ZIP extraído ou hash do gzip local.
Encoding textual, espaços, propriedades, fins de linha, atributos e geometrias permanecem
intactos. bytes_armazenados é o tamanho do artefato no disco; pode ser maior que bytes
em corpos pequenos comprimidos. Ler, descomprimir quando indicado e calcular SHA-256 deve
reproduzir sha256. ETag não substitui esse hash.
Schema 1.0.0: entrada de recurso¶
Todas as chaves das tabelas são obrigatórias. null é um valor permitido onde
explicitado, não autorização para omitir a chave. Objetos vazios e listas vazias são
{} e []. Inteiros não aceitam booleanos; números não aceitam NaN ou infinito.
UTC nas tabelas significa string RFC 3339 terminada em Z, com fração de segundo opcional de 1 a 6
dígitos, como 2026-10-02T20:00:00Z ou 2026-10-02T20:00:00.125Z. Hash é string SHA-256 de 64 dígitos hexadecimais minúsculos.
| Campo | Tipo JSON | Obrigatório | Exemplo / regra |
|---|---|---|---|
schema_version |
string | Sim | "1.0.0" |
tipo |
string literal | Sim | "recurso" |
fonte |
string | Sim | "ana"; identificador registrado da tabela da API |
recurso |
string | Sim | "massas_dagua"; permitido para aquela fonte |
nome |
string | Sim | "AL" |
consulta_id |
hash | Sim | Identidade opaca da consulta normalizada; não é hash de dados |
coleta_id |
string não vazia | Sim | "exemplo-ana-001"; distingue tentativas completas |
status |
enum | Sim | "ok", "erro" ou "ausente_na_fonte" |
inicio |
UTC | Sim | Início da tentativa do recurso |
fim |
UTC | Sim | Fim da tentativa; inicio <= fim |
registrado_em |
UTC | Sim | Publicação da entrada; fim <= registrado_em |
url_solicitada |
string URL HTTPS | Sim | URL do arquivo; em paginado, URL do endpoint sem query string |
url |
string URL HTTPS | Sim | URL final do GET de arquivo; na consulta paginada, mesma URL lógica de url_solicitada |
parametros |
objeto string → string | Sim | {"outFields":"*","outSR":"4674"}; todos os parâmetros lógicos, sem os de paginação; {} em arquivo |
selecao |
objeto Seleção | Sim | Recorte e publicação escolhidos, tabela abaixo |
opcoes |
objeto Opções | Sim | Opções efetivas e limites desta tentativa |
modo |
enum | Sim | "arquivo" ou "paginado" |
formato |
enum | Sim | "zip", "csv", "esri_json", "gml" ou "geojson"; zip e csv só em arquivo |
crs |
string ou null | Sim | "EPSG:4674" quando verificado; null quando não verificado |
crs_evidencia |
objeto EvidênciaCRS ou null | Sim | null exatamente quando crs=null |
http_status |
inteiro 100–599 ou null | Sim | Último GET de arquivo, p.ex. 200 ou 404; null em paginado ou sem resposta |
http_inicio |
UTC ou null | Sim | Início do último GET de arquivo; null em paginado ou GET não iniciado |
http_fim |
UTC ou null | Sim | Fim desse GET; null nas mesmas condições |
arquivo |
string de caminho ou null | Sim | "acervo_fundiario/snci_publico/AL/exemplo-001/original.zip" |
sha256 |
hash ou null | Sim | Hash do arquivo completo; null em paginado ou sem arquivo válido |
bytes |
inteiro >= 0 ou null | Sim | 11900; tamanho original, não uma contagem de feições |
bytes_armazenados |
inteiro >= 0 ou null | Sim | Igual a bytes em arquivo (ZIP ou CSV), sem compactação adicional |
compressao |
enum | Sim | "nenhuma" para arquivo e para o topo de paginado; gzip consta em cada artefato |
cabecalhos |
objeto string → string | Sim | Cabeçalhos do último GET de arquivo, mesmo 404; {} em paginado |
paginas |
lista de Página | Sim | [] em arquivo e em seleção paginada com zero feições |
controles |
lista de Controle | Sim | Respostas de contagem, IDs e/ou CRS; [] quando não houver |
feicoes |
inteiro >= 0 ou null | Sim | Total declarado antes da paginação; null para arquivo ou contagem desconhecida |
cobertura |
objeto Cobertura | Sim | Resultado da conferência, não uma promessa transacional |
erro |
objeto Erro ou null | Sim | null somente em ok |
avisos |
lista de strings | Sim | [] quando vazio; nunca substitui uma falha de integridade |
agrobr_version |
string | Sim | "2.0.0"; versão que adquiriu os corpos |
Os quatro campos arquivo, sha256, bytes e bytes_armazenados são todos preenchidos
ou todos null. Em modo="arquivo", status="ok", são preenchidos e http_status=200.
Em paginado são sempre null: não existe um arquivo concatenado nem hash agregado implícito.
No topo de paginado, URLs representam o pedido lógico; as URLs efetivamente executadas,
incluindo redirecionamento e paginação, estão nas páginas e controles.
Identidade da consulta¶
consulta_id é o SHA-256 de um objeto JSON canônico em UTF-8 com exatamente estas chaves:
fonte, recurso, nome, url_solicitada, parametros, selecao, modo, formato,
tamanho_pagina e compactar. Os oito primeiros valores vêm da entrada; os dois últimos,
de opcoes. A serialização usa ensure_ascii=False, sort_keys=True,
separators=(",", ":") e allow_nan=False, sem LF final.
A normalização converte UF para maiúsculas, coordenadas da bbox para float (zero negativo
para 0.0), preenche a seleção com null onde não se aplica e resolve opções efetivas.
O nome mantém sua grafia; uma grafia diferente apenas na caixa é colisão.
Limites, horários, versão da biblioteca e retomar ficam fora dessa identidade.
Em paginado, as URLs do topo identificam o endpoint sem query string;
parametros contém a consulta lógica completa. URLs de página/controle contêm a
query string realmente pedida. parametros da página registra o pedido original,
inclusive se houver redirecionamento; url registra a URL final da resposta.
Seleção, opções e evidência de CRS¶
| Objeto.campo | Tipo | Obrigatório | Exemplo / regra |
|---|---|---|---|
selecao.uf |
string ou null | Sim | "AL" |
selecao.bbox |
lista de quatro números ou null | Sim | [-48.1,-16.1,-47.9,-15.9] |
selecao.bbox_crs |
enum ou null | Sim | "EPSG:4674", "EPSG:4326"; null sem bbox |
selecao.camada |
string ou null | Sim | "CGMAT:qg_2025_030_munic"; null em arquivo |
selecao.edicao |
inteiro ou null | Sim | 2025, ou 202607 (ano e mês) no cadastro do CNUC; null quando a fonte não identifica edição |
selecao.natureza |
enum ou null | Sim | "publico", "privado"; null em SNCI Brasil e demais fontes |
opcoes.tamanho_pagina |
inteiro 1–1000 ou null | Sim | 100; null em arquivo |
opcoes.compactar |
booleano | Sim | true; false efetivo em arquivo |
opcoes.limites |
objeto Limites | Sim | Todos os valores efetivos definidos na seção Limites |
crs_evidencia.tipo |
enum | Sim, no objeto | "pagina", "controle" ou "prj" |
crs_evidencia.arquivo |
caminho | Sim, no objeto | Um artefato desta entrada |
crs_evidencia.localizador |
string não vazia | Sim, no objeto | "/spatialReference/wkid", XPath de GML/XML ou nome do membro PRJ |
crs_evidencia.valor |
string não vazia | Sim, no objeto | "4674" ou URN/WKT realmente lido |
A evidência aponta para bytes preservados, não para uma suposição a partir do endpoint.
Para uma consulta sem feições, pode haver crs=null se nenhum controle verificou o CRS.
Para consulta com feições, todas as páginas precisam declarar o CRS esperado e concordar;
o topo pode apontar para a primeira evidência. Ler PRJ é opcional, passa por teto de
expansão e não extrai o ZIP.
Página e controle¶
Cada Página ou Controle contém todos os campos comuns a seguir:
| Campo | Tipo | Obrigatório | Exemplo / regra |
|---|---|---|---|
numero |
inteiro >= 1 | Sim | 1; sequencial dentro de sua própria lista |
url_solicitada |
URL HTTPS | Sim | GET completo, incluindo query realmente enviada |
url |
URL HTTPS | Sim | URL final da resposta |
parametros |
objeto string → string | Sim | Query efetiva do pedido original, com count/startIndex ou faixa FID |
inicio |
UTC | Sim | Início do pedido que forneceu o corpo |
fim |
UTC | Sim | Fim da leitura do corpo; dentro do intervalo do recurso |
http_status |
inteiro literal | Sim | 200; corpos de erro ficam no diagnóstico privado |
arquivo |
caminho | Sim | "ibge/malha_municipal/AL/exemplo-001/p000001.geojson.gz" |
sha256 |
hash | Sim | SHA-256 do corpo original completo |
bytes |
inteiro >= 0 | Sim | 73038 |
bytes_armazenados |
inteiro >= 0 | Sim | Tamanho do corpo guardado, incluindo gzip local |
compressao |
enum | Sim | "gzip" ou "nenhuma" |
formato |
enum | Sim | Página: esri_json/gml/geojson; controle: json/xml |
cabecalhos |
objeto string → string | Sim | {"etag":"W/\"abc\""} ou {} |
Além dos campos comuns, uma Página contém:
| Campo | Tipo | Obrigatório | Exemplo / regra |
|---|---|---|---|
paginacao |
objeto discriminado | Sim | Um dos dois formatos abaixo |
feicoes_recebidas |
inteiro >= 0 | Sim | Número de feições no envelope, antes de qualquer tratamento |
ids_distintos |
inteiro >= 0 | Sim | IDs distintos desta página, não o acumulado |
total_declarado |
inteiro >= 0, literal "unknown" ou null |
Sim | "unknown" no GML CNUC; null se o envelope não declara total |
crs |
string ou null | Sim | "EPSG:4674"; null só pode ocorrer em página de recurso com erro |
As duas formas completas de paginacao são:
| Forma | Campos obrigatórios, tipos e exemplo |
|---|---|
| WFS | {"tipo":"offset","inicio":0,"quantidade":100}; inicio inteiro >= 0, quantidade inteiro >= 1, ambos do pedido |
| ANA | {"tipo":"fid","min":1,"max":100,"quantidade":100}; min/max inteiros, min <= max; quantidade conta IDs esperados, não a largura numérica |
Um Controle acrescenta papel (obrigatório, enum contagem_antes, contagem_depois,
ids ou crs) e valor_declarado (obrigatório, inteiro >= 0, "unknown" ou null).
Contagem usa o valor literal do envelope; IDs e CRS usam null. Controle não tem
paginacao, feicoes_recebidas, ids_distintos, total_declarado ou crs.
cabecalhos admite apenas as chaves minúsculas last-modified, etag,
content-type, content-length, content-encoding, date, retry-after e location.
Só inclui as recebidas, com seu valor textual, preservando aspas e W/ do ETag.
Não contém cookies, Authorization ou segredos. Os cabeçalhos são da resposta GET
correspondente; um HEAD posterior não é atribuído àqueles bytes.
content-length não é comparável a bytes quando Content-Encoding altera a representação.
Cobertura e erro¶
| Objeto.campo | Tipo | Obrigatório | Exemplo / regra |
|---|---|---|---|
cobertura.total_antes |
inteiro >= 0 ou null | Sim | Total do controle anterior; null quando desconhecido |
cobertura.total_depois |
inteiro >= 0 ou null | Sim | Total do controle posterior |
cobertura.recebidas |
inteiro >= 0 ou null | Sim | Soma das feições das páginas preservadas |
cobertura.ids_distintos |
inteiro >= 0 ou null | Sim | Cardinalidade da união dos IDs recebidos |
cobertura.ids_repetidos |
inteiro >= 0 ou null | Sim | Ocorrências excedentes, inclusive entre páginas |
cobertura.campo_id |
string ou null | Sim | "FID", "cd_cnuc", "cd_mun" ou "fid" |
cobertura.estado |
enum | Sim | "conferida", "divergente", "nao_comprovada" ou "nao_aplicavel" |
cobertura.completa |
booleano | Sim | true apenas em recurso ok |
cobertura.snapshot_transacional |
booleano literal | Sim | false |
cobertura.controles |
lista de caminhos | Sim | Referências aos controles usados; todos devem existir em controles |
erro.tipo |
enum | Sim, no objeto | "HTTP404", "SourceUnavailableError", "ParseError", "ResourceLimitError", "ContractViolationError", "OSError", "CancelledError" ou "KeyboardInterrupt" |
erro.mensagem |
string não vazia | Sim, no objeto | "Contagem mudou durante a coleta"; em português |
erro.http_status |
inteiro 100–599 ou null | Sim, no objeto | 404; null se não houver resposta HTTP causadora |
erro.url |
URL HTTPS ou null | Sim, no objeto | Pedido que falhou; null para falha exclusivamente local |
Para arquivo, contagens e campo_id são null, estado é nao_aplicavel e referências
de cobertura são []. completa=true comprova aquisição do arquivo, não completude
temática ou validade de todas as geometrias.
Em paginado ok, a igualdade exigida é
total_antes == total_depois == feicoes == recebidas == ids_distintos,
com ids_repetidos=0, IDs presentes e estado="conferida". As referências incluem
contagem antes/depois e, na ANA e no CNFP, a lista oficial de IDs. IDs recebidos devem ser
exatamente os listados, por faixa e no conjunto. Para WFS, ordem e avanço devem ser
conferidos pelo campo da tabela da API (exceto a página única de incra/quilombolas, conferida como
descrito acima). ID duplicado, nulo, página repetida, página curta
antes do fim, total alterado, CRS inesperado ou continuidade não demonstrada impedem ok.
Um total numérico declarado em página precisa coincidir com a contagem de controle.
"unknown" não vale zero: só os controles com total conhecido permitem fechar a coleta.
Zero confirmado antes/depois é ok com paginas=[] e contagens zero; ANA e CNFP também
conferem a lista de IDs vazia. Sem páginas, recebidas, ids_distintos e
ids_repetidos começam em zero em paginado. Uma tentativa incompleta usa
nao_comprovada; inconsistência observada usa divergente.
Inconsistências comprovadas pelo adaptador, incluindo FIDs fora da faixa e alteração de contagem, encerram a coleta com ParseError, status="erro" e cobertura.estado="divergente". Uma resposta ilegível, sem evidência suficiente para comparar a cobertura, permanece nao_comprovada.
Conferir quantidades e IDs não detecta toda alteração de atributos feita durante a coleta.
Por isso snapshot_transacional=false permanece obrigatório.
Status, erros e limites¶
| Situação | Manifesto / retorno |
|---|---|
| Arquivo íntegro ou consulta inteiramente conferida | ok; retorna ColetaBruta |
| GET do arquivo original retorna 404 | ausente_na_fonte, erro.tipo="HTTP404"; retorna normalmente |
| 404 em página ou controle | erro; levanta SourceUnavailableError |
| 403, timeout, falha de rede, 429/5xx após tentativas | erro; levanta SourceUnavailableError |
| Erro OGC/ArcGIS em HTTP 200, envelope inválido, arquivo 200 fora do formato ou cobertura divergente | erro; levanta ParseError |
| Orçamento excedido | erro se a aquisição começou; levanta ResourceLimitError |
| Argumento, seleção, destino, colisão de chave ou versão de escrita inválidos | InvalidParameterError antes da rede e sem mudar o manifesto |
| Integridade de entrada existente ou invariante do manifesto inválida | ContractViolationError; preserva o manifesto anterior |
| Disco, permissão ou publicação falha | Propaga OSError; tenta registrar erro somente se ainda puder publicar com segurança |
| Cancelamento ou interrupção cooperativa | Propaga CancelledError/KeyboardInterrupt; registro erro em melhor esforço |
| Encerramento forçado, queda de energia | Pode não haver linha de erro; manifesto anterior e checkpoint ficam para retomada |
404 é uma observação com horário, não prova de ausência permanente. Não há blacklist de UF nem cache negativo: a próxima retomada tenta novamente. HTTP 200 com zero feições é sucesso vazio, nunca ausência.
Há uma requisição ativa por coleta, páginas sequenciais, sem pool de processos. Retry,
user agent, TLS e pausas respeitam a política da fonte e o rate limiter compartilhado.
O padrão HTTP é de três tentativas totais por pedido, configurável por
HTTPSettings.max_retries (zero vale uma tentativa); apenas falhas transitórias são
repetidas. 403/404, divergência, limite e erro de disco não são repetidos automaticamente.
Espera de retry e de rate limiter consome o prazo total. Não há fallback para outra fonte.
LimitesBrutos contém os campos abaixo; todos aparecem em opcoes.limites.
Inteiros são positivos, o prazo é positivo e finito; booleanos são recusados.
| Campo | Tipo | Padrão e exemplo | Aplicação |
|---|---|---|---|
max_bytes_recurso |
int | 4294967296 (4 GiB) |
Contadores separados de bytes HTTP codificados e decodificados, ambos limitados, somando controles, páginas, arquivo, a consulta ao catálogo do CNUC e tentativas falhas |
max_bytes_pagina |
int | 8388608 (8 MiB) |
Cada página/controle, nos dois contadores; não limita o arquivo original a 8 MiB |
max_paginas |
int | 10000 |
Páginas lógicas de dados; controles não contam; tentativas contam em bytes e prazo |
max_ids |
int | 500000 |
Total declarado e número de IDs retidos; também limita a lista ANA antes da paginação |
max_bytes_ids |
int | 67108864 (64 MiB) |
Memória contabilizada das estruturas de IDs, incluindo chaves e recipientes; além dela só a página limitada em processamento |
max_segundos |
número | 3600.0 |
Prazo monotônico da operação, incluindo verificação local, rede, esperas e publicação |
O teto efetivo de arquivo (ZIP ou CSV) é o menor entre max_bytes_recurso e 4 GiB. Tetos são conferidos
durante o stream, inclusive expansão HTTP, antes de reter blocos além do orçamento.
O orçamento de IDs não é um teto do RSS de todo o processo. Gzip local é lido
incrementalmente na retomada, limitado pelo tamanho declarado e pelo teto de página/recurso.
Membros ZIP, quando lidos, passam pelos helpers de expansão do agrobr e seus tetos.
O manifesto tem teto de leitura e escrita de 64 MiB, verificado antes da publicação.
Limites não truncam seleções nem removem páginas para produzir sucesso. Para um recurso
maior, reduza o recorte ou configure limites adequados; o teto máximo de arquivo permanece.
O orçamento vale por chamada, não é uma quota cumulativa do destino: evidências de
tentativas antigas e overhead de compactação também ocupam disco. Se o limite impedir
até a publicação de uma linha de erro, o manifesto anterior é preservado e a
ResourceLimitError propaga. O prazo é conferido entre passos de I/O e processamento;
não promete interromper uma chamada bloqueante do sistema operacional no instante exato.
Retomada¶
- Em destino novo, valide argumentos e crie a coleta. É possível acrescentar recursos diferentes sequencialmente no mesmo destino.
- Se a chave já existe,
retomar=Falserecusa a operação sem rede.retomar=Trueexige a mesma consulta normalizada: fonte, recurso, nome, seleção, camada/edição, parâmetros lógicos, formato, tamanho de página e compactação efetiva. Limites podem mudar; não fazem parte dessa identidade. - Se a entrada é
ok, confira schema, invariantes, caminhos, tamanho armazenado, hash e tamanho original de todos os artefatos, inclusive controles. Reutilize sem HEAD ou GET, com os mesmos IDs e horários ereutilizado=True. O manifesto não muda. Isso verifica o acervo local; não confirma que a fonte continua igual. - Se falta arquivo, há corrupção ou hash incorreto em
ok, levanteContractViolationError; não substitua silenciosamente a evidência. Um limite menor que o necessário à verificação levantaResourceLimitError, também sem alterar a entrada. - Erro, ausência, checkpoint ou
.partrecomeçam o recurso inteiro, em novocoleta_id. Arquivo recomeça do byte zero e consulta paginada da primeira página, com novos controles. A nova entrada substitui a anterior somente ao concluir a tentativa. Artefatos anteriores permanecem separados; não são mesclados nem apagados automaticamente.
Uma nova captura temporal usa outro destino. Não há Range, retomada remota por página, revalidação condicional de recursos concluídos ou coleta incremental na versão 1.0.0.
Uso completo¶
As chamadas abaixo cobrem 17 dos 19 recursos: ficam fora o CNFP (sfb/cnfp), cujo Brasil inteiro pede tamanho_pagina=20 e max_bytes_pagina de 24 MiB, e o SICAR (sicar/imoveis), que exige a UF. A bbox urbana é apenas um
exemplo de recorte, não uma garantia de quantidade ou tempo de aquisição.
import asyncio
import json
from pathlib import Path
from agrobr import bruto
async def main() -> None:
destino = Path("coleta-exemplo")
pedidos = [
("ana", "massas_dagua", {"uf": "AL"}),
("cnuc", "ucs", {"uf": "AL"}),
("ibge", "malha_municipal", {"uf": "AL"}),
(
"ibge",
"areas_urbanizadas",
{"nome": "area_teste", "bbox": (-48.1, -16.1, -47.9, -15.9)},
),
("funai", "terras_indigenas", {}),
("funai", "terras_indigenas_pontos", {}),
("incra", "quilombolas", {}),
("acervo_fundiario", "sigef_publico", {"uf": "AL"}),
("acervo_fundiario", "sigef_privado", {"uf": "AL"}),
("acervo_fundiario", "snci_publico", {"uf": "AL"}),
("acervo_fundiario", "snci_privado", {"uf": "AL"}),
("acervo_fundiario", "snci_brasil", {"uf": "AL"}),
("acervo_fundiario", "assentamentos", {}),
("cnuc", "cadastro", {}),
("ibama", "termos_embargo", {}),
("ibge", "malha_municipal_zip", {}),
("ibge", "areas_urbanizadas_zip", {}),
]
for fonte, recurso, selecao in pedidos:
resultado = await bruto.coletar(
fonte, recurso, destino=destino, retomar=True, **selecao
)
print(recurso, resultado.entrada.status, resultado.reutilizado)
with (destino / "manifesto.jsonl").open(encoding="utf-8") as arquivo:
entradas = [json.loads(linha) for linha in arquivo]
print([(e["fonte"], e["recurso"], e["nome"], e["status"]) for e in entradas])
asyncio.run(main())
Em script síncrono, a mesma chamada devolve o mesmo tipo:
from agrobr import sync
resultado = sync.bruto.coletar(
"acervo_fundiario",
"snci_publico",
uf="AL",
destino="coleta-exemplo",
retomar=True,
)
print(resultado.manifesto, resultado.entrada.status)
Para reduzir memória por página, por exemplo, use tamanho_pagina=10 nos recursos
paginados. Ao mudar esse valor, use outro nome/destino, pois a identidade de paginação
da coleta anterior é diferente.
Exemplos completos de manifesto¶
Os exemplos a seguir são ilustrativos e sintéticos: não são respostas observadas, goldens, contagens atuais ou hashes de arquivos oficiais. Os endpoints e perfis de pedido seguem os adaptadores; os valores de corpos, totais, horários, IDs e hashes servem somente para mostrar o contrato. Cada bloco contém uma linha JSON completa, sem campos omitidos. As dez linhas podem formar um manifesto. Seus hashes foram calculados sobre corpos sintéticos de exemplo, não sobre arquivos oficiais. O exemplo de uso acima faz requisições reais e produzirá contagens, hashes e horários diferentes.
ana / massas_dagua¶
{"agrobr_version":"2.0.0","arquivo":null,"avisos":[],"bytes":null,"bytes_armazenados":null,"cabecalhos":{},"cobertura":{"campo_id":"FID","completa":true,"controles":["ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000001.json.gz","ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000002.json.gz","ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000003.json.gz"],"estado":"conferida","ids_distintos":1,"ids_repetidos":0,"recebidas":1,"snapshot_transacional":false,"total_antes":1,"total_depois":1},"coleta_id":"exemplo-ana-massas_dagua","compressao":"nenhuma","consulta_id":"5611a8c3667d66d56bbf8bbb390e2449c408bc376c228661f621be70b6cb44a7","controles":[{"arquivo":"ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000001.json.gz","bytes":11,"bytes_armazenados":31,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","fim":"2026-10-02T20:00:02Z","formato":"json","http_status":200,"inicio":"2026-10-02T20:00:01Z","numero":1,"papel":"contagem_antes","parametros":{"f":"json","outFields":"*","outSR":"4674","returnCountOnly":"true","returnGeometry":"true","where":"(nmufe = 'ALAGOAS' OR nmufe LIKE 'ALAGOAS, %' OR nmufe LIKE '%, ALAGOAS' OR nmufe LIKE '%, ALAGOAS, %')"},"sha256":"6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661","url":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnCountOnly=true","url_solicitada":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnCountOnly=true","valor_declarado":1},{"arquivo":"ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000002.json.gz","bytes":43,"bytes_armazenados":56,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","fim":"2026-10-02T20:00:04Z","formato":"json","http_status":200,"inicio":"2026-10-02T20:00:03Z","numero":2,"papel":"ids","parametros":{"f":"json","outFields":"*","outSR":"4674","returnGeometry":"true","returnIdsOnly":"true","where":"(nmufe = 'ALAGOAS' OR nmufe LIKE 'ALAGOAS, %' OR nmufe LIKE '%, ALAGOAS' OR nmufe LIKE '%, ALAGOAS, %')"},"sha256":"7a3c54cbac7a424181b4b1604e2d49ac58188682f239d00b15e3ad754bba4ac2","url":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnIdsOnly=true","url_solicitada":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnIdsOnly=true","valor_declarado":null},{"arquivo":"ana/massas_dagua/AL/exemplo-ana-massas_dagua/controles/c000003.json.gz","bytes":11,"bytes_armazenados":31,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","fim":"2026-10-02T20:00:08Z","formato":"json","http_status":200,"inicio":"2026-10-02T20:00:07Z","numero":3,"papel":"contagem_depois","parametros":{"f":"json","outFields":"*","outSR":"4674","returnCountOnly":"true","returnGeometry":"true","where":"(nmufe = 'ALAGOAS' OR nmufe LIKE 'ALAGOAS, %' OR nmufe LIKE '%, ALAGOAS' OR nmufe LIKE '%, ALAGOAS, %')"},"sha256":"6aea6dfe6561984cdc5c54ead84d47d2cf29e48253ae282aef237404adad4661","url":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnCountOnly=true","url_solicitada":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29&outFields=%2A&outSR=4674&f=json&returnGeometry=true&returnCountOnly=true","valor_declarado":1}],"crs":"EPSG:4674","crs_evidencia":{"arquivo":"ana/massas_dagua/AL/exemplo-ana-massas_dagua/p000001.esri.json.gz","localizador":"/spatialReference/wkid","tipo":"pagina","valor":"4674"},"erro":null,"feicoes":1,"fim":"2026-10-02T20:00:09Z","fonte":"ana","formato":"esri_json","http_fim":null,"http_inicio":null,"http_status":null,"inicio":"2026-10-02T20:00:00Z","modo":"paginado","nome":"AL","opcoes":{"compactar":true,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":100},"paginas":[{"arquivo":"ana/massas_dagua/AL/exemplo-ana-massas_dagua/p000001.esri.json.gz","bytes":179,"bytes_armazenados":158,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","crs":"EPSG:4674","feicoes_recebidas":1,"fim":"2026-10-02T20:00:06Z","formato":"esri_json","http_status":200,"ids_distintos":1,"inicio":"2026-10-02T20:00:05Z","numero":1,"paginacao":{"max":1,"min":1,"quantidade":1,"tipo":"fid"},"parametros":{"f":"json","outFields":"*","outSR":"4674","returnGeometry":"true","where":"((nmufe = 'ALAGOAS' OR nmufe LIKE 'ALAGOAS, %' OR nmufe LIKE '%, ALAGOAS' OR nmufe LIKE '%, ALAGOAS, %')) AND FID >= 1 AND FID <= 1"},"sha256":"9470996f4054dc75f0bffb7d229836d567f8a30168021f627469baaeda329671","total_declarado":null,"url":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29%29+AND+FID+%3E%3D+1+AND+FID+%3C%3D+1&outFields=%2A&outSR=4674&f=json&returnGeometry=true","url_solicitada":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query?where=%28%28nmufe+%3D+%27ALAGOAS%27+OR+nmufe+LIKE+%27ALAGOAS%2C+%25%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%27+OR+nmufe+LIKE+%27%25%2C+ALAGOAS%2C+%25%27%29%29+AND+FID+%3E%3D+1+AND+FID+%3C%3D+1&outFields=%2A&outSR=4674&f=json&returnGeometry=true"}],"parametros":{"f":"json","outFields":"*","outSR":"4674","returnGeometry":"true","where":"(nmufe = 'ALAGOAS' OR nmufe LIKE 'ALAGOAS, %' OR nmufe LIKE '%, ALAGOAS' OR nmufe LIKE '%, ALAGOAS, %')"},"recurso":"massas_dagua","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":"Massa_dagua/MapServer/0","edicao":null,"natureza":null,"uf":"AL"},"sha256":null,"status":"ok","tipo":"recurso","url":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query","url_solicitada":"https://www.snirh.gov.br/arcgis/rest/services/SPR/Massa_dagua/MapServer/0/query"}
cnuc / ucs¶
{"agrobr_version":"2.0.0","arquivo":null,"avisos":[],"bytes":null,"bytes_armazenados":null,"cabecalhos":{},"cobertura":{"campo_id":"cd_cnuc","completa":true,"controles":["cnuc/ucs/AL/exemplo-cnuc-ucs/controles/c000001.xml.gz","cnuc/ucs/AL/exemplo-cnuc-ucs/controles/c000002.xml.gz"],"estado":"conferida","ids_distintos":1,"ids_repetidos":0,"recebidas":1,"snapshot_transacional":false,"total_antes":1,"total_depois":1},"coleta_id":"exemplo-cnuc-ucs","compressao":"nenhuma","consulta_id":"0bf3f67dfeb6a36c6d111cac85136e18a86aee2c04702752cea1ef117b4bc299","controles":[{"arquivo":"cnuc/ucs/AL/exemplo-cnuc-ucs/controles/c000001.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:02Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:01Z","numero":1,"papel":"contagem_antes","parametros":{"FILTER":"<fes:Filter xmlns:fes='http://www.opengis.net/fes/2.0' xmlns:gml='http://www.opengis.net/gml/3.2'><fes:And><fes:PropertyIsEqualTo><fes:ValueReference>limite</fes:ValueReference><fes:Literal>uc</fes:Literal></fes:PropertyIsEqualTo><fes:PropertyIsLike wildCard='%' singleChar='_' escapeChar='!'><fes:ValueReference>uf</fes:ValueReference><fes:Literal>%ALAGOAS%</fes:Literal></fes:PropertyIsLike></fes:And></fes:Filter>","MAP":"/var/www/storage/app/mapfiles/ucs.map","REQUEST":"GetFeature","RESULTTYPE":"hits","SERVICE":"WFS","TYPENAMES":"ms:ucs_selected","VERSION":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&RESULTTYPE=hits","url_solicitada":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&RESULTTYPE=hits","valor_declarado":1},{"arquivo":"cnuc/ucs/AL/exemplo-cnuc-ucs/controles/c000002.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:08Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:07Z","numero":2,"papel":"contagem_depois","parametros":{"FILTER":"<fes:Filter xmlns:fes='http://www.opengis.net/fes/2.0' xmlns:gml='http://www.opengis.net/gml/3.2'><fes:And><fes:PropertyIsEqualTo><fes:ValueReference>limite</fes:ValueReference><fes:Literal>uc</fes:Literal></fes:PropertyIsEqualTo><fes:PropertyIsLike wildCard='%' singleChar='_' escapeChar='!'><fes:ValueReference>uf</fes:ValueReference><fes:Literal>%ALAGOAS%</fes:Literal></fes:PropertyIsLike></fes:And></fes:Filter>","MAP":"/var/www/storage/app/mapfiles/ucs.map","REQUEST":"GetFeature","RESULTTYPE":"hits","SERVICE":"WFS","TYPENAMES":"ms:ucs_selected","VERSION":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&RESULTTYPE=hits","url_solicitada":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&RESULTTYPE=hits","valor_declarado":1}],"crs":"EPSG:4674","crs_evidencia":{"arquivo":"cnuc/ucs/AL/exemplo-cnuc-ucs/p000001.gml.gz","localizador":"//*[local-name()='Polygon']/@srsName","tipo":"pagina","valor":"urn:ogc:def:crs:EPSG::4674"},"erro":null,"feicoes":1,"fim":"2026-10-02T20:00:09Z","fonte":"cnuc","formato":"gml","http_fim":null,"http_inicio":null,"http_status":null,"inicio":"2026-10-02T20:00:00Z","modo":"paginado","nome":"AL","opcoes":{"compactar":true,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":100},"paginas":[{"arquivo":"cnuc/ucs/AL/exemplo-cnuc-ucs/p000001.gml.gz","bytes":582,"bytes_armazenados":324,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","crs":"EPSG:4674","feicoes_recebidas":1,"fim":"2026-10-02T20:00:06Z","formato":"gml","http_status":200,"ids_distintos":1,"inicio":"2026-10-02T20:00:05Z","numero":1,"paginacao":{"inicio":0,"quantidade":100,"tipo":"offset"},"parametros":{"COUNT":"100","FILTER":"<fes:Filter xmlns:fes='http://www.opengis.net/fes/2.0' xmlns:gml='http://www.opengis.net/gml/3.2'><fes:And><fes:PropertyIsEqualTo><fes:ValueReference>limite</fes:ValueReference><fes:Literal>uc</fes:Literal></fes:PropertyIsEqualTo><fes:PropertyIsLike wildCard='%' singleChar='_' escapeChar='!'><fes:ValueReference>uf</fes:ValueReference><fes:Literal>%ALAGOAS%</fes:Literal></fes:PropertyIsLike></fes:And></fes:Filter>","MAP":"/var/www/storage/app/mapfiles/ucs.map","REQUEST":"GetFeature","SERVICE":"WFS","SORTBY":"cd_cnuc","STARTINDEX":"0","TYPENAMES":"ms:ucs_selected","VERSION":"2.0.0"},"sha256":"3969b3ffe691dff13fad926492fe18bb1f0499bd38172fd3df8d7f659f400903","total_declarado":"unknown","url":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&SORTBY=cd_cnuc&COUNT=100&STARTINDEX=0","url_solicitada":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=%2Fvar%2Fwww%2Fstorage%2Fapp%2Fmapfiles%2Fucs.map&SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=ms%3Aucs_selected&FILTER=%3Cfes%3AFilter+xmlns%3Afes%3D%27http%3A%2F%2Fwww.opengis.net%2Ffes%2F2.0%27+xmlns%3Agml%3D%27http%3A%2F%2Fwww.opengis.net%2Fgml%2F3.2%27%3E%3Cfes%3AAnd%3E%3Cfes%3APropertyIsEqualTo%3E%3Cfes%3AValueReference%3Elimite%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3Euc%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsEqualTo%3E%3Cfes%3APropertyIsLike+wildCard%3D%27%25%27+singleChar%3D%27_%27+escapeChar%3D%27%21%27%3E%3Cfes%3AValueReference%3Euf%3C%2Ffes%3AValueReference%3E%3Cfes%3ALiteral%3E%25ALAGOAS%25%3C%2Ffes%3ALiteral%3E%3C%2Ffes%3APropertyIsLike%3E%3C%2Ffes%3AAnd%3E%3C%2Ffes%3AFilter%3E&SORTBY=cd_cnuc&COUNT=100&STARTINDEX=0"}],"parametros":{"FILTER":"<fes:Filter xmlns:fes='http://www.opengis.net/fes/2.0' xmlns:gml='http://www.opengis.net/gml/3.2'><fes:And><fes:PropertyIsEqualTo><fes:ValueReference>limite</fes:ValueReference><fes:Literal>uc</fes:Literal></fes:PropertyIsEqualTo><fes:PropertyIsLike wildCard='%' singleChar='_' escapeChar='!'><fes:ValueReference>uf</fes:ValueReference><fes:Literal>%ALAGOAS%</fes:Literal></fes:PropertyIsLike></fes:And></fes:Filter>","MAP":"/var/www/storage/app/mapfiles/ucs.map","REQUEST":"GetFeature","SERVICE":"WFS","SORTBY":"cd_cnuc","TYPENAMES":"ms:ucs_selected","VERSION":"2.0.0"},"recurso":"ucs","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":"ms:ucs_selected","edicao":null,"natureza":null,"uf":"AL"},"sha256":null,"status":"ok","tipo":"recurso","url":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv","url_solicitada":"https://cnuc-mapserv.mma.gov.br/cgi-bin/mapserv"}
ibge / malha_municipal¶
{"agrobr_version":"2.0.0","arquivo":null,"avisos":[],"bytes":null,"bytes_armazenados":null,"cabecalhos":{},"cobertura":{"campo_id":"cd_mun","completa":true,"controles":["ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/controles/c000001.xml.gz","ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/controles/c000002.xml.gz"],"estado":"conferida","ids_distintos":1,"ids_repetidos":0,"recebidas":1,"snapshot_transacional":false,"total_antes":1,"total_depois":1},"coleta_id":"exemplo-ibge-malha_municipal","compressao":"nenhuma","consulta_id":"bb53d383d933f7bd1789bbe15a80f635980df52b04e9dd29766e88ead1ab423b","controles":[{"arquivo":"ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/controles/c000001.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:02Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:01Z","numero":1,"papel":"contagem_antes","parametros":{"CQL_FILTER":"sigla_uf='AL'","request":"GetFeature","resultType":"hits","service":"WFS","typeNames":"CGMAT:qg_2025_030_munic","version":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&CQL_FILTER=sigla_uf%3D%27AL%27&resultType=hits","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&CQL_FILTER=sigla_uf%3D%27AL%27&resultType=hits","valor_declarado":1},{"arquivo":"ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/controles/c000002.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:08Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:07Z","numero":2,"papel":"contagem_depois","parametros":{"CQL_FILTER":"sigla_uf='AL'","request":"GetFeature","resultType":"hits","service":"WFS","typeNames":"CGMAT:qg_2025_030_munic","version":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&CQL_FILTER=sigla_uf%3D%27AL%27&resultType=hits","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&CQL_FILTER=sigla_uf%3D%27AL%27&resultType=hits","valor_declarado":1}],"crs":"EPSG:4674","crs_evidencia":{"arquivo":"ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/p000001.geojson.gz","localizador":"/crs/properties/name","tipo":"pagina","valor":"urn:ogc:def:crs:EPSG::4674"},"erro":null,"feicoes":1,"fim":"2026-10-02T20:00:09Z","fonte":"ibge","formato":"geojson","http_fim":null,"http_inicio":null,"http_status":null,"inicio":"2026-10-02T20:00:00Z","modo":"paginado","nome":"AL","opcoes":{"compactar":true,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":100},"paginas":[{"arquivo":"ibge/malha_municipal/AL/exemplo-ibge-malha_municipal/p000001.geojson.gz","bytes":337,"bytes_armazenados":232,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","crs":"EPSG:4674","feicoes_recebidas":1,"fim":"2026-10-02T20:00:06Z","formato":"geojson","http_status":200,"ids_distintos":1,"inicio":"2026-10-02T20:00:05Z","numero":1,"paginacao":{"inicio":0,"quantidade":100,"tipo":"offset"},"parametros":{"CQL_FILTER":"sigla_uf='AL'","count":"100","outputFormat":"application/json","request":"GetFeature","service":"WFS","sortBy":"cd_mun","startIndex":"0","typeNames":"CGMAT:qg_2025_030_munic","version":"2.0.0"},"sha256":"7df21d94f4b8d6bddc13ffd21967fe1a2c9f4601c6be9588c1c900c4c41a13f7","total_declarado":1,"url":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&outputFormat=application%2Fjson&sortBy=cd_mun&CQL_FILTER=sigla_uf%3D%27AL%27&count=100&startIndex=0","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGMAT%3Aqg_2025_030_munic&outputFormat=application%2Fjson&sortBy=cd_mun&CQL_FILTER=sigla_uf%3D%27AL%27&count=100&startIndex=0"}],"parametros":{"CQL_FILTER":"sigla_uf='AL'","outputFormat":"application/json","request":"GetFeature","service":"WFS","sortBy":"cd_mun","typeNames":"CGMAT:qg_2025_030_munic","version":"2.0.0"},"recurso":"malha_municipal","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":"CGMAT:qg_2025_030_munic","edicao":2025,"natureza":null,"uf":"AL"},"sha256":null,"status":"ok","tipo":"recurso","url":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverIBGE/wfs"}
ibge / areas_urbanizadas¶
{"agrobr_version":"2.0.0","arquivo":null,"avisos":[],"bytes":null,"bytes_armazenados":null,"cabecalhos":{},"cobertura":{"campo_id":"fid","completa":true,"controles":["ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/controles/c000001.xml.gz","ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/controles/c000002.xml.gz"],"estado":"conferida","ids_distintos":1,"ids_repetidos":0,"recebidas":1,"snapshot_transacional":false,"total_antes":1,"total_depois":1},"coleta_id":"exemplo-ibge-areas_urbanizadas","compressao":"nenhuma","consulta_id":"f55a4460e91eec1c635203ddc587e5eb2b7b67df52e76f0116b721eacbb0bee2","controles":[{"arquivo":"ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/controles/c000001.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:02Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:01Z","numero":1,"papel":"contagem_antes","parametros":{"CQL_FILTER":"BBOX(geom,-48.1,-16.1,-47.9,-15.9,'EPSG:4674')","request":"GetFeature","resultType":"hits","service":"WFS","typeNames":"CGEO:AU_2026_AreasUrbanizadas2022_Brasil","version":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&resultType=hits","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&resultType=hits","valor_declarado":1},{"arquivo":"ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/controles/c000002.xml.gz","bytes":104,"bytes_armazenados":112,"cabecalhos":{"content-type":"text/xml"},"compressao":"gzip","fim":"2026-10-02T20:00:08Z","formato":"xml","http_status":200,"inicio":"2026-10-02T20:00:07Z","numero":2,"papel":"contagem_depois","parametros":{"CQL_FILTER":"BBOX(geom,-48.1,-16.1,-47.9,-15.9,'EPSG:4674')","request":"GetFeature","resultType":"hits","service":"WFS","typeNames":"CGEO:AU_2026_AreasUrbanizadas2022_Brasil","version":"2.0.0"},"sha256":"b9eafd2e580456593d4eecd2d6ca89abd174349ffce0a18f2dfb00289ec4bbbf","url":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&resultType=hits","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&resultType=hits","valor_declarado":1}],"crs":"EPSG:4674","crs_evidencia":{"arquivo":"ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/p000001.geojson.gz","localizador":"/crs/properties/name","tipo":"pagina","valor":"urn:ogc:def:crs:EPSG::4674"},"erro":null,"feicoes":1,"fim":"2026-10-02T20:00:09Z","fonte":"ibge","formato":"geojson","http_fim":null,"http_inicio":null,"http_status":null,"inicio":"2026-10-02T20:00:00Z","modo":"paginado","nome":"area_teste","opcoes":{"compactar":true,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":100},"paginas":[{"arquivo":"ibge/areas_urbanizadas/area_teste/exemplo-ibge-areas_urbanizadas/p000001.geojson.gz","bytes":318,"bytes_armazenados":209,"cabecalhos":{"content-type":"application/json"},"compressao":"gzip","crs":"EPSG:4674","feicoes_recebidas":1,"fim":"2026-10-02T20:00:06Z","formato":"geojson","http_status":200,"ids_distintos":1,"inicio":"2026-10-02T20:00:05Z","numero":1,"paginacao":{"inicio":0,"quantidade":100,"tipo":"offset"},"parametros":{"CQL_FILTER":"BBOX(geom,-48.1,-16.1,-47.9,-15.9,'EPSG:4674')","count":"100","outputFormat":"application/json","request":"GetFeature","service":"WFS","sortBy":"fid","startIndex":"0","typeNames":"CGEO:AU_2026_AreasUrbanizadas2022_Brasil","version":"2.0.0"},"sha256":"0b688742a3f7a99e91dae04260370827649a2475790b157b5bf1ca9d1f897f96","total_declarado":1,"url":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&outputFormat=application%2Fjson&sortBy=fid&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&count=100&startIndex=0","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs?service=WFS&version=2.0.0&request=GetFeature&typeNames=CGEO%3AAU_2026_AreasUrbanizadas2022_Brasil&outputFormat=application%2Fjson&sortBy=fid&CQL_FILTER=BBOX%28geom%2C-48.1%2C-16.1%2C-47.9%2C-15.9%2C%27EPSG%3A4674%27%29&count=100&startIndex=0"}],"parametros":{"CQL_FILTER":"BBOX(geom,-48.1,-16.1,-47.9,-15.9,'EPSG:4674')","outputFormat":"application/json","request":"GetFeature","service":"WFS","sortBy":"fid","typeNames":"CGEO:AU_2026_AreasUrbanizadas2022_Brasil","version":"2.0.0"},"recurso":"areas_urbanizadas","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":[-48.1,-16.1,-47.9,-15.9],"bbox_crs":"EPSG:4674","camada":"CGEO:AU_2026_AreasUrbanizadas2022_Brasil","edicao":2022,"natureza":null,"uf":null},"sha256":null,"status":"ok","tipo":"recurso","url":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs","url_solicitada":"https://geoservicos.ibge.gov.br/geoserverCGEO/wfs"}
acervo_fundiario / sigef_publico¶
{"agrobr_version":"2.0.0","arquivo":"acervo_fundiario/sigef_publico/AL/exemplo-acervo_fundiario-sigef_publico/original.zip","avisos":[],"bytes":1220,"bytes_armazenados":1220,"cabecalhos":{"content-length":"1220","content-type":"application/x-zip-compressed","etag":"\"exemplo-sigef_publico\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-acervo_fundiario-sigef_publico","compressao":"nenhuma","consulta_id":"090ff8e709fb9534ad3e40d8bd925cd7c5ea396043896cd485c87342f31154ef","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"acervo_fundiario","formato":"zip","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"AL","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"sigef_publico","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":null,"natureza":"publico","uf":"AL"},"sha256":"7f17928b731c64b486004a94e74194ef6037acf7fe57c0ec70433d4117f27f47","status":"ok","tipo":"recurso","url":"https://certificacao.incra.gov.br/csv_shp/zip/Sigef%20P%C3%BAblico_AL.zip","url_solicitada":"https://certificacao.incra.gov.br/csv_shp/zip/Sigef%20P%C3%BAblico_AL.zip"}
acervo_fundiario / sigef_privado¶
{"agrobr_version":"2.0.0","arquivo":"acervo_fundiario/sigef_privado/AL/exemplo-acervo_fundiario-sigef_privado/original.zip","avisos":[],"bytes":1220,"bytes_armazenados":1220,"cabecalhos":{"content-length":"1220","content-type":"application/x-zip-compressed","etag":"\"exemplo-sigef_privado\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-acervo_fundiario-sigef_privado","compressao":"nenhuma","consulta_id":"b4babc34fe42b1f367a37f197ad34ea6d9acc79edd78e6705671540e74536a77","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"acervo_fundiario","formato":"zip","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"AL","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"sigef_privado","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":null,"natureza":"privado","uf":"AL"},"sha256":"d2d49150be8ec0612161b1a8506ceb3e9c2a96297eec39f69463a3177b7e04fc","status":"ok","tipo":"recurso","url":"https://certificacao.incra.gov.br/csv_shp/zip/Sigef%20Privado_AL.zip","url_solicitada":"https://certificacao.incra.gov.br/csv_shp/zip/Sigef%20Privado_AL.zip"}
acervo_fundiario / snci_publico¶
{"agrobr_version":"2.0.0","arquivo":"acervo_fundiario/snci_publico/AL/exemplo-acervo_fundiario-snci_publico/original.zip","avisos":[],"bytes":1200,"bytes_armazenados":1200,"cabecalhos":{"content-length":"1200","content-type":"application/x-zip-compressed","etag":"\"exemplo-snci_publico\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-acervo_fundiario-snci_publico","compressao":"nenhuma","consulta_id":"2f24eecf6f90be43d50a64ee4ded68d323d68dc8eefbb30f1624ae5225924d25","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"acervo_fundiario","formato":"zip","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"AL","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"snci_publico","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":null,"natureza":"publico","uf":"AL"},"sha256":"85843e54d72b4cd5d6397bda0bda995f9a356668bcc489f5f70ab5815aa34e25","status":"ok","tipo":"recurso","url":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20P%C3%BAblico_AL.zip","url_solicitada":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20P%C3%BAblico_AL.zip"}
acervo_fundiario / snci_privado¶
{"agrobr_version":"2.0.0","arquivo":"acervo_fundiario/snci_privado/AL/exemplo-acervo_fundiario-snci_privado/original.zip","avisos":[],"bytes":1200,"bytes_armazenados":1200,"cabecalhos":{"content-length":"1200","content-type":"application/x-zip-compressed","etag":"\"exemplo-snci_privado\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-acervo_fundiario-snci_privado","compressao":"nenhuma","consulta_id":"6004975a7070092d9c0c32870150bf54196b711b27853db9032be8ce009e5130","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"acervo_fundiario","formato":"zip","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"AL","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"snci_privado","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":null,"natureza":"privado","uf":"AL"},"sha256":"0a4ce6e02cb4ef3cb49187accdd78a328066854abaab11fe087c2e062a1af651","status":"ok","tipo":"recurso","url":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20Privado_AL.zip","url_solicitada":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20Privado_AL.zip"}
acervo_fundiario / snci_brasil¶
{"agrobr_version":"2.0.0","arquivo":"acervo_fundiario/snci_brasil/AL/exemplo-acervo_fundiario-snci_brasil/original.zip","avisos":[],"bytes":1180,"bytes_armazenados":1180,"cabecalhos":{"content-length":"1180","content-type":"application/x-zip-compressed","etag":"\"exemplo-snci_brasil\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-acervo_fundiario-snci_brasil","compressao":"nenhuma","consulta_id":"e808c06ffe8258cc91b2093abe6522022ceb697c3d1285db4cb76e157398129f","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"acervo_fundiario","formato":"zip","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"AL","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"snci_brasil","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":null,"natureza":null,"uf":"AL"},"sha256":"2427aab938541297a1d359016d1e5c90180ad1879af9e7d0a870417f318f5124","status":"ok","tipo":"recurso","url":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20Brasil_AL.zip","url_solicitada":"https://certificacao.incra.gov.br/csv_shp/zip/Im%C3%B3vel%20certificado%20SNCI%20Brasil_AL.zip"}
cnuc / cadastro¶
{"agrobr_version":"2.0.0","arquivo":"cnuc/cadastro/brasil/exemplo-cnuc-cadastro/original.csv","avisos":[],"bytes":70,"bytes_armazenados":70,"cabecalhos":{"content-type":"text/csv","etag":"\"exemplo-cnuc-cadastro\"","last-modified":"Fri, 02 Oct 2026 20:00:00 GMT"},"cobertura":{"campo_id":null,"completa":true,"controles":[],"estado":"nao_aplicavel","ids_distintos":null,"ids_repetidos":null,"recebidas":null,"snapshot_transacional":false,"total_antes":null,"total_depois":null},"coleta_id":"exemplo-cnuc-cadastro","compressao":"nenhuma","consulta_id":"45ae513cfc8f1b6abac604d10e862c323fb575b76025ee67774268263f8e4e75","controles":[],"crs":null,"crs_evidencia":null,"erro":null,"feicoes":null,"fim":"2026-10-02T20:00:09Z","fonte":"cnuc","formato":"csv","http_fim":"2026-10-02T20:00:08Z","http_inicio":"2026-10-02T20:00:01Z","http_status":200,"inicio":"2026-10-02T20:00:00Z","modo":"arquivo","nome":"brasil","opcoes":{"compactar":false,"limites":{"max_bytes_ids":67108864,"max_bytes_pagina":8388608,"max_bytes_recurso":4294967296,"max_ids":500000,"max_paginas":10000,"max_segundos":3600.0},"tamanho_pagina":null},"paginas":[],"parametros":{},"recurso":"cadastro","registrado_em":"2026-10-02T20:00:10Z","schema_version":"1.0.0","selecao":{"bbox":null,"bbox_crs":null,"camada":null,"edicao":202607,"natureza":null,"uf":null},"sha256":"7413cd5659ddc0c54b8dc6fbcad667ba52bcc197fa83da49509a8a98c257f6ff","status":"ok","tipo":"recurso","url":"https://dados.mma.gov.br/dataset/44b6dc8a-dc82-4a84-8d95-1b0da7c85dac/resource/72dd3d2d-3cca-4b97-b382-a1c90531e379/download/cnuc_2026_07.csv","url_solicitada":"https://dados.mma.gov.br/dataset/44b6dc8a-dc82-4a84-8d95-1b0da7c85dac/resource/72dd3d2d-3cca-4b97-b382-a1c90531e379/download/cnuc_2026_07.csv"}
Escopo e compatibilidade¶
O modo bruto não normaliza atributos, não reprojeta ou repara geometrias, não deduplica
versões, não une ZIPs público/privado e não promete que sua união equivale ao arquivo
Brasil. Não compara coletas nem detecta mudança temática: um ZIP regravado ou um
timeStamp WFS pode alterar o hash sem alterar o dado que interessa ao consumidor.
Não oferece DataFrame, Parquet, as_polars, return_meta, SQL/CQL livre, URL arbitrária,
filtro local disfarçado de seleção remota ou escolha de áreas de estudo. A adaptação de
leitores externos pertence ao consumidor. Não usa o formato de
snapshots semânticos do agrobr.
As APIs de tabelas conservam seus contratos e CRS. acervo_fundiario.snci() e
snci_geo() sem natureza continuam lendo o arquivo Brasil da UF. O opt-in
natureza="publico" ou "privado" é separado desta API de arquivos.
Os hashes de páginas ANA no MetaInfo também não são um manifesto de arquivos:
não oferecem caminhos nem autorizam inferir que os corpos foram guardados.
Todas as fontes do modo bruto têm licença livre nas licenças das fontes; por isso
não há aviso de licença na coleta. Preservar o corpo não altera a licença nem valida seu conteúdo temático.
Nomes, tipos, obrigatoriedade, significado de status, hashes, CRS, caminhos e cobertura integram o contrato. Mudança incompatível exige major do schema; campos opcionais novos, minor; correções compatíveis, patch. Payloads da fonte não são versionados pelo agrobr. Leitores aceitam campos adicionais opcionais em major conhecida e recusam major desconhecida. O gravador só modifica manifestos em versões que sabe preservar integralmente; na 1.0.0, outra versão é recusada antes da rede. Consulte a política de versionamento.