| Dimensão | Valor | Contribuição ao ICPM Geral |
|---|---|---|
| População estimada (2021) | 57.390 | Escala de referência |
| Óbitos por tipologia | → \(ICPM_D\), \(ICPM_I\), \(ICPM_E\) (70%) | |
| Óbitos por Movimento de Massa | 4 | → \(ICPM_D\) (peso 0.4) |
| Óbitos por Inundações | 0 | → \(ICPM_I\) (peso 0.4) |
| Óbitos por Enxurradas | 1 | → \(ICPM_E\) (peso 0.4) |
| População em Risco | → \(ICPM_D\), \(ICPM_I\), \(ICPM_E\) (70%) | |
| Pessoas em risco — Mov. de Massa | 1.500 | → \(ICPM_D\) (peso 0.3) |
| Pessoas em risco — Inundações | 2.320 | → \(ICPM_I\) (peso 0.3) |
| Pessoas em risco — Enxurradas | 104 | → \(ICPM_E\) (peso 0.3) |
| Registros Oficiais | → \(ICPM_D\), \(ICPM_I\), \(ICPM_E\) (70%) | |
| Registros de Mov. de Massa (S2iD) | 1 | → \(ICPM_D\) (peso 0.3) |
| Registros de Inundações (S2iD) | 21 | → \(ICPM_I\) (peso 0.3) |
| Registros de Enxurradas (S2iD) | 13 | → \(ICPM_E\) (peso 0.3) |
| Governança e Clima | → \(Vuln\) (20%) e \(ICPM_{Clima}\) (10%) | |
| Plano de Contingência | ❌ Não | → \(Vuln = 1,00\) (ICM provável D) |
| Cartografia de Suscetibilidade | ✅ Sim | Condição habilitadora |
| Fator de correção climática (UF) | 35,5% (PA) | → \(ICPM_{Clima}\) elevado |
Proposta Metodológica para o Índice de Cadastro e Priorização de Municípios (ICPM)
A gestão estratégica de riscos de desastres no Brasil exige instrumentos analíticos que permitam identificar, dentre os mais de 5.570 municípios, aqueles que apresentam maior criticidade frente a resposta a eventos extremos. Nesse contexto, esta Nota Técnica detalha a fundamentação metodológica de uma proposta de Índice de Cadastro e Priorização de Municípios (ICPM), desenvolvido para subsidiar a indicação de entes federativos ao Cadastro Nacional de Municípios com Áreas Suscetíveis à Ocorrência de Deslizamentos de Grande Impacto, Inundações Bruscas ou Processos Geológicos ou Hidrológicos Correlatos, em observância ao Decreto nº 10.692, de 3 de maio de 2021. O ICPM estabelece uma métrica multidimensional que integra o histórico de danos humanos, a exposição populacional, a recorrência de desastres e a capacidade de governança local, incorporando, de forma prospectiva, o componente da mudança climática ante a expectativa de intensificação de eventos extremos. A estrutura do índice é consolidada pela ponderação de subíndices específicos para as tipologias de enxurradas, inundações e movimentos de massa. A aplicação desta metodologia permite não apenas a definição de um limiar técnico (corte) para a inclusão no cadastro nacional, mas também a estruturação de uma hierarquia de prioridades para a otimização da alocação de recursos federais. Embora represente uma versão inicial passível de aprimoramentos, o ICPM propõe uma mudança de paradigma ao substituir análises subjetivas por critérios técnicos objetivos e versáteis.
1 Introdução
A gestão estratégica de riscos de desastres no Brasil exige instrumentos analíticos robustos que permitam identificar, dentre os mais de 5.570 municípios, aqueles que apresentam maior criticidade frente à resposta a eventos extremos. Historicamente, a identificação de áreas vulneráveis tem sido um desafio de coordenação federativa, demandando critérios que transitem da análise reativa para o planejamento proativo e resiliente.
O marco divisório para as políticas públicas do setor ocorreu em janeiro de 2011, após o desastre na Região Serrana do Rio de Janeiro, que evidenciou a necessidade de uma atuação integrada. Esse evento impulsionou avanços institucionais cruciais, como a criação do Cemaden, a reestruturação do Cenad e a promulgação da Política Nacional de Proteção e Defesa Civil (PNPDEC) pela Lei nº 12.608/2012 (Brasil, 2012).
Mais recentemente, o Decreto nº 10.692/2021, tendo em vista o disposto na Lei nº 12.340 (Brasil, 2010) e na PNPDEC, instituiu o Cadastro Nacional de Municípios com Áreas Suscetíveis à Ocorrência de Deslizamentos de Grande Impacto e Inundações Bruscas (Brasil, 2021).Conforme o Art. 3º do referido Decreto, a inscrição no Cadastro pode ocorrer por solicitação do município ou por indicação da União e dos Estados.
Para subsidiar essa prerrogativa de indicação, a União conduziu esforços significativos em coordenação com a Casa Civil da Presidência da República. Iniciado em 2012 com 821 municípios, esse monitoramento foi atualizado no âmbito do Novo PAC, representando um esforço primordial de articulação interinstitucional detalhado nas Notas Técnicas nº 1/2023/SADJ-VI/SAM/CC/PR, 1/2025/SADJ-VI/SEPAC/CC/PR e 2/2025/SADJ-VI/SEPAC/CC/PR (Brasil, 2023b, 2025a, 2025b).
Embora essas listas sirvam como um ponto de partida valioso, o pleno atendimento às diretrizes do Cadastro Nacional exige a evolução para um processo de indicação baseado em instâncias mais dinâmicas e adaptáveis à evolução do Plano Nacional de Proteção e Defesa Civil (PN-PDC) (Brasil, 2025c) e a gestão de riscos e desastres. Dessa forma, propõe-se uma abordagem baseada no Índice de Cadastro e Priorização de Municípios (ICPM). O ICPM é uma métrica dinâmica e multidimensional que dialoga com o PN-PDC e converge com indicadores estratégicos utilizados nesse instrumento de planejamento nacional como o Índice de Capacidade Municipal (ICM) (Brasil, 2023a, 2026) e a componente de influência da mudança climática. O ICPM integra ainda o passivo histórico de registros de desastres documentado no Sistema Integrado de Informações sobre Desastres (S2iD).
Esta abordagem propõe uma mudança de paradigma a partir de uma forma de indicação e priorização baseada em uma métrica objetiva e versátil, passível de atualização conforme o aprimoramento da PNPDC e do avanço no conhecimento técnico e científico de gestão de riscos e desastres, em total alinhamento com as diretrizes nacionais de redução de riscos de desastres.
2 Metodologia
A estruturação do ICPM baseia-se em um modelo de análise multicritério ponderada. O objetivo é transformar informações cadastradas em base de dados heterogênea em uma métrica normalizada a partir de uma tota entre 0 e 1, que permite a comparação direta entre os 5.570 municípios brasileiros.
2.1 Arquitetura do ICPM
A equação geral que determina o cálculo do ICPM é dada pela seguinte expressão:
\[ICPM = \left( \frac{\sum ICPM_i}{3} \times 0.7 \right) + (Vuln \times 0.2) + (IPM_{Clima} \times 0.1)\]
Em que:
\(ICPM\) - Índice de Cadastro e Priorização Municipal - Geral (valor entre 0 a 1, em que 0 consiste em referêncial de menor prioridade e 1 de maior prioridade)
\(ICPM_i\) -Índice de Cadastro e Priorização Municipal - Componente por tipologia de desastre (valor entre 0 a 1, em que 0 consiste em referêncial de menor prioridade e 1 de maior prioridade). O subíndice \(i\) refere-se a tipologia do desastre, sendo \(ICPM_D\) para deslizamentos, \(ICPM_I\) para inundações e \(ICPM_E\) para enxurradas.
\(V_{uln}\) - Vulnerabilidade - Componente Vulnerabilidade consiste no valor do Índice de Capacidade Municipal (ICM) ajustado para seguinte escala: A=0.25; B= 0.50; C=0.75 e D = 1.00.
\(ICPM_{Clima}\) -Índice de Cadastro e Priorização Municipal - Componente Clima (valor entre 0 a 1, em que 0 consiste em referêncial de menor prioridade e 1 de maior prioridade)
\(0.7\), \(0.2\), \(0.1\) correspondem aos pesos adotados.
Os pesos adotados foram definidos a partir de uma análise de sensibilidade, buscando estabelecer um equilíbrio entre a exposição física imediata, a capacidade de governança local e as tendências climáticas de longo prazo.O peso de \(70\)% (\(0.7\)) atribuído à média das componentes por tipologia de desastre (\(ICPM_i\)) garante que o núcleo do índice permaneça ancorado na realidade física e histórica dos eventos extremos oficialmente registrados. Ao mesmo tempo que considera fatores de alta relevância, como o histórico de óbitos, a população exposta em áreas de risco e a recorrência de registros oficiais, essa ponderação evita que municípios com histórico extremo de desastres, mas dotados de excelente infraestrutura e capacidade de resposta institucional, monopolizem o direcionamento da priorização federal. Sem esse equilíbrio, municípios altamente vulneráveis e incapazes de responder de forma autônoma seriam sistematicamente preteridos em favor de grandes centros urbanos que, apesar de sofrerem desastres recorrentes, possuem maior resiliência financeira e operacional.
O peso de \(20\)% (\(0.2\)) para a vulnerabilidade institucional (\(V_{uln}\)) atua diretamente como um fator de justiça federativa e equidade. Ele garante que a União considere a fragilidade da governança local como um critério ativo de priorização. Municípios classificados nas faixas mais baixas do ICM (C e D) recebem um acréscimo proporcional em sua nota final, direcionando o apoio técnico e financeiro prioritariamente para onde a máquina pública municipal é mais carente de recursos humanos, orçamentários e de planejamento.
Por fim, o peso de \(10\)% (\(0.1\)) para a componente climática (\(ICPM_{Clima}\)) funciona como um vetor de tendência futura de médio e longo prazo. Esta componente atua de forma prospectiva, sem distorcer a urgência das demandas físicas atuais. Ela serve como um critério de desempate estratégico, elevando a prioridade de municípios localizados ode se espera proporcionalmente maior severidade de eventos extremos nas próximas décadas.
2.1.1 Índices de Cadastro e Priorização Municipal por Tipologia de Desastres \(ICPM_i\)
O índice de Cadastro e Priorização Municipal por Tipologia de Desastres considera três tipologias de forma independente: Movimentos de Massa/Deslizamentos (\(ICPM_{\text{D}}\)), Inundações (\(ICPM_{\text{I}}\)) e Enxurradas (\(ICPM_{\text{E}}\)). Cada subíndice pondera o impacto humano histórico (número de óbitos), a exposição populacional atual (população em risco mapeada em áreas de risco R3 e R4) e a recorrência de eventos (número de registros oficiais no S2iD para a respectiva tipologia de desastre) totalizando 3 variáveis.
A distribuição dos dados dessas 3 variáveis é caracterizada por uma assimetria significativa. Municípios como Petrópolis (RJ) ou Blumenau (SC) registram valores históricos de óbitos, pessoas em risco e registros de ocorrências que superam a média nacional por ordens de magnitude significativa. Para mitigar o efeito desses outliers e aumentar a sensibilidade analítica na faixa de média, aplica-se uma transformação logarítmica de base natural com deslocamento unitário (\(log1p\)) antes da normalização baseada nos valores Mínimos e Máximos. A função matemática implementada é expressa por:
\[\text{Norm}(log1p(x)) = \frac{\ln(\max(x, 0) + 1) - \ln(x_{\text{min}} + 1)}{\ln(x_{\text{max}} + 1) - \ln(x_{\text{min}} + 1)}\]
Em que \(x\) representa a variável de interesse, \(Óbitos_i\), o número de óbitos correspondente à tipologia de desastre \(i\), \(PopRisco_i\), o a população em risco nas áreas categorizadas como R3 e R4 para tipologia de desastre \(i\) e \(Registros_i\) o número de registros para a tipologia de desastre \(i\).
Assim, \(ICPM_i\) é dado por:
\[ICPM_i = [Norm(log1p(\text{$Óbitos_i$})) \times 0.4] + [Norm(log1p(\text{$PopRisco_i$})) \times 0.3] + [Norm(log1p(\text{$Registros_i$}) \times 0.3]\] A Figura 2.1 apresenta a assimetria das variáveis consideradas e o efeito da transformação logarítima.
O peso de \(40\)% atribuído para o número de óbitos do hístórico decorrente de cada tipologia de desastre considera a primazia da salvaguarda da vida como critério norteador da priorização. A população exposta em áreas de risco muito alto (R4) e alto (R3) introduz a dimensão prospectiva e preventiva, recebendo peso \(30\)% na composição. O número de registros oficiais de desastres homologados no S2iD (Situações de Emergência e Estados de Calamidade Pública) para a respectiva tipologia recebe \(30\)% de peso, avaliando a frequência dos processos físicos no território.
A combinação dos pesos (\(0.4 + 0.3 + 0.3 = 1.0\)) estabelece um modelo de distribuição de pesos equilibrado. A aplicação prévia da transformação logarítmica (\(log1p\)) garante que o peso de \(0.4\) para óbitos não anule a influência das outras variáveis em municípios de médio risco, permitindo que a frequência (\(0.3\)) e a exposição (\(0.3\)) atuem de forma harmônica na diferenciação fina das prioridades nacionais.
A compartimentação desses subíndices independentes por tipologia de desastre permite a realização de avaliações individualizadas e ranqueamentos específicos para cada tipo de ameaça. Essa estrutura modular oferece três grandes benefícios operacionais:
Especialização das Ações de Mitigação: Em vez de gerar apenas uma nota genérica de “risco”, o índice permite identificar se a criticidade de um município é predominantemente decorrente de deslizamentos de terra (exigindo obras de contenção de encostas), inundações (demandando planejamento de bacias, ações de ordenamento no uso e ocupação do solo ou obras para controle de cheias) ou enxurradas bruscas (exigindo enfoque em obras de macro e micro drenagem).
Otimização de Recursos Setoriais: Recursos federais vinculados a programas específicos (como o Programa de Aceleração do Crescimento - PAC) podem ser distribuídos utilizando diretamente o ranking de subíndices de interesse para ações relacionadas a contenção de encostas ou drenagem, por exemplo.
Flexibilidade e Atualização Independente: A estrutura em módulos permite que novos dados ou variáveis (como novos mapeamentos ou atualizações específicas) sejam incorporados a uma tipologia específica, conferindo ao ICPM uma alta escalabilidade e perenidade técnica.
2.1.2 Componente Vulnerabilidade \(V_{uln}\)
A gestão de riscos e desastres não se limita à análise da severidade física dos eventos extremos; ela é intrinsecamente condicionada pela capacidade de resposta, planejamento e governança dos entes federativos locais. Para incorporar essa dimensão de governança ao modelo do ICMP, o índice integra de forma estruturada o Índice de Capacidade Municipal (ICM), convertendo-o em uma métrica de Vulnerabilidade Institucional (\(V_{uln}\)). O ICM é o principal instrumento de monitoramento do Programa 2318 - Gestão de Riscos e Desastres no Plano Plurianual (PPA) 2024-2027 do Governo Federal. Ele avalia a maturidade da gestão local por meio de 20 variáveis estratégicas, distribuídas em três dimensões fundamentais:
Dimensão I - Instrumento de Planejamento e Gestão: Avalia a existência de arcabouço legal e mapeamentos técnicos essenciais, tais como a inclusão de diretrizes de proteção civil no PPA e no Plano Diretor, a elaboração de Planos Municipais de Redução de Riscos (PMRR), Cartas de Suscetibilidade, Cartas Geotécnicas de Aptidão à Urbanização, mapeamento ativo de áreas de risco, cadastro de famílias expostas e Planos de Contingência (Placon).
Dimensão II - Coordenação Intersetorial e Capacidades: Mensura a estrutura operacional e de recursos humanos do município, incluindo a existência de Conselho Municipal de Proteção e Defesa Civil, a ativação da Coordenadoria Municipal (Compdec), dotação orçamentária específica na Lei Orçamentária Anual (LOA), criação de Núcleos Comunitários (Nupdec), número mínimo de técnicos capacitados pela SEDEC e usuários habilitados no Sistema S2iD.
Dimensão III - Políticas, Programas e Ações: Verifica a execução prática de medidas mitigadoras e preventivas, como o controle e fiscalização de edificações em áreas suscetíveis, programas de habitação de interesse social para reassentamento de famílias removidas de áreas de risco, obras de drenagem urbana, campanhas educativas de conscientização e a operação de sistemas locais de monitoramento e alerta antecipado.
O ICM classifica os municípios em quatro faixas de capacidade: A (Alta), B (Intermediária Avançada), C (Intermediária Inicial) e D (Inicial). Assim, a relação entre capacidade de gestão e vulnerabilidade é modelada de forma inversamente proporcional. Um município com alta capacidade de gestão (Faixa A) apresenta menor vulnerabilidade institucional frente a um desastre, enquanto um município com capacidade inicial (Faixa D) apresenta vulnerabilidade máxima, pois carece de instrumentos mínimos de prevenção e resposta.
Dessa forma, para a consideração do ICM no cálculo da vulnerabilidade as categorias de capacidade foram convertidas em números da seguinte forma: \(A=0.25\); \(B=0.50\), \(C=0.75\) e \(D= 1.00\), em que quanto maior o valor maior a vulnerabilidade institucional do município.
A inclusão deste componente revela-se um imperativo metodológico ao analisarmos o diagnóstico nacional do ICM realizado no início de 2024. Os dados apontam que 3.253 municípios (cerca de 58,4% do território nacional) encontram-se nas faixas C e D, caracterizando um estágio embrionário ou inicial de gestão de riscos. Ao penalizar positivamente o score final do ICMP com um peso de \(20\)% para a vulnerabilidade institucional (\(V_{uln}\times 0.2\)), o modelo garante que, sob condições de risco físico similares, o apoio técnico e financeiro da União seja direcionado prioritariamente aos municípios que, além de estarem expostos à ameaça física, possuem menor capacidade administrativa e financeira para proteger suas populações de forma autônoma.
Maiores detalhes a respeito do cálculo do ICM podem ser consultados nas Notas Técnicas 004/2026/CPAI/CGPAC/DPOG/CENAD/SEDEC-MIDR(Brasil, 2026) e 1/2023/CPP CGGI/CGGI SEDEC/DAG/SEDEC-MIDR(Brasil, 2023a)
2.1.3 Índices de Cadastro e Priorização Municipal - Componente Clima \(ICPM_{Clima}\)
A incorporação de cenários prospectivos de mudança climática no \(ICPM\) representa um avanço metodológico no contexto da resiliência climática. Dessa forma, o modelo antecipa a intensificação de eventos extremos de precipitação projetados para as próximas décadas e incorpora esse efeito no índice de priorização. Para operacionalizar essa componente, o índice utiliza como referência técnica direta a publicação Impacto da Mudança Climática nos Recursos Hídricos do Brasil - Volume 2 - Extremos Hidrológicos (Paiva et al., 2025), especificamente os dados consolidados do Capítulo 11, que estabelece fatores de correção para chuvas intensas no território brasileiro sob cenários de aquecimento global.
O referido estudo quantifica a alteração esperada na magnitude e na frequência das chuvas a partir de fatores regionais de alteração percentual (%) da magnitude da precipitação intensa de 1 a 20 dias de duração, considerando eventos frequentes e raros. Esses fatores atuam como multiplicadores de segurança climática. Neste trabalho, foram considerados como referência os percentuais de multiplicação disponibilizados na Tabela 7 do Capítulo 11 da referida publicação para chuvas máximas de um dia com tempos de retorno superiores a 10 anos.
Regiões de Alta Vulnerabilidade Atmosférica: Estados como o Ceará (\(40\)%), Amapá (\(43\)%), Amazonas (\(41.5\)%) e Pará (\(35.5\)%) apresentam os maiores fatores de correção. Isso indica que, sob as projeções de mudança climática, os eventos de chuva intensa nessas regiões sofrerão os acréscimos mais severos em sua magnitude física, elevando drasticamente o potencial de geração de enxurradas e inundações bruscas.
Regiões de Acréscimo Moderado: Estados do Sul e Sudeste, como Rio Grande do Sul (\(18\)%), Santa Catarina (\(16\)%) e São Paulo (\(21\)%), embora já registrem alta frequência de desastres, possuem fatores de acréscimo percentual moderados porque seus valores absolutos de precipitação basal já são historicamente elevados.
Regiões de Baixo Acréscimo Relativo: Estados como Rondônia (\(4.1\)%) e Acre (\(2.8\)%) apresentam os menores fatores de correção indicados no referido estudo.
2.2 Análise de Sensibilidade e Seleção dos Municípios Prioritários
A definição de um limiar técnico (nota de corte) para a indicação de municípios ao Cadastro Nacional de Municípios Críticos consiste em uma tarefa complexa com pressupostos relativos que podem variar de acordo com critérios estabelecidos. Não obstante, a abordagem deve buscar uma lógica que evite definições arbitrárias ou por conveniências puramente administrativas.
Buscando garantir uma sistemática racional e a otimização na alocação de recursos públicos da União, esta seção detalha a metodologia de análise de sensibilidade individualizada aplicada ao Índice de Cadastro e Priorização de Municípios (\(ICPM\)) e aos seus subíndices setoriais (\(ICPM_{\text{D}}\), \(ICPM_{\text{I}}\), \(ICPM_{\text{E}}\) e \(ICPM_{\text{Clima}}\)).
O objetivo central desta análise é identificar o ponto de equilíbrio ótimo entre a abrangência (evitar a exclusão de municípios de alto risco) e a seletividade (evitar a inclusão de municípios com baixa criticidade física ou institucional).
2.2.1 Elasticidade Local Discreta
Para modelar o comportamento do decaimento do número de municípios selecionados em função do aumento progressivo da nota de corte, foi desenvolvido um algoritmo baseado no conceito microeconômico de Elasticidade-Preço da Demanda, adaptado aqui como a Elasticidade Local da Seleção (\(E\)).
A elasticidade local mede a variação percentual na quantidade de municípios selecionados (\(N\)) induzida por uma variação percentual infinitesimal na nota de corte (\(C\)). Matematicamente, para um ponto discreto \(i\) em uma sequência ordenada de notas de corte, a elasticidade local é calculada por meio de diferenças centrais:
\[E_i = \frac{\% \Delta N}{\% \Delta C} = \frac{\frac{N_{i+1} - N_{i-1}}{N_{\text{médio}}}}{\frac{C_{i+1} - C_{i-1}}{C_{\text{médio}}}}\]
Onde:
\(N_{i+1}\) e \(N_{i-1}\) representam o número de municípios selecionados nos limites superior e inferior adjacentes ao ponto analisado.
\(C_{i+1}\) e \(C_{i-1}\) representam os valores das notas de corte adjacentes.
\(N_{\text{médio}} = \frac{N_{i+1} + N_{i-1}}{2}\) é a quantidade média de municípios no intervalo local.
\(C_{\text{médio}} = \frac{C_{i+1} + C_{i-1}}{2}\) é a nota de corte média do intervalo local.
2.2.2 O Ponto de Inflexão
O critério técnico para a determinação da Nota de Corte Sugerida (Inflexão Ótima) consiste em identificar o limiar onde a elasticidade local se aproxima de \(-1\) (elasticidade unitária):
\[\text{Corte Ótimo} = C_i \quad \text{onde} \quad |E_i + 1| \to 0\]
Este ponto representa uma fronteira de transição de fase estatística:
Região Elástica (\(E_i < -1\)): Pequenos acréscimos na nota de corte resultam em reduções desproporcionalmente grandes no número de municípios selecionados. Nesta faixa (geralmente abaixo de \(0.20\)), o índice é altamente sensível, e qualquer redução no rigor técnico inclui um volume massivo de municípios de menor criticidade (alto risco de erro de inclusão).
Região Inelástica (\(E_i > -1\)): Aumentos na nota de corte produzem pouca variação na quantidade de municípios selecionados. Nesta faixa (geralmente acima de \(0.20\)), o índice torna-se excessivamente restritivo, e a elevação do corte exclui municípios com vulnerabilidades físicas reais e consolidadas (alto risco de erro de exclusão).
O ponto de inflexão matemática onde a elasticidade é exatamente unitária (\(E_i = -1\)) define o ponto de eficiência máxima do modelo, maximizando a captação do risco real por município selecionado.
2.2.3 Resultados da Análise de Sensibilidade por Indicador
A simulação foi executada variando-se a nota de corte de \(0.05\) a \(0.95\), com incrementos discretos de \(0.05\). O comportamento de decaimento e os pontos de inflexão ótimos calculados para cada subíndice são apresentados a seguir.
2.2.3.1 Índice de Cadastro e Priorização Municipal - Geral (\(ICPM\))
O índice geral, que agrega as três tipologias de desastres, a vulnerabilidade institucional e o componente de mudança climática, apresenta seu ponto de inflexão em \(0.20\). A Figura 2.2 ilustra a curva de decaimento do \(ICPM\). A linha vertical tracejada verde indica o limiar ótimo de \(0.20\). Abaixo deste valor, a curva ganha inclinação acentuada (comportamento elástico), enquanto acima deste limiar a curva suaviza progressivamente.
2.2.3.2 Índice de Cadastro e Priorização Municipal - Movimentos de Massa (\(ICPM_D\))
O subíndice de deslizamentos e corridas de massa apresenta uma curva de decaimento acentuada devido à alta concentração histórica de óbitos e população exposta em encostas de alta declividade no território nacional (especialmente nas regiões Sudeste e Sul). O ponto de inflexão ótima para esta tipologia foi mapeado em \(0.15\), conforme apresentado na Figura 2.3.
2.2.3.3 Índice de Cadastro e Priorização Municipal - Inundação (\(ICPM_I\))
As inundações graduais e transbordamentos de calhas fluviais possuem distribuição espacial mais ampla e recorrente no Brasil. A análise de sensibilidade para esta tipologia, ilustrada na Figura 2.4, definiu o ponto de corte ótimo em \(0.15\), refletindo a necessidade de um limiar para filtrar os municípios com planícies de inundação criticamente ocupadas.
2.2.3.4 Índice de Cadastro e Priorização Municipal - Enxurrada (\(ICPM_E\))
As enxurradas (inundações bruscas de rápida resposta hidrológica) caracterizam-se por alta frequência e severidade localizada. O ponto de inflexão ótima calculado para este componente situou-se em \(0.10\) (ver Figura 2.5), capturando de forma equilibrada os municípios recorrentemente impactados por cabeças d’água e escoamento superficial violento em áreas urbanas adensadas.
2.2.3.5 Índice de Cadastro e Priorização Municipal - Clima (\(ICPM_{Clima}\))
O componente derivado das projeções climáticas para precipitação intensa apresenta uma distribuição espacial vinculada às projeções regionais de mudança climática. O ponto de corte ótimo para este indicador prospectivo foi estabelecido em \(0.80\) (ver Figura 2.6).
2.2.3.6 Nota de Corte e Limiares de Criticidade
A aplicação sistemática da análise de sensibilidade individualizada demonstra que a adoção de uma nota de corte de \(0.20\) para o \(ICPM\) (Índice Geral) consiste em uma forma racional de indicação de municípios ao Cadastro Nacional. Este limiar garante que o Governo Federal concentre seus esforços de prevenção e mitigação estrutural nos entes federativos que efetivamente ultrapassaram a fronteira da elasticidade de risco, otimizando a aplicação dos recursos públicos de forma tecnicamente consistente.
Complementarmente, os limiares ótimos obtidos para cada componente setorial — sendo \(0.15\) para movimentos de massa (I\(ICPM_{I}\)), \(0.21\) para inundações (\(ICPM_{E}\)), \(0.10\) para enxurradas (\(ICPM_{E}\)) e \(0.8\) para a componente de mudança climática (\(ICPM_{Clima}\)) — constituem parâmetros técnicos de referência. Estes valores são recomendados para balizar a tomada de decisão na ausência de justificativas locais ou argumentos específicos que demandem a calibração desses limites.
A análise de sensibilidade baseada no conceito de elasticidade local discreta (Seção 2.4.2) identificou o ponto de inflexão matemática do \(ICPM\) Geral em \(0,20\) — limiar onde \(|E + 1| \to 0\), definindo a fronteira entre a região elástica (\(E < -1\), onde pequenas variações no corte produzem grandes oscilações no número de selecionados) e a região inelástica (\(E > -1\), onde a curva de decaimento se estabiliza). Em termos puramente matemáticos, \(0,20\) representa o ponto de eficiência máxima do modelo, maximizando a relação entre risco capturado e número de municípios indicados.
Contudo, a definição do limiar final de indicação ao Cadastro Nacional não pode ser reduzida a um exercício exclusivamente matemático. A governança do risco de desastres opera sob restrições institucionais, orçamentárias e históricas que demandam uma calibração contextualizada do ponto de corte. Por essa razão, a SEDEC optou por adotar o limiar de \(0,30\) para o \(ICPM\) Geral, em lugar do valor de \(0,20\) sugerido pela elasticidade unitária. Esta decisão fundamenta-se em três ordens de argumentos, detalhados a seguir.
Primeiro, há que se considerar a trajetória histórica de indicação de municípios ao Cadastro Nacional conduzida pela Casa Civil da Presidência da República. A primeira lista de monitoramento, iniciada em 2012, contemplava 821 municípios (Brasil, 2023b). A atualização mais recente, no âmbito do Novo PAC, expandiu esse universo para um número significativamente maior (Brasil, 2025a, 2025b). A adoção de um corte em \(0,20\) resultaria em um contingente de municípios indicados que, embora matematicamente ótimo, poderia exceder a capacidade operacional de atendimento técnico e financeiro da União no curto prazo, comprometendo a efetividade das ações de prevenção e mitigação ao dispersar recursos por um universo excessivamente amplo de entes federativos. O corte em \(0,30\), por sua vez, estabelece um ponto de equilíbrio entre a necessidade de expandir o cadastro em relação à lista original de 2012 e a responsabilidade fiscal de concentrar esforços onde a criticidade é comprovadamente mais severa.
Segundo, a experiência internacional em políticas de priorização de risco oferece respaldo para a adoção de limiares mais restritivos do que aqueles indicados por critérios puramente matemáticos. O National Risk Index da FEMA (Federal Emergency Management Agency, 2025), que serviu de referência conceitual para as perspectivas de evolução futura do \(ICPM\), opera com classificações escalonadas (Very High, Relatively High, Relatively Moderate, etc.) que permitem modular a intensidade da intervenção federal de acordo com faixas de criticidade, em vez de adotar um único ponto de corte binário. A escolha de \(0,30\) para o \(ICPM\) Geral alinha-se a essa lógica escalonada: os municípios com score entre \(0,20\) e \(0,30\) não são desconsiderados, mas passam a integrar uma “zona de observação prioritária”, podendo ser objeto de ações complementares de monitoramento, capacitação e apoio técnico, enquanto aqueles com score \(\ge 0,30\) são efetivamente indicados para o Cadastro Nacional e priorizados para investimentos estruturais.
Terceiro, e mais relevante do ponto de vista da justiça federativa, o corte em \(0,30\) preserva a sensibilidade do índice à vulnerabilidade institucional. Municípios com risco físico moderado, mas classificados nas faixas C ou D do ICM — ou seja, desprovidos de instrumentos mínimos de planejamento e resposta — recebem um acréscimo proporcional em seu score final por meio do componente \(Vuln \times 0,2\). Com o corte em \(0,20\), esse efeito de “correção por vulnerabilidade” seria parcialmente neutralizado, pois a barreira de entrada mais baixa permitiria a inclusão de municípios com risco físico baixo, mas alguma estrutura de governança, diluindo a intencionalidade redistributiva do modelo. O corte em \(0,30\) assegura que o bônus de vulnerabilidade atue como um efetivo critério de desempate e justiça federativa, elevando ao cadastro prioritário exatamente aqueles municípios que, além de expostos, são institucionalmente frágeis.
Em síntese, a nota de corte de \(0,30\) não representa uma rejeição ao critério de elasticidade, mas sua contextualização para a realidade institucional brasileira. O ponto de inflexão em \(0,20\) permanece como referência técnica permanente do modelo, e revisões futuras do limiar poderão ser conduzidas à medida que a capacidade operacional da União se expanda, que novos dados alimentem o índice e que o Cadastro Nacional amadureça como política de Estado.
Não obstante, cabe ressaltar que estes limiares não devem ser interpretados como barreiras rígidas ou imutáveis. Outros critérios de conveniência administrativa, restrições orçamentárias conjunturais, prioridades geopolíticas ou novas evidências de vulnerabilidade socioambiental em campo podem, e devem, ser considerados de forma complementar para refinar e adaptar o valor de corte final às necessidades reais do Sistema Nacional de Proteção e Defesa Civil (Sinpdec).
3 Resultados e Discussões
A aplicação da metodologia descrita produziu um conjunto de resultados que permitem não apenas ranquear os municípios brasileiros segundo seu grau de criticidade frente a desastres geo-hidrológicos, mas também compreender, de forma desagregada, os fatores que contribuem para a priorização de cada ente federativo. Esta seção apresenta e discute os resultados obtidos para cada componente do \(ICPM\), organizados por tipologia de desastre e pela componente climática prospectiva, à luz dos limiares de corte determinados pela análise de sensibilidade individualizada. As tabelas com as listas por tipologia do ICPM são apresentadas em Anexo a esta nota técnica.
3.1 \(ICPM\) — Índice de Cadastro e Priorização Municipal — Geral
O \(ICPM\) constitui a métrica-síntese do modelo, consolidando a média das três tipologias de risco físico — deslizamentos (\(ICPM_D\)), inundações (\(ICPM_I\)) e enxurradas (\(ICPM_E\)) — com peso de \(70\%\), acrescida da vulnerabilidade institucional derivada do ICM (\(20\%\)) e da componente de mudança climática (\(10\%\)). Esta arquitetura de ponderação, discutida na Seção 2.2.3, busca um equilíbrio entre a materialidade histórica dos desastres, a capacidade de governança local e a trajetória climática projetada.
3.1.1 Distribuição Espacial e Concentração Regional do Risco
A Figura 3.1 revela um padrão de concentração espacial que não é aleatório, mas fortemente condicionado pela sobreposição de fatores geomorfológicos, demográficos e históricos. A mancha de criticidade mais intensa estende-se ao longo do corredor Serra do Mar–Serra da Mantiqueira, abrangendo municípios do Rio de Janeiro, São Paulo, sul de Minas Gerais e Espírito Santo, e prolonga-se até o Vale do Itajaí catarinense e a Região Metropolitana de Porto Alegre. Este arco concentra a maior densidade de municípios com scores elevados no \(ICPM\), refletindo a combinação de três vetores que se reforçam mutuamente: (i) relevo escarpado com alta declividade, que potencializa movimentos de massa e enxurradas; (ii) ocupação urbana historicamente desordenada em encostas e fundos de vale, maximizando a exposição populacional em setores de risco alto (R3) e muito alto (R4); e (iii) regimes pluviométricos com eventos intensos e recorrentes, particularmente durante a estação chuvosa do Sudeste (novembro a março).
Fora desse eixo principal, emergem pontos de criticidade isolados, porém expressivos, na Região Metropolitana de Salvador (BA), na faixa litorânea de Pernambuco e Alagoas, em Manaus (AM) e em Rio Branco (AC). Nestes casos, o score elevado é predominantemente impulsionado por componentes diferentes daqueles que dominam o Sudeste: enquanto em Salvador e Recife as inundações e enxurradas urbanas respondem pela maior parcela do risco, em Rio Branco a componente de inundações fluviais sazonais da Bacia do Acre é o fator preponderante, e em Manaus a combinação de enxurradas em áreas de ocupação ribeirinha com alta vulnerabilidade institucional (\(ICM\) na categoria D) eleva o índice final.
A Figura 3.2 complementa essa leitura geoespacial ao evidenciar, de forma proporcional, a dominância de poucos municípios no topo do ranking. O tamanho de cada bloco é diretamente proporcional ao valor do \(ICPM\), e a inspeção visual revela uma distribuição altamente assimétrica: aproximadamente 20 municípios concentram uma parcela desproporcional do score acumulado, enquanto a maioria dos selecionados distribui-se em uma cauda longa de criticidade moderada. Petrópolis (RJ), Teresópolis (RJ), Blumenau (SC), Nova Friburgo (RJ) e Salvador (BA) figuram consistentemente entre os dez maiores scores, resultado que valida a sensibilidade do índice ao capturar tanto o passivo histórico dos maiores desastres registrados quanto a exposição populacional persistente.
Alenquer (PA) figura entre os municípios com maior \(ICPM\) do país,um resultado que à primeira vista surpreende, já que o município não é manchete nacional de desastres. O caso do município de Alenquer/PA aparecer no topo do ranqueamento ocorre pois embora o município não apresente nenhum número extraordinário isoladamente, o mesmo apresenta pontuação relevante em todas as dimensões simultaneamente.
\(ICPM_I\) (Inundações) muito alto → 21 registros de inundações é um número considerável. Para um município de 57 mil habitantes no Baixo Amazonas, ter 21 ocorrências formais de inundação no S2iD indica recorrência crônica de cheias — Alenquer situa-se na margem esquerda do Rio Amazonas e é afetado pelas cheias sazonais que alagam a orla fluvial e comunidades ribeirinhas. Some-se a isso 2.320 pessoas mapeadas em risco de inundação.
\(ICPM_D\) (Deslizamentos) moderado → 4 mortes, 1.500 pessoas em risco, 1 registro. Não é extraordinário, mas é acima da mediana nacional (zero).
\(ICPM_E\) (Enxurradas) moderado → 13 registros + 1 morte. Também acima da mediana.
\(ICPM_{Clima}\) muito alto → O Pará tem perc_clima = 35,5%, um dos maiores fatores de correção de chuva intensa do país. Isso faz o \(ICPM_{Clima}\) de Alenquer ser elevado.
\(Vuln\) máximo → Sem Plano de Contingência, indicando alta vulnerabilidade.
O efeito líquido: a média \((ICPM_D + ICPM_I + ICPM_E) / 3\) de Alenquer é elevada não porque um componente é excepcional, mas porque todos os três são relevantes. Nenhum outro grande município de risco combina pontuação significativa em deslizamentos, inundações e enxurradas. Petrópolis, por exemplo, tem \(ICPM_D\) altíssimo, mas \(ICPM_I\) e \(ICPM_E\) mais modestos. Blumenau tem \(ICPM_I\) altíssimo, mas \(ICPM_D\) menor. Dessa forma, avalia-se que a estrutura modular do ICPM (\(D + I + E\)) captura uma realidade de risco que passaria despercebida em modelos de tipologia única: há municípios na Amazônia que não figuram na manchete nacional, mas convivem com múltiplas ameaças simultâneas (cheias anuais, deslizamentos em áreas de ocupação ribeirinha, enxurradas em núcleos urbanos não pavimentados), agravadas por uma vulnerabilidade institucional máxima e por uma projeção climática que indica intensificação severa das chuvas na região. A Tabela 3.1 resume as características preponderentes de Alenquer/PA.
A Tabela 3.1 resume os indicadores que resultam no alto índice para o município. Nenhuma variável isolada é extraordinária, mas o município pontua de forma relevante em todas as dimensões simultaneamente, deslizamentos, inundações, enxurradas, vulnerabilidade institucional e projeção climática, e a arquitetura de pesos do \(ICPM\) Geral considera exatamente esse perfil multifacetado.
A média \((ICPM_D + ICPM_I + ICPM_E)/3\) — que responde por \(70\%\) do índice beneficia Alenquer por distribuir seu risco entre as três tipologias, em vez de concentrá-lo em uma só. Os 21 registros de inundações (a maior frequência entre todos os municípios analisados) e os 13 registros de enxurradas indicam recorrência crônica de eventos hidrológicos na margem direita do Rio Amazonas. As 4 mortes por movimentos de massa e as 1.500 pessoas em risco de deslizamentos revelam que mesmo a tipologia menos esperada na Amazônia,deslizamentos,está presente, afetando comunidades ribeirinhas em áreas de várzea com solos instáveis.
A este quadro soma-se o \(ICPM_{Clima}\) elevado (fator de correção de \(35,5\%\) para o Pará, o segundo maior do país) e a vulnerabilidade institucional máxima: sem Plano de Contingência e com baixo \(ICM\). O resultado é um município de apenas 57 mil habitantes que compete, no ranking consolidado, com capitais e centros urbanos muito mais populosos e visíveis.
:::
3.2 \(ICPM_D\) — Índice de Cadastro e Priorização Municipal — Deslizamentos
O \(ICPM_D\) isola a componente de movimentos de massa (deslizamentos, corridas de detritos e processos correlatos), ponderando o histórico de óbitos (\(40\%\)), a população atualmente exposta em setores de risco alto (R3) e muito alto (R4) mapeados pela CPRM/SGB e pelo Cemaden (\(30\%\)), e a recorrência de registros oficiais de desastres dessa tipologia no S2iD (\(30\%\)). A nota de corte de \(0,15\), determinada pela análise de sensibilidade (Figura 2.3), é a segunda mais baixa entre as tipologias, superada apenas pelo corte de enxurradas (\(0,10\)). Este valor reduzido não é uma fragilidade do modelo, mas uma consequência direta da estrutura estatística dos dados de deslizamentos no Brasil: altíssima concentração de óbitos e população exposta em poucos municípios.
A Figura 3.3 revela uma distribuição espacial notavelmente concentrada, que merece uma leitura geológica e histórica cuidadosa. A quase totalidade dos municípios selecionados situa-se sobre o Cinturão Orogênico do Atlântico, uma província geológica que se estende do Espírito Santo ao Rio Grande do Sul, caracterizada por relevos montanhosos com vertentes de alta declividade, solos rasos e regimes pluviométricos intensos. Nesse contexto, três agrupamentos de criticidade se destacam:
Região Serrana do Rio de Janeiro (Petrópolis, Teresópolis, Nova Friburgo): palco do desastre de janeiro de 2011, o evento com o maior número de vítimas fatais por movimentos de massa já registrado no país, esses municípios seguem apresentando os maiores scores do \(ICPM_D\), reflexo tanto do passivo de óbitos quanto da persistência de milhares de pessoas residindo em setores de risco mapeados. A recorrência de eventos de menor magnitude, mas com vítimas fatais (como Petrópolis em 2022), demonstra que o risco nessa região é estrutural e não episódico.
Litoral Norte de São Paulo (São Sebastião, Ubatuba, Caraguatatuba): o desastre de fevereiro de 2023 em São Sebastião, com dezenas de vítimas fatais e centenas de desalojados, reposicionou essa região no topo do ranking. O \(ICPM_D\) captura adequadamente esse evento ao combinar o elevado número de óbitos recentes com a exposição populacional em encostas de alta declividade ocupadas por comunidades de baixa renda.
Vale do Itajaí e Serra Geral Catarinense (Blumenau, Brusque, Gaspar): embora mais conhecidos pelas inundações, esses municípios também registram histórico significativo de deslizamentos em encostas ocupadas, particularmente durante eventos extremos de precipitação que combinam acumulados elevados em 24–72 horas com solos saturados.
A Figura 3.4 confirma a dominância de Petrópolis e Teresópolis, cujos blocos ocupam área desproporcionalmente maior que os demais. Esta assimetria não é um artefato estatístico, mas a expressão visual de uma tragédia geológica recorrente: a combinação de chuvas orográficas intensas sobre vertentes graníticas e gnáissicas com solos de alteração espessos e ocupação urbana centenária em áreas de alta suscetibilidade.
Do ponto de vista de política pública, a concentração do risco de deslizamentos em um número reduzido de municípios tem implicações operacionais relevantes: permite à União concentrar investimentos em obras de contenção de encostas, sistemas de alerta baseados em limiares pluviométricos e planos de evacuação comunitária em localidades bem definidas, maximizando a relação custo-efetividade das intervenções. Por outro lado, impõe o desafio de não negligenciar os municípios de médio score (\(ICPM_D\) entre \(0,10\) e \(0,15\)), que, embora não figurem no topo do ranking, podem se tornar críticos caso haja a ocorrência de eventos de grandes proporções nessas áreas.
Ipojuca (PE) apresenta o segundo maior número absoluto de óbitos por movimentos de massa entre todos os municípios brasileiros analisados, 104 mortes, valor que o posiciona no topo do ranking do \(ICPM_D\) e impulsiona seu \(ICPM\) Geral para um patamar que compete com os municípios de maior criticidade do Sudeste e Sul. A Tabela 3.2 detalha as variáveis que compõem este subíndice.
| Dimensão | Valor | Contribuição ao ICPM Geral |
|---|---|---|
| População estimada (2021) | 99.101 | Escala de referência |
| Óbitos por tipologia | → Peso 0.4 na equação | |
| Óbitos por Movimento de Massa | 104 | Variável dominante |
| Óbitos por Inundações | 0 | — (não compõe \(ICPM_D\)) |
| Óbitos por Enxurradas | 0 | — (não compõe \(ICPM_D\)) |
| População em Risco | → Peso 0.3 na equação | |
| Pessoas em risco — Mov. de Massa | 1.958 | Reforça o score |
| Pessoas em risco — Inundações | 5.384 | — (não compõe \(ICPM_D\)) |
| Pessoas em risco — Enxurradas | 0 | — (não compõe \(ICPM_D\)) |
| Registros Oficiais | → Peso 0.3 na equação | |
| Registros de Mov. de Massa (S2iD) | 18 | Alta recorrência |
| Registros de Inundações (S2iD) | 1 | — (não compõe \(ICPM_D\)) |
| Registros de Enxurradas (S2iD) | 4 | — (não compõe \(ICPM_D\)) |
| Governança e Clima | → \(Vuln\) e \(ICPM_{Clima}\) afetam o Geral | |
| Plano de Contingência | ❌ Não | → \(Vuln = 1,00\) (ICM provável D) |
| Cartografia de Suscetibilidade | ✅ Sim | Condição habilitadora |
| Fator de correção climática (UF) | 18% (PE) | → \(ICPM_{Clima}\) moderado |
Ipojuca abriga Porto de Galinhas e um litoral com falésias e encostas ocupadas. Em maio de 2022, fortes chuvas na Mata Sul e Região Metropolitana do Recife provocaram deslizamentos que soterraram dezenas de residências em comunidades como Rurópolis e Nossa Senhora do Ó, matando mais de 100 pessoas somente em Ipojuca. Foi um dos desastres mais letais da história recente de Pernambuco.Além disso, Ipojuca tem:18 registros oficiais de movimentos de massa no S2iD (frequência alta), 5.384 pessoas em risco de inundações (número expressivo para um município de aproximadamente 99 mil habitantes) e não possui plano de contingência indicando alta vulnerabilidade. Assim, o \(ICPM_D\) coloca Ipojuca em um patamar alto nesse subíndice. Some-se a isso o \(ICPM_I\) moderado (pelas 5.384 pessoas em risco de inundação), uma vulnerabilidade institucional elevada, resultando em um \(ICPM\) que compete com os maiores do país.
O fator determinante remonta ao desastre de maio de 2022, quando chuvas intensas na Mata Sul de Pernambuco provocaram deslizamentos que soterraram dezenas de residências em comunidades do município, notadamente Rurópolis e Nossa Senhora do Ó, resultando em mais de 100 vítimas fatais apenas em Ipojuca. Este evento posiciona o município em um patamar de letalidade comparável ao de Petrópolis (RJ) e Teresópolis (RJ).
Complementarmente, os 18 registros oficiais de movimentos de massa indicam recorrência — o risco não é episódico, mas estrutural, associado à ocupação de encostas e falésias no litoral pernambucano. As 1.958 pessoas mapeadas em risco de deslizamentos e as 5.384 pessoas em risco de inundações, embora esta última alimente o \(ICPM_I\), não o \(ICPM_D\),revelam um passivo de exposição populacional que persiste após a tragédia de 2022. A ausência de Plano de Contingência agrava o quadro de vulnerabilidade institucional.
3.3 \(ICPM_I\) — Índice de Cadastro e Priorização Municipal — Inundações
O \(ICPM_I\) avalia o risco associado a inundações graduais — transbordamentos de calhas fluviais decorrentes de eventos de chuva prolongada, com resposta hidrológica lenta, que afetam predominantemente planícies de inundação ocupadas por assentamentos urbanos consolidados e atividades agrícolas. A nota de corte estabelecida em \(0,15\) (Figura 2.4) reflete uma distribuição mais pulverizada do que a de deslizamentos, coerente com a natureza espacialmente abrangente das bacias hidrográficas brasileiras.
A Figura 3.5 expõe uma geografia do risco de inundações que é, simultaneamente, mais dispersa e mais previsível do que a de deslizamentos. Enquanto os movimentos de massa concentram-se nas regiões serranas do Sudeste e Sul, as inundações graduais distribuem-se ao longo das calhas dos principais rios brasileiros, gerando manchas de criticidade em todas as cinco macrorregiões:
Região Sul (Vale do Itajaí, Bacia do Taquari-Antas, Lagoa dos Patos): concentra a maior densidade de municípios com scores elevados. Blumenau, Rio do Sul, Itajaí (SC), Lajeado, Estrela e Porto Alegre (RS) figuram consistentemente no topo do ranking, reflexo da combinação de bacias hidrográficas com alto coeficiente de escoamento superficial, urbanização de planícies de inundação e eventos recorrentes de cheias, inclusive o desastre de maio de 2024, que afetou mais de 90% dos municípios gaúchos.
Região Sudeste (Bacia do Rio Doce, Rio Muriaé, Rio Paraíba do Sul): municípios como Governador Valadares, Colatina (MG/ES), Campos dos Goytacazes e Itaperuna (RJ) apresentam criticidade elevada, associada à ocupação de planícies fluviais por centros urbanos de médio porte com sistemas de drenagem e contenção insuficientes.
Região Norte (Bacia do Rio Acre, Rio Madeira, Rio Negro): Rio Branco (AC), Porto Velho (RO) e Manaus (AM) destacam-se pela magnitude das cheias sazonais. Em Rio Branco, a enchente de 2023 superou a cota de transbordamento em mais de 2 metros, desalojando dezenas de milhares de pessoas. O \(ICPM_I\) captura adequadamente essa criticidade ao integrar o histórico de registros oficiais (com peso de \(30\%\)) à população exposta em áreas de risco hidrológico.
Região Nordeste (Bacia do Rio Itapecuru, Rio Mearim, Rio Una): a criticidade é menor em termos absolutos, mas não desprezível, especialmente em municípios do Maranhão, Pernambuco e Alagoas, onde inundações sazonais afetam populações ribeirinhas em situação de alta vulnerabilidade socioeconômica, fator que o modelo captura parcialmente por meio da alta Vulnerabilidade, mas que poderia ser refinado com a incorporação futura de índices de vulnerabilidade social, nos moldes do Social Vulnerability Index (SoVI) utilizado pelo NRI da FEMA (Federal Emergency Management Agency, 2025).
A Figura 3.6 confirma o protagonismo dos municípios catarinenses e gaúchos no ranking de inundações, mas revela também a presença de municípios amazônicos entre os 20 maiores scores, um resultado que desafia a percepção convencional de que o risco de inundações no Brasil é um problema essencialmente sulista. A recorrência de cheias extremas na Amazônia Ocidental, exacerbada por eventos de La Niña intensos e pelo desmatamento que altera o regime hidrológico de meso-escala, projeta um cenário de agravamento progressivo dessa componente de risco no Norte do país.
A Tabela 3.3 consolida os dados brutos e identifica o mecanismo predominante que posiciona cada um dos seis municípios no topo do ranking do \(ICPM_I\). Emergem três perfis distintos de criticidade, cada um capturado por um peso diferente na equação do subíndice: (i) evento crítico concentrado, em que o número absoluto de óbitos, impulsionado pelo peso de \(40\%\) domina o score, especialmente em municípios de pequena população; (ii) exposição populacional massiva, em que dezenas de milhares de pessoas residindo em áreas de risco de inundação, peso de \(30\%\), respondem pela maior parte da pontuação; e (iii) letalidade + recorrência em escala intermediária, em que a combinação de mortes significativas, registros frequentes e fator climático elevado produz um score consistentemente alto sem que nenhuma variável isolada seja extrema.
Os indicadores demonstram que um município pode figurar no topo do ranking a partir de diferentes condicionantes. Lajedinho possui significativo número de óbitos considerando a pequena população do município (3.735 habitantes); Rio Branco e Marabá apresentam um número expressivo de pessoas expostas e alta recorrência de eventos; Porto de Moz combina mortalidade significativa, frequência de registros e fator climático elevado. Esta pluralidade de perfis valida a arquitetura de pesos do \(ICPM_i\) (\(0,4\) para óbitos, \(0,3\) para população em risco e \(0,3\) para registros), que permite que diferentes configurações de risco sejam capturadas e hierarquizadas pelo modelo de forma equilibrada.
| Município | População | Óbitos | Pessoas em Risco | Registros (S2iD) | Fator Clima (UF) | Mecanismo Predominante | Variável Dominante |
|---|---|---|---|---|---|---|---|
| Lajedinho (BA) | 3.735 | 17 | 900 | 3 | 20% (BA) | Evento catastrófico concentrado |
Óbitos (0.4) |
| Porto de Moz (PA) | 42.456 | 12 | 1.400 | 10 | 35,5% (PA) | Letalidade + recorrência em escala intermediária |
Óbitos (0.4) + Registros (0.3) |
| Marabá (PA) | 287.664 | 3 | 17.628 | 17 | 35,5% (PA) | Exposição massiva com alta recorrência |
Pop. Risco (0.3) + Registros (0.3) |
| Rio Branco (AC) | 419.452 | 4 | 20.564 | 11 | 2,8% (AC) | Exposição populacional massiva |
Pop. Risco (0.3) |
3.4 \(ICPM_E\) — Índice de Cadastro e Priorização Municipal — Enxurradas
O \(ICPM_E\) captura o risco associado às enxurradas, inundações bruscas de resposta hidrológica rápida (flash floods), típicas de bacias urbanas de cabeceira com alta impermeabilização do solo e de regiões de relevo acidentado com chuvas convectivas intensas de curta duração. A nota de corte sugerida de \(0,10\) (Figura 2.5) é a mais baixa entre todas as tipologias, indicando que o risco de enxurradas é estruturalmente mais pulverizado no território nacional.
Esta pulverização decorre de uma característica física intrínseca: ao contrário de deslizamentos (que exigem a coincidência de relevo escarpado, solo espesso e chuva intensa) e de inundações graduais (que exigem grandes planícies de inundação), enxurradas podem ocorrer virtualmente em qualquer município que combine urbanização com chuvas intensas e insuficiência de sistemas de drenagem, condição que abrange a maioria das cidades brasileiras de médio e grande porte. A Figura 3.7 confirma essa dispersão: os municípios selecionados distribuem-se por todo o território nacional, com densidade particularmente elevada nas regiões metropolitanas de São Paulo, Rio de Janeiro, Belo Horizonte, Salvador e Recife, onde a impermeabilização extensiva do solo potencializa o escoamento superficial.
Do ponto de vista do planejamento de intervenções, a natureza pulverizada das enxurradas impõe um desafio distinto daquele apresentado por deslizamentos e inundações. Enquanto estes últimos permitem uma concentração de investimentos em localidades bem definidas (obras de contenção em encostas específicas, diques e comportas em trechos mapeados de rios), o combate às enxurradas urbanas demanda uma abordagem capilar de micro e macrodrenagem, distribuída por centenas de municípios. Nesse sentido, o \(ICPM_E\) com seu corte mais baixo (\(0,10\)) indica a importância de que a frequência e a onipresença das enxurradas exigem um limiar de captura mais abrangente, sob pena de deixar desassistidos municípios onde o risco é real, porém menos concentrado do que nas tipologias de deslizamentos e inundações.
A Figura 3.8 revela que, mesmo com a dispersão observada, alguns municípios se destacam com scores substancialmente superiores à média. Salvador (BA), Recife (PE), Belo Horizonte (MG) e São Paulo (SP) figuram entre os maiores escores — centros urbanos onde a combinação de chuvas convectivas intensas, topografia acidentada (no caso de Salvador e Belo Horizonte) e sistemas de drenagem subdimensionados resulta em enxurradas recorrentes com vítimas fatais. Em Salvador, por exemplo, os deslizamentos de encostas e as enxurradas em vales urbanos densamente ocupados frequentemente ocorrem de forma simultânea durante eventos extremos, sugerindo que, para estes municípios, a integração entre os subíndices \(ICPM_D\) e \(ICPM_E\) no planejamento de ações é não apenas desejável, mas indispensável.
3.5 \(ICPM_{Clima}\) — Índice de Cadastro e Priorização Municipal — Clima
O \(ICPM_{Clima}\) é a componente prospectiva do índice, derivada das projeções de anomalias de precipitação intensa e cenários de mudança climática fornecidos (Paiva et al., 2025). Diferentemente das demais tipologias — que refletem o passivo histórico de desastres, este subíndice antecipa o risco futuro, operando como um vetor de tendência de médio e longo prazos. O ponto de inflexão da elasticidade para esta componente situou-se em \(0,80\) (Figura 2.6), valor substancialmente mais elevado que os demais, refletindo uma distribuição mais concentrada das projeções de anomalias climáticas extremas.
A Figura 3.10 revela uma geografia do risco climático que diverge parcialmente da geografia do risco histórico. Enquanto os mapas de deslizamentos, inundações e enxurradas espelham predominantemente o passado e o presente (onde os desastres já ocorreram e onde a população já está exposta), o mapa do \(ICPM_{Clima}\) aponta para onde os desastres tenderão a se intensificar nas próximas décadas. Esta distinção é crucial para o planejamento adaptativo de longo prazo.
Dois agrupamentos de altíssima criticidade climática se destacam:
Arco Amazônia–Nordeste Setentrional (Amazonas, Pará, Amapá, Maranhão, Ceará): estes estados apresentam os maiores fatores de correção para chuvas intensas segundo o estudo considerado (Paiva et al., 2025), com percentuais de acréscimo na magnitude da precipitação intensa que variam de \(35,5\%\) (Pará) a \(43\%\) (Amapá e Ceará). Municípios dessas regiões, muitos dos quais já enfrentam desafios significativos de governança (\(ICM\) C ou D) e infraestrutura precária, recebem um acréscimo proporcional em seu score final por meio do componente \(ICPM_{Clima} \times 0,1\), que, embora modesto, pode ser decisivo para elevar sua posição relativa no ranking consolidado.
Sudeste (Rio de Janeiro, Espírito Santo, leste de Minas Gerais): estados como Rio de Janeiro (\(31\%\)) e Espírito Santo (\(40\%\)) também figuram com fatores de correção elevados, o que resulta em uma dupla penalização para seus municípios: eles já possuem scores altos nas tipologias de risco físico histórico e ainda recebem acréscimo pelo componente climático, reforçando sua posição no topo do \(ICPM\) Geral.
A Figura 3.11 confirma a dominância de municípios do Norte e Sudeste no ranking, com ênfase para Macapá (AP), Rio de Janeiro (RJ), Vitória (ES) e Fortaleza (CE). Contudo, é preciso reconhecer as limitações atuais desta componente: o fator de correção adotado baseia-se em projeções regionais que não capturam a variabilidade intra-estadual dos cenários climáticos. Municípios de um mesmo estado recebem o mesmo fator de correção, o que constitui uma simplificação metodológica decorrente da escala dos modelos climáticos disponíveis. À medida que downscalings regionais de maior resolução se tornem operacionais, particularmente aqueles em desenvolvimento pelo Cemaden e pelo INPE, recomenda-se o refinamento desta componente com fatores de correção municipalizados.
4 Painel Dashboard
Como parte da estratégia de transparência ativa e governança participativa do \(ICPM\), foi desenvolvido um painel interativo (dashboard) que disponibiliza, em ambiente web de acesso público, os resultados completos das análises de priorização conduzidas para as três tipologias de risco geo-hidrológico, para a componente climática prospectiva e para o índice consolidado. O painel permite que gestores municipais e estaduais, órgãos de controle, pesquisadores e a sociedade civil consultem, filtrem e comparem os scores de priorização de cada município brasileiro, promovendo a apropriação dos resultados, o escrutínio público e o aperfeiçoamento contínuo da metodologia.
4.1 Funcionalidades e estrutura
O painel, desenvolvido em R/Shiny e hospedado no servidor shinyapps.io, organiza-se em um ambiente de navegação por abas, cada uma correspondendo a um dos subíndices que compõem o \(ICPM\):
ICPM Consolidado: mapa e treemap interativo com a distribuição proporcional dos municípios selecionados segundo o \(ICPM\) Geral, permitindo identificar visualmente quais entes federativos concentram a maior criticidade acumulada nas múltiplas dimensões do modelo;
ICPM Deslizamentos (\(ICPM_D\)): visualização geoespacial e proporcional do risco associado a movimentos de massa, destacando os municípios com maior número de óbitos históricos e maior contingente populacional exposto em setores de risco alto e muito alto;
ICPM Inundações (\(ICPM_I\)): mapa e treemap da criticidade por inundações graduais, evidenciando os municípios com maior população em áreas de risco hidrológico e maior recorrência de registros oficiais;
ICPM Enxurradas (\(ICPM_E\)): distribuição espacial e proporcional do risco por enxurradas (flash floods), tipologia de resposta hidrológica rápida que, por sua natureza pulverizada, exige uma leitura capilar da criticidade;
ICPM Clima (\(ICPM_{Clima}\)): componente prospectiva derivada das projeções de anomalias de precipitação intensa da ANA, permitindo antecipar onde o risco tende a se intensificar nas próximas décadas.
Cada aba combina dois elementos visuais complementares: um mapa coroplético do Brasil com a distribuição espacial dos municípios selecionados, cuja intensidade de cor reflete o score do indicador, e um treemap interativo, inspirado na visualização de Observatories of Economic Complexity (OEC), em que o tamanho de cada bloco é diretamente proporcional ao valor do subíndice, facilitando a identificação imediata dos municípios que dominam o topo de cada ranking.
4.2 Controles interativos
O usuário dispõe de quatro controles para modular a consulta:
- Tipologia: seletor de abas que alterna entre os cinco subíndices e o consolidado;
- Nota Mínima de Prioridade: controle deslizante (slider) que permite ajustar o limiar de corte entre \(0\) e \(1\), com o valor default calibrado na nota de corte definida pela análise de sensibilidade e pela calibração contextualizada de cada subíndice (Seção 2.4);
- Filtro por UF: seletor que restringe a visualização a um estado específico, permitindo análises regionalizadas;
- Limite de Municípios (Treemap): controle que ajusta o número de municípios exibidos no gráfico proporcional, variando de 10 a 500.
Estes controles conferem ao painel flexibilidade para atender tanto a consultas gerenciais de alto nível (visão nacional consolidada) quanto a análises técnicas detalhadas (recorte estadual com diferentes limiares de criticidade).
4.3 Status e evolução
A versão atual do painel — Versão Beta (Testes) — constitui um protótipo funcional sujeito a ajustes de usabilidade, desempenho e conteúdo. A publicação em caráter beta tem o propósito deliberado de convidar a comunidade técnica a interagir com os resultados, identificar inconsistências, sugerir refinamentos e propor novas funcionalidades.
Este ciclo de retroalimentação é parte integrante da governança do \(ICPM\), assegurando que o índice não se cristalize como um produto fechado, mas evolua como um instrumento vivo, ancorado na prática e no escrutínio dos seus usuários finais.
4.4 Acesso ao painel
O painel interativo está disponível publicamente no endereço abaixo. Para uma melhor experiência de navegação — especialmente em razão da densidade dos mapas e da área útil requerida pelos treemaps —, recomenda-se abri-lo em tela cheia ou em janela separada, utilizando o link fornecido.
5 Perspectivas Futuras de Aprimoramento
A concepção do Índice de Cadastro e Priorização de Municípios (\(ICPM\)) em sua versão atual representa um avanço metodológico significativo para a gestão de riscos e desastres no Brasil. Contudo, a complexidade inerente às dinâmicas socioambientais e climáticas do território nacional impõe a necessidade de planejar a evolução contínua deste instrumento. As perspectivas de aprimoramento futuro do \(ICPM\) estruturam-se em duas frentes complementares e sinérgicas: a expansão de sua arquitetura para um modelo de Índice Nacional de Riscos multidimensional e o refinamento da avaliação das capacidades de governança local.
5.1 Alinhamento ao Modelo Multidimensional do National Risk Index (FEMA)
A principal diretriz para a evolução de médio e longo prazo do \(ICPM\) consiste na transição de um índice de priorização cadastral para um Índice Nacional de Riscos robusto, inspirado na arquitetura metodológica do National Risk Index (NRI) desenvolvido pela Federal Emergency Management Agency (FEMA) dos Estados Unidos (Federal Emergency Management Agency, 2025).
O modelo do NRI baseia-se em uma equação fundamental que redefine a estimativa de risco ao integrar fatores físicos, sociais e de resiliência:
\(Risco = Perda Anual Esperada (EAL) X Fator de Risco Comunitário\)
Onde o Fator de Risco Comunitário é composto de forma aditiva pela Vulnerabilidade Social (atuando como um amplificador de consequências) e pela Resiliência Comunitária (atuando como um atenuador de impactos).
Para a realidade brasileira, a adoção dessa estrutura conceitual permitirá superar as limitações dos índices tradicionais por meio de três evoluções estruturais:
Cálculo da Perda Anual Esperada (EAL): Aprimorar a componente de risco físico do \(ICPM\) para estimar quantitativamente as consequências físicas e econômicas de eventos extremos. Isso exige a integração sistemática de dados de exposição física (densidade de infraestrutura, valor de ativos expostos e dados censitários detalhados), frequência anualizada de ocorrências e taxas de danos históricos por tipologia de desastre. A sistematização dessa iniciativa requer a implementação de metodologias específicas para quantificação de danos e prejuízos considerando as diferentes tipologias de desastres e a implementação dos resultados advindos desses levantamentos em um sistema integrado nacional estruturado em um banco de dados.
Categorização por Múltiplas Ameaças: Expandir as três tipologias atuais (deslizamentos, inundações e enxurradas) para um portfólio abrangente de ameaças naturais recorrentes no Brasil. Essa expansão deve incorporar fenômenos de evolução lenta ou de grande impacto regional, como secas extremas, ondas de calor, vendavais e erosão costeira.
Integração de Indicadores de Resiliência Comunitária: Desenvolver e aprimorar métricas que capturem a capacidade intrínseca da população local de se preparar, resistir e se recuperar de um desastre, atuando como um fator redutor do risco final calculado.
5.2 Calibração das Capacidades Organizacionais e Governança Local
A segunda frente de aprimoramento foca no aprofundamento do diagnóstico da governança municipal. Embora o Índice de Capacidade Municipal (\(ICM\)) atual forneça uma “fotografia” da existência de instrumentos de gestão, a evolução do \(ICPM\) demanda uma avaliação mais qualitativa e operacional das capacidades estatais. Conforme evidenciado pelas análises empíricas de Cotting et al. (2025) sobre os municípios prioritários do Brasil, a mera existência formal de planos de contingência ou mapeamentos de risco não se traduz automaticamente em capacidade de resposta efetiva em campo. O estudo demonstra que:
Assimetria entre Estruturação e Implementação: Há uma forte correlação entre a estruturação física das defesas civis locais e a capacidade de implementar instrumentos de planejamento. Municípios de pequeno porte frequentemente sofrem com a falta de equipes técnicas permanentes e certificadas, o que torna os planos de contingência documentos meramente cartoriais e sem aplicabilidade prática durante um desastre (Cotting et al., 2025).
Necessidade de Indicadores de Processo: O \(ICPM\) futuro deve incorporar variáveis que avaliem a funcionalidade real das estruturas locais, tais como a frequência de simulados de evacuação realizados, a dotação orçamentária efetivamente liquidada em ações de prevenção (e não apenas prevista na LOA) e a integração operacional entre as secretarias de planejamento urbano, assistência social e defesa civil.
Calibração da Vulnerabilidade Institucional: A escala de conversão do \(ICM\) para a Vulnerabilidade Institucional deve ser refinada para ponderar o porte populacional e as disparidades regionais. Municípios com baixíssima capacidade organizacional e alta exposição física devem receber suporte técnico direcionado da União para o desenvolvimento de capacidades, evitando que a fragilidade administrativa perpetue o ciclo de desastres.
Ao convergir a robustez metodológica com uma maior abrangência de ameaças integradas com a sensibilidade sociológica e institucional das capacidades organizacionais brasileiras, o \(ICPM\) poderá evoluir para um Índice Nacional de Risco permitindo a sua consolidação como um instrumento efetivo de planejamento preditivo e de indução de resiliência federativa do Sistema Nacional de Proteção e Defesa Civil (Sinpdec).
6 Conclusões
6.1 Síntese dos limiares de priorização
A escolha das notas de corte para cada subíndice do \(ICPM\) — ancorada no ponto de elasticidade unitária das respectivas curvas de sensibilidade e calibrada por critérios de viabilidade operacional e responsabilidade fiscal — produziu o seguinte quadro de seleção:
| Componente | Nota de Corte | Municípios Selecionados | Diretriz de Política Pública |
|---|---|---|---|
| \(ICPM\) Geral | 0,30 | 983 | Cadastro Nacional — priorização integrada |
| \(ICPM_D\) (Deslizamentos) | 0,15 | 584 | Obras de contenção e estabilização de encostas |
| \(ICPM_I\) (Inundações) | 0,15 | 974 | Planos de bacia e intervenções em calhas fluviais |
| \(ICPM_E\) (Enxurradas) | 0,10 | 776 | Planos de macrodrenagem urbana |
| \(ICPM_{Clima}\) | 0,80 | ~50 | Planejamento adaptativo de longo prazo (Plano Clima) |
6.2 Achados principais
\(ICPM\) Geral (\(0,30\)). O limiar de \(0,30\) — fixado deliberadamente acima do ponto de inflexão matemática (\(0,20\)) como decisão de política pública — seleciona 983 municípios que representam a interseção das múltiplas dimensões de criticidade: risco físico elevado em ao menos uma tipologia, vulnerabilidade institucional significativa e/ou exposição climática projetada. Estes são os municípios para os quais a indicação ao Cadastro Nacional de Municípios com Áreas Suscetíveis à Ocorrência de Deslizamentos de Grande Impacto, Inundações Bruscas ou Processos Geológicos ou Hidrológicos Correlatos e o direcionamento prioritário de recursos federais se justificam de forma mais robusta. A lista inclui desde casos de letalidade extrema concentrada — Lajedinho (BA), com 17 óbitos para 3.735 habitantes — até perfis de exposição populacional massiva com alta recorrência — Marabá (PA), com 17.628 pessoas em risco e 17 registros oficiais —, validando a arquitetura de pesos do modelo, que permite que diferentes configurações de risco, igualmente legítimas, sejam capturadas e hierarquizadas.
\(ICPM_D\) — Deslizamentos (\(0,15\)). O limiar de \(0,15\) seleciona 584 municípios e reflete a tipologia de maior letalidade concentrada entre os desastres geo-hidrológicos no Brasil. O subíndice é dominado por municípios com óbitos históricos expressivos — Ipojuca (PE), com 104 mortes no evento de 2022, é o caso emblemático —, mas também captura municípios de menor visibilidade midiática que combinam exposição populacional significativa com recorrência de registros oficiais. A concentração espacial dos maiores scores na faixa da Serra do Mar e Serra da Mantiqueira (Rio de Janeiro, São Paulo, Minas Gerais, Espírito Santo e Santa Catarina) é consistente com o conhecimento geomorfológico e com o histórico de desastres do país. O corte de \(0,15\), inferior ao do \(ICPM\) Geral, reflete o fato de que este subíndice opera como ferramenta de política setorial: a relação custo-benefício de obras de contenção justifica uma abrangência maior do que a lista consolidada do Cadastro Nacional. O peso de \(40\%\) atribuído aos óbitos na equação do \(ICPM_D\) produz um ranking em que a letalidade passada funciona como proxy da vulnerabilidade estrutural: municípios que já registraram mortes por deslizamentos têm, na ausência de intervenções de estabilização, probabilidade elevada de novos eventos fatais.
\(ICPM_I\) — Inundações (\(0,15\)). Com 974 municípios selecionados, o \(ICPM_I\) apresenta o maior contingente entre os subíndices tipológicos, refletindo a ampla distribuição espacial do risco de inundações graduais ao longo das principais bacias hidrográficas do país. O perfil típico dos municípios no topo deste ranking combina elevada população exposta em áreas de risco hidrológico com alta densidade de registros oficiais no S2iD, indicando recorrência crônica — Alenquer (PA), com 21 registros e 2.320 pessoas em risco, exemplifica esse padrão. Diferentemente dos deslizamentos — em que a letalidade é o fator dominante —, as inundações produzem um padrão de risco mais associado à exposição populacional continuada e aos danos materiais recorrentes do que à mortalidade aguda. A distribuição espacial dos maiores scores acompanha as principais bacias hidrográficas (Vale do Itajaí, Rio Doce, Rio Acre, calhas dos rios amazônicos), orientando intervenções estruturais em planos de bacia, sistemas de alerta hidrológico e políticas de ordenamento territorial de várzeas.
\(ICPM_E\) — Enxurradas (\(0,10\)). O corte mais baixo entre os subíndices reflete a natureza ubíqua das enxurradas urbanas no território nacional. Com 776 municípios selecionados, este resultado não deve ser interpretado como falha de seletividade, mas como um diagnóstico estrutural relevante: as enxurradas são o tipo de desastre geo-hidrológico mais democraticamente distribuído entre os municípios brasileiros, afetando desde pequenas cidades serranas até grandes regiões metropolitanas. Enfrentá-las exige uma política capilar de investimentos em infraestrutura de micro e macrodrenagem, complementar às intervenções concentradas em encostas (contenção de deslizamentos) e calhas fluviais (controle de inundações graduais).
\(ICPM_{Clima}\) — Componente Climática (\(0,80\)). O corte mais elevado — e o menor contingente, cerca de 50 municípios — é coerente com o papel atribuído a esta componente no modelo: um vetor de tendência e um critério de desempate, não um determinante primário da priorização. Os municípios que pontuam acima de \(0,80\) concentram-se majoritariamente no Arco Amazônia–Nordeste Setentrional (Pará, Maranhão, Piauí) e em bolsões do Sudeste, refletindo a distribuição espacial dos fatores de correção climática derivados das projeções de anomalias de precipitação intensa da ANA. Estes municípios devem ser objeto de atenção especial no planejamento adaptativo de longo prazo, particularmente no âmbito do Plano Clima e dos compromissos brasileiros de adaptação no Acordo de Paris.
6.3 Governança e flexibilidade operacional
A estrutura modular do \(ICPM\) — com subíndices independentes, calculados e ranqueados separadamente — revela-se não apenas uma conveniência computacional, mas uma ferramenta de governança. Ela permite que diferentes políticas setoriais utilizem o ranking específico mais adequado à sua finalidade, sem prejuízo da visão consolidada fornecida pelo \(ICPM\) Geral:
- Obras de contenção de encostas e planos de habitação segura → ranking \(ICPM_D\);
- Intervenções em calhas fluviais, planos de bacia e sistemas de alerta → ranking \(ICPM_I\);
- Planos de macrodrenagem urbana e infraestrutura de águas pluviais → ranking \(ICPM_E\);
- Planejamento adaptativo climático e Plano Clima → ranking \(ICPM_{Clima}\);
- Alocação integrada de recursos federais e indicação ao Cadastro Nacional → ranking \(ICPM\) Geral.
Esta flexibilidade operacional, aliada à fundamentação matemática da análise de sensibilidade — que ancora cada nota de corte no ponto de elasticidade unitária da respectiva curva de decaimento — e à transparência proporcionada pelo painel interativo público, confere ao \(ICPM\) as condições para evoluir de uma proposta metodológica para um instrumento efetivo e perene da política nacional de proteção e defesa civil. A publicação em formato de nota técnica aberta, acompanhada dos códigos-fonte em anexo e do dashboard interativo, visa precisamente a convidar o escrutínio da comunidade técnica e a promover o ciclo de aperfeiçoamento contínuo que um índice desta natureza exige.
Anexos
Anexo I — Código de Cálculo do Índice (ICPM)
# ==============================================================================
# PROJETO: CADASTRO NACIONAL DE MUNICÍPIOS CRÍTICOS (ICPM v2.0)
# ETAPA: CÁLCULO DO ÍNDICE DE CADASTRO E PRIORIZAÇÃO MUNICIPAL (ICPM)
# ==============================================================================
# Este script calcula o ICPM a partir da planilha base de dados, dos dados de
# referência climática da ANA e da lista unificada do ICM. O resultado final é
# salvo como um objeto sf contendo todos os municípios brasileiros com seus
# respectivos índices.
# ==============================================================================
# ========== 1. Configuração do ambiente ==========
# Define o diretório de trabalho (ajuste para o seu ambiente)
setwd("C:/Users/cassi/OneDrive/Documents/SEDEC/CADASTRO_Municipios/R/CadastrosMunicipios_REV_0D")
# Carrega os pacotes necessários
library(sf) # Manipulação de dados espaciais
library(readxl) # Leitura de arquivos Excel
library(dplyr) # Manipulação de dados
library(geobr) # Malhas municipais do IBGE
# ========== 2. Limpeza de cache do geobr ==========
# Remove possíveis arquivos corrompidos do cache
cat("Limpando cache corrompido do geobr...\n")
try(clear_geobr_cache(), silent = TRUE)
# ========== 3. Dados de referência de mudança climática (ANA) ==========
# Cria um data.frame com os percentuais de anomalia de precipitação intensa
# por UF (código numérico IBGE), conforme dados da ANA
clima_ref <- data.frame(
UF = c(43, 42, 41, 35, 31, 33, 32, 50, 52, 53, 51, 29, 28, 27, 26, 25, 24, 22, 23, 21, 17, 15, 16, 13, 14, 11, 12),
perc_clima = c(18, 16, 15, 21, 16, 17, 19, 11, 17, 15, 32, 16, 6.1, 9.5, 18, 20, 29, 31, 40, 31, 21, 35.5, 43, 41.5, 36, 4.1, 2.8)
)
# ========== 4. Carregamento da malha municipal do IBGE (2022) ==========
cat("Carregando mapa de municípios (IBGE 2022)...\n")
municipios <- read_municipality(year = 2022)
# Se o resultado for uma lista, converte para sf único
if (inherits(municipios, "list")) {
municipios <- sf::st_as_sf(dplyr::bind_rows(municipios))
}
# Converte o código do município para numérico (evita problemas de tipo)
municipios <- municipios %>%
mutate(code_muni = as.numeric(code_muni))
# ========== 5. Carregamento da planilha principal de dados ==========
cat("Carregando planilha principal...\n")
planilha <- read_excel("PlanilhaBaseV3completa.xlsx")
# Remove espaços em branco dos nomes das colunas
names(planilha) <- trimws(names(planilha))
# Converte colunas-chave para numérico e filtra registros inválidos
planilha <- planilha %>%
mutate(
UF = as.numeric(UF),
code_muni = as.numeric(`Código Município Completo - 7digitos (IBGE)`)
) %>%
filter(!is.na(code_muni))
# ========== 6. Carregamento da planilha de ICM ==========
cat("Carregando planilha ICM...\n")
icm <- read_excel("Lista_Unificada_ICM.xlsx")
names(icm) <- trimws(names(icm))
# Extrai código IBGE e classificação ICM (A/B/C/D)
icm <- icm %>%
mutate(code_muni = as.numeric(`Código IBGE`)) %>%
select(code_muni, ICM)
# ========== 7. Cruzamento dos dados ==========
cat("Realizando cruzamento dos dados...\n")
dados <- planilha %>%
left_join(clima_ref, by = "UF") %>%
left_join(icm, by = "code_muni")
# ========== 8. Cálculo da vulnerabilidade institucional (Vuln_Inst) ==========
# Converte a classificação ICM (A/B/C/D) em peso numérico para o índice
# Quanto pior a capacidade municipal (D), maior o peso → maior a criticidade
cat("Calculando vulnerabilidade institucional a partir do ICM...\n")
dados <- dados %>%
mutate(Vuln_Inst = case_when(
ICM == "A" ~ 0.25,
ICM == "B" ~ 0.50,
ICM == "C" ~ 0.75,
ICM == "D" ~ 1.00,
TRUE ~ 1.00 # Sem classificação → assume pior caso (D)
))
# ========== 9. Função de normalização logarítmica ==========
# Transformação log1p seguida de normalização min-max no intervalo [0,1]
# log1p suaviza valores extremos (outliers) preservando a ordenação relativa
# A normalização min-max garante que todos os subíndices fiquem na mesma escala
normalize_log <- function(x) {
x[is.na(x)] <- 0 # Substitui NAs por zero
x_log <- log1p(pmax(x, 0)) # log(1+x) para valores >= 0
if(max(x_log, na.rm=TRUE) == min(x_log, na.rm=TRUE)) return(rep(0, length(x)))
(x_log - min(x_log, na.rm = TRUE)) / (max(x_log, na.rm = TRUE) - min(x_log, na.rm = TRUE))
}
# ========== 10. Cálculo dos subíndices tipológicos ==========
# Cada subíndice é uma soma ponderada de três componentes normalizadas:
# - Óbitos (peso 0.4): letalidade — a consequência mais grave
# - Pessoas em risco (peso 0.3): exposição populacional
# - Registros oficiais (peso 0.3): recorrência/frequência de eventos
cat("Calculando ICPMs...\n")
dados <- dados %>%
mutate(
# Subíndice para deslizamentos/movimentos de massa
ICPM_Massa = (normalize_log(`Nº de mortes por Movimento de massa`) * 0.4) +
(normalize_log(`Nº de pessoas em risco quanto a movimento de massa`) * 0.3) +
(normalize_log(`Nº de registros de Movimento de massa`) * 0.3),
# Subíndice para inundações
ICPM_Inundacao = (normalize_log(`Nº de mortes por Inundações`) * 0.4) +
(normalize_log(`Nº de pessoas em risco quanto a inundações`) * 0.3) +
(normalize_log(`Nº de registros de Inundações`) * 0.3),
# Subíndice para enxurradas
ICPM_Enxurrada = (normalize_log(`Nº de mortes por Enxurradas`) * 0.4) +
(normalize_log(`Nº de pessoas em risco quanto a enxurradas`) * 0.3) +
(normalize_log(`Nº de registros de Enxurradas`) * 0.3),
# Componente climático: apenas normalização do percentual de anomalia da ANA
ICPM_Clima = normalize_log(perc_clima)
)
# ========== 11. Cálculo do ICPM Final ==========
# Fórmula de agregação:
# Média dos três subíndices tipológicos × 0.7 +
# Vulnerabilidade Institucional × 0.2 +
# Componente Climática × 0.1
cat("Calculando ICPM_Final...\n")
dados <- dados %>%
mutate(
ICPM_Final = ((ICPM_Massa + ICPM_Inundacao + ICPM_Enxurrada) / 3 * 0.7) +
(Vuln_Inst * 0.2) +
(ICPM_Clima * 0.1)
)
# ========== 12. Junção com a malha geográfica ==========
# Incorpora os índices calculados ao objeto sf dos municípios
cat("Unindo dados processados com a malha geográfica...\n")
dados <- dados %>% mutate(code_muni = as.numeric(code_muni))
mapa_final <- municipios %>%
left_join(dados, by = "code_muni")
# ========== 13. Salvamento do resultado ==========
# Salva o objeto sf completo em formato RDS (compacto e preserva geometria)
cat("Salvando resultado em Brasil_Prioridades_Otimizado.rds...\n")
saveRDS(mapa_final, "Brasil_Prioridades_Otimizado.rds")
cat("Script concluído com sucesso!\n")Anexo II — Código de Análise de Sensibilidade
# ==============================================================================
# PROJETO: CADASTRO NACIONAL DE MUNICÍPIOS CRÍTICOS (ICPM v2.0)
# ETAPA: ANÁLISE DE SENSIBILIDADE INDIVIDUALIZADA DE NOTAS DE CORTE
# ==============================================================================
# Este script realiza a análise de sensibilidade das notas de corte para cada
# subíndice do ICPM, gerando curvas de decaimento e identificando os pontos
# de inflexão ótimos (elasticidade unitária). O resultado são gráficos PNG
# individuais que subsidiam a escolha do limiar de priorização.
# ==============================================================================
# ========== 1. Configuração do ambiente ==========
# Define o diretório de trabalho para o local onde estão os arquivos do projeto
setwd("C:/Users/cassi/OneDrive/Documents/SEDEC/CADASTRO_Municipios/R/CadastrosMunicipios_REV_0D")
# Carrega os pacotes necessários
library(sf) # Para leitura do arquivo RDS com geometria
library(dplyr) # Manipulação de dados (mutate, filter, summarise, etc.)
library(tidyr) # Organização de dados (pivot, gather, etc.)
library(ggplot2) # Criação de gráficos
# ========== 2. Verificação e carregamento do arquivo de dados ==========
# Verifica se o arquivo RDS otimizado existe; se não, interrompe o script
if (!file.exists("Brasil_Prioridades_Otimizado.rds")) {
stop("Erro: Arquivo 'Brasil_Prioridades_Otimizado.rds' não encontrado!")
}
# Carrega o objeto espacial salvo em RDS (contém geometria e atributos)
mapa <- readRDS("Brasil_Prioridades_Otimizado.rds")
# Extrai apenas a tabela de atributos (remove a geometria) para acelerar
# os cálculos — operações matemáticas não precisam da componente espacial
df_dados <- mapa %>% st_drop_geometry()
# ========== 3. Diagnóstico das colunas existentes no RDS ==========
# Exibe no console os nomes das colunas para verificação manual
cat("\n--- DIAGNÓSTICO DE COLUNAS EXISTENTES NO RDS ---\n")
print(colnames(df_dados))
cat("------------------------------------------------\n")
# ========== 4. Mapeamento e padronização dos nomes das colunas ==========
# Dicionário que mapeia os nomes padronizados (usados internamente no script)
# para os nomes possíveis que podem vir do arquivo original.
# Objetivo: garantir compatibilidade com versões anteriores do ICPM que
# utilizavam nomenclaturas diferentes (ex: IPM_Massa, ICMP_Massa, etc.)
colunas_mapeamento <- list(
ICPM_D = c('ICPM_Massa', 'IPM_Massa', 'ICMP_Massa', 'ICPM_D'),
ICPM_I = c('ICPM_Inundacao', 'IPM_Inundacao', 'ICMP_Inundacao', 'ICPM_I'),
ICPM_E = c('ICPM_Enxurrada', 'IPM_Enxurrada', 'ICMP_Enxurrada', 'ICPM_E'),
ICPM_Clima = c('ICPM_Clima', 'IPM_Clima', 'ICMP_Clima'),
ICPM = c('ICPM_Final', 'IPM_Final', 'ICMP_Final', 'ICPM')
)
# Para cada nome padronizado, procura a primeira ocorrência no data.frame
for (novo_nome in names(colunas_mapeamento)) {
nomes_possiveis <- colunas_mapeamento[[novo_nome]]
nome_existente <- intersect(nomes_possiveis, colnames(df_dados))
if (length(nome_existente) > 0) {
# Renomeia a coluna encontrada para o nome padronizado
colnames(df_dados)[colnames(df_dados) == nome_existente[1]] <- novo_nome
cat("Coluna identificada e padronizada:", nome_existente[1], "->", novo_nome, "\n")
} else {
# Fallback: se nenhuma variação for encontrada, cria a coluna com valor 0
# para evitar que o script falhe nas etapas seguintes
df_dados[[novo_nome]] <- 0
warning(paste("Coluna para", novo_nome, "não encontrada no arquivo! Criada temporariamente com valor 0."))
}
}
# ========== 5. Tratamento de valores ausentes nos índices ==========
# Lista dos índices padronizados que serão analisados
indices <- c('ICPM', 'ICPM_D', 'ICPM_I', 'ICPM_E', 'ICPM_Clima')
# Substitui qualquer valor NA por 0 para evitar problemas em operações e filtros
df_dados[indices] <- lapply(df_dados[indices], function(x) ifelse(is.na(x), 0, x))
# ========== 6. Definição das notas de corte e geração da tabela de sensibilidade ==========
# Vetor de notas de corte de 0.05 a 0.95 com passo de 0.05.
# Justificativa: passo de 0.05 (5%) fornece granularidade suficiente para
# identificar pontos de inflexão com precisão, sem sobrecarregar o processamento
# (19 pontos por indicador × 5 indicadores = 95 iterações).
notas_corte <- seq(0.05, 0.95, by = 0.05)
# Lista para armazenar data.frames parciais; bind_rows ao final unifica tudo
tabela_sensibilidade <- list()
contador <- 1
# Loop duplo: para cada indicador e cada nota de corte, calcula quantos
# municípios atendem ou superam o limiar
for (ind in indices) {
for (corte in notas_corte) {
# Número de municípios com índice >= corte (na.rm = TRUE ignora NAs)
n_muni <- sum(df_dados[[ind]] >= corte, na.rm = TRUE)
# Percentual em relação ao total de municípios (5.570)
perc_muni <- (n_muni / nrow(df_dados)) * 100
# Armazena o resultado em um data.frame
tabela_sensibilidade[[contador]] <- data.frame(
Indicador = ind,
Nota_Corte = corte,
Qtd_Municipios = n_muni,
Percentual = perc_muni,
stringsAsFactors = FALSE
)
contador <- contador + 1
}
}
# Combina todos os data.frames parciais em um único data.frame
df_sensibilidade <- bind_rows(tabela_sensibilidade)
# ========== 7. Cálculo da elasticidade e identificação do ponto de inflexão ==========
cat("\n--- GERANDO GRÁFICOS INDIVIDUAIS DE SENSIBILIDADE ---\n")
# Para cada indicador, calcula a elasticidade aproximada da quantidade de
# municípios em relação à nota de corte e encontra o ponto onde a elasticidade
# é mais próxima de -1 (ponto de inflexão ótimo).
for (ind in indices) {
# Filtra apenas os registros do indicador corrente e ordena por nota de corte
df_ind <- df_sensibilidade %>%
filter(Indicador == ind) %>%
arrange(Nota_Corte)
# Inicializa coluna de elasticidade com NA
df_ind$Elasticidade <- NA_real_
# Calcula elasticidade para pontos intermediários usando diferença central
# Fórmula: Elasticidade = (ΔN / N_médio) / (ΔC / C_médio)
# onde ΔN = N[i+1] - N[i-1] (variação no número de municípios entre
# pontos adjacentes) e ΔC analogamente para a nota de corte.
# Elasticidade = -1 significa que um aumento de 1% no corte reduz em 1% o
# número de municípios selecionados — este é o ponto de máxima sensibilidade.
for (i in 2:(nrow(df_ind) - 1)) {
dN <- df_ind$Qtd_Municipios[i + 1] - df_ind$Qtd_Municipios[i - 1]
dC <- df_ind$Nota_Corte[i + 1] - df_ind$Nota_Corte[i - 1]
N_medio <- (df_ind$Qtd_Municipios[i + 1] + df_ind$Qtd_Municipios[i - 1]) / 2
C_medio <- (df_ind$Nota_Corte[i + 1] + df_ind$Nota_Corte[i - 1]) / 2
if (N_medio > 0 && C_medio > 0) {
df_ind$Elasticidade[i] <- (dN / N_medio) / (dC / C_medio)
}
}
# Ponto de inflexão: nota de corte onde a elasticidade está mais próxima de -1.
# Este é o limiar onde a curva de sensibilidade tem maior curvatura,
# representando o melhor compromisso entre seletividade e abrangência.
ponto_inflexao <- df_ind %>%
filter(!is.na(Elasticidade)) %>%
filter(abs(Elasticidade + 1) == min(abs(Elasticidade + 1), na.rm = TRUE)) %>%
pull(Nota_Corte)
# ========== 8. Geração do gráfico individual de sensibilidade ==========
# Define um nome de exibição amigável para o título do gráfico
nome_exibicao <- case_when(
ind == "ICPM" ~ "Índice de Cadastro e Priorização Municipal (ICPM Geral)",
ind == "ICPM_D" ~ "Componente de Deslizamentos / Movimentos de Massa (ICPM_D)",
ind == "ICPM_I" ~ "Componente de Inundações (ICPM_I)",
ind == "ICPM_E" ~ "Componente de Enxurradas (ICPM_E)",
ind == "ICPM_Clima" ~ "Componente de Mudança Climática (ICPM_Clima)",
TRUE ~ ind
)
# Gráfico de linha: quantidade de municípios em função da nota de corte
p <- ggplot(df_ind, aes(x = Nota_Corte, y = Qtd_Municipios)) +
# Linha principal de decaimento (azul escuro, espessura 1.2)
geom_line(color = "#2c3e50", size = 1.2) +
# Pontos nos valores simulados (vermelho)
geom_point(color = "#e74c3c", size = 3) +
# Linha vertical tracejada no ponto de inflexão ótimo (verde)
geom_vline(xintercept = ponto_inflexao, linetype = "dashed", color = "#16a085", size = 1) +
# Anotação textual indicando o valor do corte ótimo
annotate("text", x = ponto_inflexao + 0.05, y = max(df_ind$Qtd_Municipios) * 0.8,
label = paste0("Inflexão Ótima\n(Corte: ", ponto_inflexao, ")"),
color = "#16a085", fontface = "bold", hjust = 0) +
# Eixo X com marcas a cada 0.1
scale_x_continuous(breaks = seq(0.1, 0.9, by = 0.1)) +
labs(
title = paste("Curva de Sensibilidade:", nome_exibicao),
subtitle = paste("Análise de decaimento e ponto de inflexão ótimo para", ind),
x = "Nota de Corte (Limiar Mínimo)",
y = "Quantidade de Municípios Selecionados"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 12),
plot.subtitle = element_text(size = 10)
)
# ========== 9. Salvamento do gráfico como PNG ==========
# Salva com 150 DPI (resolução suficiente para relatórios técnicos)
# Dimensões: 8×5 polegadas (proporção paisagem, boa para inclusão em A4)
nome_arquivo <- paste0("sensibilidade_corte_", tolower(ind), ".png")
ggsave(nome_arquivo, plot = p, width = 8, height = 5, dpi = 150)
cat("Gráfico salvo com sucesso:", nome_arquivo, " (Inflexão sugerida em:", ponto_inflexao, ")\n")
}
# ========== 10. Mensagem final de conclusão ==========
cat("\nAnálise de sensibilidade concluída com sucesso!\n")6.4 Anexo III - Código Painel Dashboard
# ==============================================================================
# PAINEL ESTRATÉGICO: PRIORIZAÇÃO PARA O CADASTRO NACIONAL (Versão Beta)
# ARQUIVO: app.R
# ==============================================================================
library(shiny)
library(sf)
library(leaflet)
library(DT)
library(dplyr)
library(plotly) # Garante interatividade e estética de alta fidelidade
# --- 1. DEFINIÇÃO DAS EQUAÇÕES (Strings Brutas r"(...)" evitam erro de escape) ---
txt_formula_tipologia <- r"($$ICMP_i = (Norm(log1p(\text{Óbitos})) \times 0.4) + (Norm(log1p(\text{PopRisco})) \times 0.3) + (Norm(log1p(\text{Registros})) \times 0.2)$$)"
txt_formula_final <- r"($$ICMP_{Final} = \left( \frac{\sum ICMP_i}{3} \times 0.8 \right) + (Vuln_{Inst} \times 0.1) + (ICMP_{Clima} \times 0.1)$$)"
# --- 2. CARREGAMENTO DOS DADOS ---
if (!file.exists("Brasil_Prioridades_Otimizado.rds")) {
stop("Erro: Arquivo 'Brasil_Prioridades_Otimizado.rds' não encontrado!")
}
mapa <- readRDS("Brasil_Prioridades_Otimizado.rds")
# --- 2.1 PADRONIZAÇÃO DINÂMICA DE COLUNAS (IPM_ ou ICPM_ para ICMP_) ---
colunas_mapeamento <- list(
ICMP_Massa = c('ICPM_Massa', 'IPM_Massa'),
ICMP_Inundacao = c('ICPM_Inundacao', 'IPM_Inundacao'),
ICMP_Enxurrada = c('ICPM_Enxurrada', 'IPM_Enxurrada'),
ICMP_Clima = c('ICPM_Clima', 'IPM_Clima'),
ICMP_Final = c('ICPM_Final', 'IPM_Final', 'IPM_Final')
)
for (novo_nome in names(colunas_mapeamento)) {
nomes_possiveis <- colunas_mapeamento[[novo_nome]]
nome_existente <- intersect(nomes_possiveis, colnames(mapa))
if (length(nome_existente) > 0) {
colnames(mapa)[colnames(mapa) == nome_existente[1]] <- novo_nome
}
}
# Garante que Vuln_Inst exista e substitui NAs por 0
if (!"Vuln_Inst" %in% colnames(mapa)) {
mapa$Vuln_Inst <- 0
}
cols_icmp <- c('ICMP_Massa', 'ICMP_Inundacao', 'ICMP_Enxurrada', 'ICMP_Clima', 'ICMP_Final', 'Vuln_Inst')
mapa[cols_icmp] <- lapply(mapa[cols_icmp], function(x) ifelse(is.na(x), 0, x))
# --- 3. INTERFACE DO USUÁRIO (UI) ---
ui <- fluidPage(
withMathJax(), # Habilita renderização de fórmulas LaTeX
titlePanel(
div(style = "display: flex; align-items: center;",
span("Priorização: Cadastro Nacional de Municípios Críticos (ICMP)", style = "font-weight: bold;"),
span("Versão Beta (Testes)",
style = "margin-left: 20px; font-size: 14px; background-color: #f39c12; color: white; padding: 4px 12px; border-radius: 12px;")
)
),
sidebarLayout(
sidebarPanel(
# Logotipo e Créditos
div(style = "text-align: center; margin-bottom: 25px;",
img(src = "Ministerio.png", width = "100%", alt = "Logo Ministério"),
br(), br(),
p(strong("Desenvolvido por:")),
p("CGNAT / DPM / SEDEC / MIDR", style = "font-size: 12px; color: #666;")
),
hr(),
# Controles
selectInput("camada", "1. Escolha a Tipologia (Mapa/Tabela):",
choices = c("Consolidado (ICMP Final)" = "ICMP_Final",
"Massa" = "ICMP_Massa",
"Inundações" = "ICMP_Inundacao",
"Enxurradas" = "ICMP_Enxurrada",
"Clima (ANA)" = "ICMP_Clima")),
sliderInput("corte", "2. Nota Mínima de Prioridade:", min = 0, max = 1, value = 0.3, step = 0.05),
selectInput("uf", "3. Filtrar UF:", choices = c("Todos", sort(unique(mapa$abbrev_state)))),
# Controle para limitar o número de municípios no Treemap
sliderInput("top_n", "4. Limite de Municípios (Treemap):", min = 10, max = 500, value = 100, step = 10),
hr(),
wellPanel(style = "background-color: #fcfcfc; padding: 10px;",
h5(strong("Nota Metodológica")),
p("Utiliza normalização logarítmica (log1p) para garantir sensibilidade técnica.", style = "font-size: 11px;")
)
),
mainPanel(
tabsetPanel(
tabPanel("Mapa de Prioridades", leafletOutput("mapa", height = "750px")),
tabPanel("Visualização em Treemap",
br(),
h4("Distribuição Proporcional das Prioridades (Treemap Interativo - Estilo OEC)"),
p("Selecione a aba correspondente para visualizar a distribuição de cada indicador. O tamanho representa o valor do indicador selecionado."),
tabsetPanel(
id = "treemap_tabs",
tabPanel("ICMP Final", plotlyOutput("treemap_final", height = "550px")),
tabPanel("ICMP Massa", plotlyOutput("treemap_massa", height = "550px")),
tabPanel("ICMP Inundações", plotlyOutput("treemap_inundacao", height = "550px")),
tabPanel("ICMP Enxurradas", plotlyOutput("treemap_enxurrada", height = "550px")),
tabPanel("ICMP Clima", plotlyOutput("treemap_clima", height = "550px"))
)
),
tabPanel("Análise de Sensibilidade de Corte",
br(),
h4("Curvas de Sensibilidade e Pontos de Inflexão"),
p("Avalie o impacto da nota de corte na quantidade de municípios selecionados. A linha tracejada cinza indica a nota sugerida matematicamente e a linha vermelha indica a nota selecionada por você."),
tabsetPanel(
id = "sensibilidade_tabs",
tabPanel("ICMP Final",
br(),
plotlyOutput("sens_plot_final", height = "400px"),
br(),
fluidRow(
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_final_dinamico"))),
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_final_sugerido")))
),
h5(strong("Municípios Selecionados (ICMP Final)")),
DTOutput("tabela_sens_final")),
tabPanel("ICMP Massa",
br(),
plotlyOutput("sens_plot_massa", height = "400px"),
br(),
fluidRow(
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_massa_dinamico"))),
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_massa_sugerido")))
),
h5(strong("Municípios Selecionados (ICMP Massa)")),
DTOutput("tabela_sens_massa")),
tabPanel("ICMP Inundações",
br(),
plotlyOutput("sens_plot_inundacao", height = "400px"),
br(),
fluidRow(
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_inundacao_dinamico"))),
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_inundacao_sugerido")))
),
h5(strong("Municípios Selecionados (ICMP Inundações)")),
DTOutput("tabela_sens_inundacao")),
tabPanel("ICMP Enxurradas",
br(),
plotlyOutput("sens_plot_enxurrada", height = "400px"),
br(),
fluidRow(
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_enxurrada_dinamico"))),
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_enxurrada_sugerido")))
),
h5(strong("Municípios Selecionados (ICMP Enxurradas)")),
DTOutput("tabela_sens_enxurrada")),
tabPanel("ICMP Clima",
br(),
plotlyOutput("sens_plot_clima", height = "400px"),
br(),
fluidRow(
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_clima_dinamico"))),
column(6, wellPanel(style = "background-color: #fcfcfc;", uiOutput("info_sens_clima_sugerido")))
),
h5(strong("Municípios Selecionados (ICMP Clima)")),
DTOutput("tabela_sens_clima"))
)
),
tabPanel("Ranking e Metodologia",
br(),
wellPanel(
h4("Fundamentação Técnica (ICMP v2.0)"),
p("O Índice integra riscos históricos, governança e cenários climáticos:"),
uiOutput("formula1"),
uiOutput("formula2")
),
hr(),
h4("Municípios Selecionados"),
p("Os botões baixam a lista COMPLETA dos filtrados (ignora paginação)."),
DTOutput("tabela"),
hr(),
h5("Texto para RMarkdown (Cópia):"),
verbatimTextOutput("rmd_text")
)
)
)
)
)
# --- 4. SERVIDOR (SERVER) ---
server <- function(input, output, session) {
# Renderização das fórmulas via servidor para evitar erros de caractere
output$formula1 <- renderUI({ withMathJax(p(HTML(txt_formula_tipologia))) })
output$formula2 <- renderUI({ withMathJax(p(HTML(txt_formula_final))) })
# Lógica de Filtro Reativo
dados_filt <- reactive({
req(input$camada, input$corte)
d <- mapa
if (input$uf != "Todos") d <- d %>% filter(abbrev_state == input$uf)
d <- d %>%
mutate(valor_mapa = ifelse(get(input$camada) >= input$corte, get(input$camada), NA))
return(d)
})
# Renderização do Mapa Leaflet
output$mapa <- renderLeaflet({
res <- dados_filt()
pal <- colorNumeric(palette = "RdYlBu", domain = mapa[[input$camada]], reverse = TRUE, na.color = "#FFFFFF")
leaflet(res) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(fillColor = ~pal(valor_mapa), weight = 0.3, opacity = 1, color = "#CCC", fillOpacity = 0.8,
label = ~paste0(name_muni, " | Score: ", round(get(input$camada), 3))) %>%
addLegend(pal = pal, values = mapa[[input$camada]], title = "Prioridade", position = "bottomright")
})
# Função auxiliar para renderizar Treemaps de forma padronizada
render_custom_treemap <- function(coluna_indicador) {
req(input$top_n)
df_treemap <- mapa
if (input$uf != "Todos") {
df_treemap <- df_treemap %>% filter(abbrev_state == input$uf)
}
df_treemap <- df_treemap %>%
st_drop_geometry() %>%
filter(get(coluna_indicador) > 0) %>%
arrange(desc(get(coluna_indicador))) %>%
slice(1:input$top_n)
if (nrow(df_treemap) == 0) return(NULL)
hover_text <- paste0(
"<b>Município:</b> ", df_treemap$name_muni, " (", df_treemap$abbrev_state, ")<br>",
"<b>ICMP Final:</b> ", round(df_treemap$ICMP_Final, 3), "<br>",
"<b>ICMP Massa:</b> ", round(df_treemap$ICMP_Massa, 3), "<br>",
"<b>ICMP Inundação:</b> ", round(df_treemap$ICMP_Inundacao, 3), "<br>",
"<b>ICMP Enxurrada:</b> ", round(df_treemap$ICMP_Enxurrada, 3), "<br>",
"<b>ICMP Clima:</b> ", round(df_treemap$ICMP_Clima, 3), "<br>",
"<b>Vulnerabilidade (ICM):</b> ", round(df_treemap$Vuln_Inst, 3)
)
tile_labels <- paste0(
"<b>", df_treemap$name_muni, " - ", df_treemap$abbrev_state, "</b><br>",
"<span style='font-size:10px; font-weight:normal; color:#1a1a1a;'>", round(df_treemap[[coluna_indicador]], 3), "</span>"
)
plot_ly(
data = df_treemap,
type = "treemap",
labels = ~tile_labels,
parents = ~rep("", nrow(df_treemap)),
values = df_treemap[[coluna_indicador]],
text = hover_text,
hoverinfo = "text",
textinfo = "label",
textfont = list(size = 12, color = "#1a1a1a", family = "Arial"),
marker = list(
colors = df_treemap[[coluna_indicador]],
colorscale = list(
list(0, "#4575B4"),
list(0.3, "#ABD9E9"),
list(0.6, "#FDAE61"),
list(1, "#D73027")
),
line = list(color = "#ffffff", width = 0.5)
)
) %>%
layout(
margin = list(l = 5, r = 5, b = 5, t = 5),
hoverlabel = list(
bgcolor = "#ffffff",
bordercolor = "#cccccc",
font = list(size = 13, color = "#1a1a1a")
)
) %>%
config(displayModeBar = FALSE)
}
output$treemap_final <- renderPlotly({ render_custom_treemap("ICMP_Final") })
output$treemap_massa <- renderPlotly({ render_custom_treemap("ICMP_Massa") })
output$treemap_inundacao <- renderPlotly({ render_custom_treemap("ICMP_Inundacao") })
output$treemap_enxurrada <- renderPlotly({ render_custom_treemap("ICMP_Enxurrada") })
output$treemap_clima <- renderPlotly({ render_custom_treemap("ICMP_Clima") })
# --- LÓGICA DA NOVA ABA DE ANÁLISE DE SENSIBILIDADE ---
# Função reativa para calcular a curva de sensibilidade de forma dinâmica (IDÊNTICA AO SCRIPT R)
calcular_curva_sensibilidade <- function(coluna_indicador) {
df_sens <- mapa %>% st_drop_geometry()
if (input$uf != "Todos") {
df_sens <- df_sens %>% filter(abbrev_state == input$uf)
}
cortes <- seq(0.05, 0.95, by = 0.05)
n_muni <- sapply(cortes, function(c) sum(df_sens[[coluna_indicador]] >= c, na.rm = TRUE))
df_res <- data.frame(
corte = cortes,
n_municipios = n_muni,
stringsAsFactors = FALSE
)
# Calcular elasticidade local usando exatamente a mesma fórmula de diferença central discreta do script R
df_res$elasticidade <- NA_real_
for (i in 2:(nrow(df_res) - 1)) {
dN <- df_res$n_municipios[i + 1] - df_res$n_municipios[i - 1]
dC <- df_res$corte[i + 1] - df_res$corte[i - 1]
N_medio <- (df_res$n_municipios[i + 1] + df_res$n_municipios[i - 1]) / 2
C_medio <- (df_res$corte[i + 1] + df_res$corte[i - 1]) / 2
if (N_medio > 0 && dC > 0) {
df_res$elasticidade[i] <- (dN / N_medio) / (dC / C_medio)
}
}
return(df_res)
}
# Função para identificar o ponto de inflexão matemática (elasticidade mais próxima de -1)
obter_ponto_inflexao <- function(df_curva) {
df_valido <- df_curva %>% filter(!is.na(elasticidade))
if (nrow(df_valido) == 0) return(0.30)
idx <- which.min(abs(df_valido$elasticidade + 1))
return(df_valido$corte[idx])
}
# Função auxiliar para renderizar os gráficos de sensibilidade com Plotly
render_sens_plot <- function(coluna_indicador) {
df_curva <- calcular_curva_sensibilidade(coluna_indicador)
nota_sugerida <- obter_ponto_inflexao(df_curva)
nota_usuario <- input$corte # Captura a nota selecionada no slider lateral
plot_ly(df_curva, x = ~corte, y = ~n_municipios, type = 'scatter', mode = 'lines+markers',
line = list(color = '#4575B4', width = 3),
marker = list(color = '#4575B4', size = 6),
name = "Municípios Selecionados") %>%
# Linha tracejada cinza: Nota Sugerida (Fixa)
add_segments(x = nota_sugerida, xend = nota_sugerida,
y = 0, yend = max(df_curva$n_municipios),
line = list(color = '#16a085', dash = 'dash', width = 2),
name = paste("Nota Sugerida (", round(nota_sugerida, 2), ")")) %>%
# Linha tracejada vermelha: Nota do Usuário (Dinâmica)
add_segments(x = nota_usuario, xend = nota_usuario,
y = 0, yend = max(df_curva$n_municipios),
line = list(color = '#D73027', dash = 'dash', width = 2),
name = paste("Nota Selecionada (", round(nota_usuario, 2), ")")) %>%
layout(
xaxis = list(title = "Nota de Corte (Limiar Mínimo)", tickvals = seq(0.05, 0.95, by = 0.05)),
yaxis = list(title = "Quantidade de Municípios"),
margin = list(l = 40, r = 40, b = 40, t = 40),
legend = list(orientation = 'h', y = -0.2)
) %>%
config(displayModeBar = FALSE)
}
# Renderização dos gráficos de sensibilidade
output$sens_plot_final <- renderPlotly({ render_sens_plot("ICMP_Final") })
output$sens_plot_massa <- renderPlotly({ render_sens_plot("ICMP_Massa") })
output$sens_plot_inundacao <- renderPlotly({ render_sens_plot("ICMP_Inundacao") })
output$sens_plot_enxurrada <- renderPlotly({ render_sens_plot("ICMP_Enxurrada") })
output$sens_plot_clima <- renderPlotly({ render_sens_plot("ICMP_Clima") })
# Painel Informativo 1: Estatísticas Dinâmicas (Nota Selecionada pelo Usuário)
render_info_sens_dinamico <- function(coluna_indicador) {
df_curva <- calcular_curva_sensibilidade(coluna_indicador)
nota_usuario <- input$corte
# Encontra o valor mais próximo na curva simulada
idx_user <- which.min(abs(df_curva$corte - nota_usuario))
n_muni_user <- df_curva$n_municipios[idx_user]
elasticidade_user <- df_curva$elasticidade[idx_user]
perc_user <- (n_muni_user / nrow(mapa)) * 100
HTML(paste0(
"<h5><b>Estatísticas Dinâmicas (Sua Seleção)</b></h5>",
"<ul>",
"<li><b>Nota de Corte Selecionada:</b> <span style='color:#D73027; font-weight:bold;'>", round(nota_usuario, 2), "</span></li>",
"<li><b>Municípios Selecionados:</b> ", n_muni_user, " (", round(perc_user, 1), "% do Brasil)</li>",
"<li><b>Elasticidade Local neste Ponto:</b> ", ifelse(is.na(elasticidade_user), "N/A", round(elasticidade_user, 2)), "</li>",
"</ul>",
"<p style='font-size:11px; color:#555;'>Arraste o slider lateral para atualizar estes valores e a tabela abaixo em tempo real.</p>"
))
}
# Painel Informativo 2: Estatísticas Fixas (Nota Sugerida pelo Algoritmo)
render_info_sens_sugerido <- function(coluna_indicador) {
df_curva <- calcular_curva_sensibilidade(coluna_indicador)
nota_sugerida <- obter_ponto_inflexao(df_curva)
n_muni_sugerido <- df_curva$n_municipios[df_curva$corte == nota_sugerida]
elasticidade_sugerida <- df_curva$elasticidade[df_curva$corte == nota_sugerida]
perc_sugerido <- (n_muni_sugerido / nrow(mapa)) * 100
HTML(paste0(
"<h5><b>Referência Técnica (Nota Sugerida)</b></h5>",
"<ul>",
"<li><b>Nota de Corte Sugerida (Inflexão):</b> <span style='color:#16a085; font-weight:bold;'>", round(nota_sugerida, 2), "</span></li>",
"<li><b>Municípios Selecionados no Limiar:</b> ", n_muni_sugerido, " (", round(perc_sugerido, 1), "% do Brasil)</li>",
"<li><b>Elasticidade Local no Ponto:</b> ", round(elasticidade_sugerida, 2), "</li>",
"</ul>",
"<p style='font-size:11px; color:#555;'><b>Justificativa:</b> Ponto de inflexão matemática onde a taxa de variação na seleção é máxima, equilibrando abrangência e seletividade.</p>"
))
}
# Renderização dos painéis informativos dinâmicos e sugeridos
output$info_sens_final_dinamico <- renderUI({ render_info_sens_dinamico("ICMP_Final") })
output$info_sens_final_sugerido <- renderUI({ render_info_sens_sugerido("ICMP_Final") })
output$info_sens_massa_dinamico <- renderUI({ render_info_sens_dinamico("ICMP_Massa") })
output$info_sens_massa_sugerido <- renderUI({ render_info_sens_sugerido("ICMP_Massa") })
output$info_sens_inundacao_dinamico <- renderUI({ render_info_sens_dinamico("ICMP_Inundacao") })
output$info_sens_inundacao_sugerido <- renderUI({ render_info_sens_sugerido("ICMP_Inundacao") })
output$info_sens_enxurrada_dinamico <- renderUI({ render_info_sens_dinamico("ICMP_Enxurrada") })
output$info_sens_enxurrada_sugerido <- renderUI({ render_info_sens_sugerido("ICMP_Enxurrada") })
output$info_sens_clima_dinamico <- renderUI({ render_info_sens_dinamico("ICMP_Clima") })
output$info_sens_clima_sugerido <- renderUI({ render_info_sens_sugerido("ICMP_Clima") })
# Função auxiliar para renderizar as tabelas de sensibilidade com botões de download
render_tabela_sens <- function(coluna_indicador) {
df_tab <- mapa %>%
st_drop_geometry() %>%
filter(get(coluna_indicador) >= input$corte) %>%
select(name_muni, abbrev_state, all_of(coluna_indicador)) %>%
arrange(desc(get(coluna_indicador)))
datatable(df_tab, extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = list(
list(extend = 'excel', text = 'Exportar Excel (Filtrados)', exportOptions = list(modifier = list(page = 'all'))),
list(extend = 'pdf', text = 'Exportar PDF (Filtrados)', exportOptions = list(modifier = list(page = 'all')))
),
pageLength = 10,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.20/i18n/Portuguese-Brasil.json')
), rownames = FALSE)
}
# Renderização das tabelas de sensibilidade
output$tabela_sens_final <- renderDT({ render_tabela_sens("ICMP_Final") })
output$tabela_sens_massa <- renderDT({ render_tabela_sens("ICMP_Massa") })
output$tabela_sens_inundacao <- renderDT({ render_tabela_sens("ICMP_Inundacao") })
output$tabela_sens_enxurrada <- renderDT({ render_tabela_sens("ICMP_Enxurrada") })
output$tabela_sens_clima <- renderDT({ render_tabela_sens("ICMP_Clima") })
# --- FIM DA LÓGICA DE SENSIBILIDADE ---
# Renderização da Tabela de Dados (Aba Original)
output$tabela <- renderDT({
res_tab <- dados_filt() %>%
st_drop_geometry() %>%
filter(!is.na(valor_mapa)) %>%
select(name_muni, abbrev_state, ICMP_Final, ICMP_Massa, ICMP_Inundacao, ICMP_Enxurrada, ICMP_Clima) %>%
arrange(desc(ICMP_Final))
datatable(res_tab, extensions = 'Buttons', options = list(
dom = 'Bfrtip',
buttons = list(
list(extend = 'excel', text = 'Exportar Excel (Tudo)', exportOptions = list(modifier = list(page = 'all'))),
list(extend = 'pdf', text = 'Exportar PDF (Tudo)', exportOptions = list(modifier = list(page = 'all')))
),
pageLength = 20,
language = list(url = '//cdn.datatables.net/plug-ins/1.10.20/i18n/Portuguese-Brasil.json')
), rownames = FALSE)
})
output$rmd_text <- renderText({
paste0("### Metodologia ICMP v2.0\n",
"$$ICMP_{Final} = (Media(Riscos) * 0.8) + (Vuln * 0.1) + (Clima * 0.1)$$\n",
"Normalização: log1p aplicada.")
})
}
shinyApp(ui, server)