CNUC — Cadastro Nacional de Unidades de Conservação¶
Visão geral¶
| Item | Detalhe |
|---|---|
| Provedor | MMA (Ministério do Meio Ambiente e Mudança do Clima), Departamento de Áreas Protegidas |
| Dados | Limites e atributos das UCs federais, estaduais e municipais, com RPPNs |
| Acesso | WFS 2.0 (MapServer do portal CNUC) |
| Formato | GML 3.2 (tabular e geo) |
| Autenticação | Nenhuma |
| Licença | CC-BY (dataset "Unidades de Conservação" no portal de dados abertos do MMA) |
| Feições | 3.450 UCs com limite na captura de 01/10/2026 (contagem variável) |
Acesso via WFS¶
| Parâmetro | Valor |
|---|---|
| Portal | cnuc.mma.gov.br |
| Endpoint | cnuc-mapserv.mma.gov.br/cgi-bin/mapserv?MAP=/var/www/storage/app/mapfiles/ucs.map |
| Versão WFS | 2.0.0 |
| Camada | ms:ucs_selected |
| CRS | EPSG:4674 na camada; ucs_geo pede urn:ogc:def:crs:EPSG::4326 |
| Dados abertos | dados.mma.gov.br/dataset/unidadesdeconservacao (CSV semestral e licença) |
O endereço do MapServer é o que o próprio portal CNUC usa no mapa. O parâmetro MAP aponta um caminho interno do servidor: se o MMA reorganizar o servidor, a URL muda sem aviso, e a consulta levanta SourceUnavailableError.
Exemplo de uso¶
import asyncio
from agrobr import cnuc
async def main():
# UCs das 3 esferas em Sergipe, com RPPNs
df = await cnuc.ucs(uf="SE")
# Só as RPPNs federais
df = await cnuc.ucs(
esfera="federal", categoria="Reserva Particular do Patrimônio Natural"
)
# UCs que abrangem um município (nome inteiro ou código IBGE)
df = await cnuc.ucs(municipio="Aracaju")
# Com geometria (requer geopandas)
gdf = await cnuc.ucs_geo(uf="SE", esfera="municipal")
# Com metadados
df, meta = await cnuc.ucs(bbox=(-38.5, -11.6, -36.3, -9.3), return_meta=True)
asyncio.run(main())
Funções e parâmetros¶
cnuc.ucs(*, uf=None, municipio=None, esfera=None, categoria=None, grupo=None, bioma=None, bbox=None, max_registros=None, as_polars=False, return_meta=False) devolve o tabular. cnuc.ucs_geo(...) aceita os mesmos filtros, sem as_polars, e devolve um GeoDataFrame em EPSG:4326.
| Parâmetro | Valores | Onde filtra |
|---|---|---|
uf |
sigla da UF | no servidor pelo nome da UF (em MT, sem as UCs só de Mato Grosso do Sul); o resultado casa a sigla exata dentro de uf |
municipio |
nome inteiro ou código IBGE de 7 dígitos | pela UF do município no servidor; cada município publicado é comparado ao cadastro do IBGE |
esfera |
federal, estadual, municipal |
no servidor |
categoria |
as 12 categorias de manejo publicadas, sem caixa e acento | no servidor |
grupo |
PI, US |
no servidor |
bioma |
Amazônia, Caatinga, Cerrado, Mata Atlântica, Pampa, Pantanal | no resultado, pela coluna bioma |
bbox |
(lon mín, lat mín, lon máx, lat máx) em EPSG:4326 | no servidor |
max_registros |
inteiro positivo | as primeiras UCs em ordem de codigo |
Valor fora do domínio levanta InvalidParameterError antes da rede, com a lista dos válidos. As 12 categorias: Área de Proteção Ambiental, Área de Relevante Interesse Ecológico, Estação Ecológica, Floresta, Monumento Natural, Parque, Refúgio de Vida Silvestre, Reserva Biológica, Reserva de Desenvolvimento Sustentável, Reserva de Fauna, Reserva Extrativista e Reserva Particular do Patrimônio Natural.
A consulta conta as UCs no servidor antes de baixar. Acima de 10.000 UCs no tabular, ou de 600 no ucs_geo, levanta ResourceLimitError sem baixar nada; a maior UF (RJ) tem 568. O bioma sozinho não reduz o download, porque filtra no resultado. Quando não há filtro aplicado no resultado (uf, municipio e bioma), max_registros também reduz o download no servidor. A mensagem do erro sugere só o que reduz o download: uf, esfera, categoria, grupo e bbox, e max_registros quando não há filtro no resultado.
Colunas¶
| Coluna | Tipo | Descrição |
|---|---|---|
| codigo | str | Código CNUC |
| nome | str | Nome da UC |
| esfera | str | federal, estadual ou municipal |
| categoria | str | Categoria de manejo, como publicada |
| grupo | str | PI (proteção integral) ou US (uso sustentável) |
| categoria_iucn | str | Categoria IUCN publicada |
| uf | str | Siglas em ordem alfabética, separadas por / |
| municipios | str | Lista publicada, NOME (UF), … |
| bioma | str | Biomas com área publicada na UC, separados por / |
| area_ha | float | Área em hectares |
| data_criacao | datetime64[ns] | Data de criação |
| ato_criacao | str | Ato legal de criação |
| orgao_gestor | str | Órgão gestor |
| qualidade_poligono | str | Polígono pelo memorial descritivo, estimativa ou representação esquemática |
| wdpa_id | str | Identificador na base mundial de áreas protegidas |
O ucs_geo acrescenta geometry (Polygon ou MultiPolygon).
Limitações¶
- Só UCs com limite cadastrado no CNUC. Das 3.576 UCs do cadastro CSV de julho de 2026, 170 não estavam na camada em 01/10/2026: 167 têm a área tirada do ato legal, ou seja, sem polígono no CNUC, e 3 têm área do polígono, como a FLONA de Cristópolis (BA), que está no CSV e no ICMBio.
- As zonas de amortecimento da camada (61 em 01/10/2026,
limite='za') ficam de fora. municipiosvem cortado pela fonte em 200 caracteres, com..., em 20 UCs. Communicipio=, as UCs da UF com a lista cortada que não citam o município antes do corte ficam fora e aparecem no aviso.- Três grafias da camada não casam com o cadastro do IBGE (
GRÃO PARÁ (SC),SANTO ANTÔNIO DO LEVERGER (MT)eSÃO THOMÉ DAS LETRAS (MG)); essas UCs também ficam fora do filtromunicipio=e aparecem no aviso. Os avisos chegam aMetaInfo.validation_warningse saem comoUserWarning. area_haé a área da UC inteira, não a parte dentro da UF.biomaé derivado das áreas por bioma publicadas: a área marinha fica fora, e 65 UCs saem combiomanulo.- A camada é corrente, sem edição histórica:
deterministicnão se aplica.
Conteúdo da camada¶
Em 01/10/2026, a camada tinha 3.511 feições: 3.450 UCs e 61 zonas de amortecimento. Por esfera: 1.086 federais (736 RPPNs), 1.458 estaduais (669 RPPNs) e 906 municipais (21 RPPNs). O código CNUC não se repetiu. Das 347 UCs federais da camada do ICMBio (icmbio.ucs), 346 estão aqui; o CNUC já tinha 4 RDS federais de 08/09/2026 que o ICMBio ainda não publicava.
A contagem do servidor (resultType=hits) vem antes do download e é conciliada com o número de feições recebidas (count_reconciled no MetaInfo), sem snapshot transacional. O CNUC é atualizado pelos órgãos gestores, UC a UC.
Relação com o ICMBio¶
icmbio.ucs e o dataset unidades_conservacao_federais continuam com a camada do ICMBio na INDE: só UCs federais, sem RPPN. Para as três esferas e as RPPNs, use cnuc.ucs ou o dataset unidades_conservacao.
Coleta bruta¶
agrobr.bruto.coletar("cnuc", "ucs", ...) guarda as páginas GML originais do WFS no CRS nativo (EPSG:4674) e com todos os atributos, sem o PROPERTYNAME e o SRSNAME que ucs() e ucs_geo() usam. O filtro é o mesmo da API: limite=uc sempre e a UF com a regra dos estados compostos; a bbox vai em latitude/longitude, em EPSG:4674 ou EPSG:4326. As páginas declaram numberMatched="unknown"; a coleta fecha pelas contagens hits antes e depois e exige cd_cnuc presente, único e estritamente crescente entre as páginas. Veja a API da coleta bruta e o contrato do manifesto.
agrobr.bruto.coletar("cnuc", "cadastro", ...) guarda o CSV do cadastro do CNUC, edição de julho de 2026 (selecao.edicao=202607), como o MMA o publica no catálogo de dados abertos (Windows-1252, separador ;, uma linha por UC com o Código UC), sem UF nem bbox. Antes do GET, a coleta confere no catálogo CKAN do MMA que o recurso CNUC_2026_07 em CSV ainda aponta para a URL fixada no agrobr: URL diferente (edição republicada ou retirada) é ParseError, e o catálogo fora do ar, SourceUnavailableError; a consulta ao catálogo conta no orçamento da chamada (bruto.LimitesBrutos). Edição nova do cadastro chega com versão nova do agrobr.
Geometria inválida¶
A geometria das saídas _geo sai como a fonte publica, sem reparo; geometria inválida gera aviso e contagem no MetaInfo. Veja Geometrias publicadas.