PROURB

Fundamentos Geoestatísticos

1. Densidade Amostral e Qualidade Esperada

Referência principal

Aumond et al. (2018) — Kriging-based spatial interpolation from measurements for sound level mapping in urban areas. JASA 143(5), pp.2847-2857.

Relação densidade × desempenho (Aumond, Fig. 9)

Densidade (pts/km²)r (Pearson)RMSE (dB)Contexto
~200>0.95<1.0Referência densa
~50>0.80<2.5Alvo para mapas de alta qualidade
~150.50–0.802.5–3.5Estações fixas em bairro
<5<0.50>3.5Redes esparsas urbanas

Nosso caso: Belo Horizonte

  • Área: 331 km²
  • Medições: 7.450 no total, distribuídas em 10 cenários temporais (670–788 por cenário)
  • Coleta: controlada e dedicada, com equipamento Classe 1 e dataloggers segundo a segundo
  • Densidade efetiva por cenário: ~2.2 pts/km²
  • RMSE obtido (RK Híbrido, trend-only): 5.76–8.02 dB
  • RMSE obtido (IDW baseline): 6.64–8.96 dB

Conclusão: O RMSE de 5.7–7.5 dB é coerente com a densidade amostral de 2.2 pts/km² em escala municipal. Aumond et al. demonstram que mesmo em áreas pequenas (2.8 km²), densidades abaixo de 5 pts/km² produzem RMSE > 3.5 dB. Em 331 km² com variabilidade urbana completa, RMSE entre 5–8 dB é o esperado.

Referências complementares:

  • Diretiva EU 2002/49/EC — tolerância de ±4.6 dB para modelos CNOSSOS-EU
  • Can, Dekoninck & Botteldooren (2014) — RMSE 2–4 dB em escala de bairro
  • Harman, Koseoglu & Yigit (2016) — comparação IDW/Kriging em Isparta, Turquia

2. Nugget Dominante — Interpretação

Observado no projeto

  • Nugget ratio (variograma global): 0.79 (nugget=36.3, sill=9.8, total=46.1 dB²)
  • Nugget ratio RK resíduos: 0.83–0.91

Interpretação segundo a literatura

Aumond et al. obtiveram nugget = 0 com ~1500 pts/km² (referência densa). O nugget representa variabilidade não explicada pela estrutura espacial:

  1. Variabilidade micro-escala — diferenças de ruído entre pontos muito próximos (fachadas, recuos, vegetação) que a amostragem esparsa não resolve
  2. Ruído de medição — incerteza instrumental, eventos sonoros transitórios
  3. Subamostragem — com 2.2 pts/km², o variograma empírico não consegue estimar a semivariância em curtas distâncias

Nugget dominante não é defeito do modelo — é consequência direta da baixa densidade amostral.

Por que o nugget ratio dos resíduos RK é ainda maior (0.83–0.91)?

A regressão (trend) remove a variabilidade explicável pelas covariáveis. O que sobra (resíduos) é majoritariamente ruído aleatório sem estrutura espacial. Isso é esperado quando a tendência já captura a maior parte do sinal.

Implicação prática: Quando nugget_ratio > 0.8, o kriging dos resíduos não melhora a predição. O modelo opera em regime trend-only: a predição é inteiramente determinada pela regressão sobre covariáveis, sem componente geoestatística nos resíduos.

Regime trend-only: evidência empírica em BH

Nos 10 cenários do projeto, o compare_models (validação cruzada LOO interna do variograma) rejeitou todos os modelos de variograma em todos os cenários — nenhum modelo (exponencial, esférico, gaussiano) produziu erros padronizados com variância próxima de 1.0 e média próxima de 0. O fallback exponencial resulta consistentemente em nugget_ratio ≥ 0.80, ativando o regime trend-only.

Isso significa que, com a densidade amostral atual (~2.2 pts/km²), o Regression Kriging opera de fato como uma Regressão Espacial pura. O nome “Regression Kriging” descreve o framework metodológico (regressão + krigagem dos resíduos), mas na prática a krigagem dos resíduos contribui com zero — é tentar força-la degrada catastroficamente os resultados (cenário 8: RMSE explodiu de 6.0 para 25.8 dB antes da correção).

O ganho do RK sobre o IDW vem inteiramente da regressão com covariáveis:

CenárioIDW (RMSE)RK trend-only (RMSE)Redução
17.186.1114.9%
26.875.9513.4%
37.376.3513.8%
47.816.7313.8%
58.968.0210.5%
66.645.7613.3%
76.776.0910.0%
86.896.0012.9%
97.616.6412.7%
107.866.9711.3%

Redução média: 12.7% no RMSE, com R² passando de ~0.01 (IDW) para ~0.25 (RK).

Consequência para a dissertação: O modelo é honestamente descrito como uma regressão espacial com covariáveis urbanas, dentro do framework de Regression Kriging. A componente geoestatística (krigagem dos resíduos) está implementada e disponível para ser ativada quando a densidade amostral aumentar (estimativa: >10 pts/km², conforme Aumond et al.). Com os dados atuais, a contribuição é exclusivamente das covariáveis — o que reforça a importância da seleção de features (seção 5).

3. Range do Variograma

Observado vs. literatura

EstudoRange práticoMaxlagÁrea
Aumond et al. (2018)250–700m1000m2.8 km²
Can et al. (2014)~300m~500m4 ruas
Nosso projeto (auto-fit)3000–8500m~20000m331 km²

Diagnóstico

Nossos ranges elevados são provavelmente artefato de dois fatores:

  1. Maxlag muito grande — o variograma empírico é calculado até o extent completo da cidade (~20 km), incluindo pares de pontos a distâncias onde a semivariância já estabilizou
  2. Baixa densidade — poucos pares de pontos em curtas distâncias tornam os primeiros lags do variograma instáveis

Recomendação

Limitar maxlag do variograma empírico para ~2000m (≈ distância média entre medições). Isso deve revelar melhor a estrutura espacial de curto alcance e produzir ranges mais realistas (~500–2000m).

Fundamentação: Cressie (2015) recomenda maxlag ≤ metade da extensão máxima da área de estudo. Para dados urbanos de ruído, Aumond et al. usam maxlag ≈ 1000m independente da extensão, focando na estrutura local.

4. Modelo de Variograma: Exponencial

Justificativa

  • Aumond et al. usam Matérn com κ=0.5, que é matematicamente equivalente ao modelo exponencial
  • O modelo exponencial é o mais robusto para dados ambientais com transições suaves (Webster & Oliver, 2007)
  • Nosso auto-fit testa exponential, spherical e gaussian — exponential é consistentemente selecionado como fallback

O uso do modelo exponencial é consistente com a literatura de mapeamento acústico.

5. Tendência (Trend) como Componente Principal

Evidência no artigo

  • Universal Kriging (UK) com 4 distâncias a categorias de vias reduz o sill pela metade (22.4 → 11.2 dB²)
  • A tendência melhora mais o resultado do que trocar distância euclidiana por distância na rede viária
  • Conclusão dos autores: “efforts should be focused on the trend definition”

Nosso modelo RK Híbrido

Usa 14 covariáveis (distâncias viárias, transporte público, morfologia urbana, amenidades por perfil de atividade):

  • Melhoria RK vs IDW: 10–15% redução no RMSE (média 12.7%)
  • Sinal consistente: covariáveis selecionadas mantêm sinal estável entre 10 cenários

Categorias de vias (Aumond, Table 1 vs. nosso modelo)

Aumond — 4 categorias OSMNossas covariáveis equivalentes
Cat. 1: Primary, Trunkosm_dist_motorway, osm_dist_trunk
Cat. 2: Secondary, Tertiarydist_arterial, osm_dist_via_alto_impacto
Cat. 3: Residential, Roadinfluencia_via (ponderada)
Cat. 4: Pedestrian, Footway(implícito na ausência de vias)

Nosso modelo é uma extensão direta da abordagem de Aumond et al., adicionando covariáveis de transporte público, morfologia urbana e amenidades que capturam variabilidade não explicada apenas pela rede viária.

Amenidades por perfil de atividade (abordagem original)

A covariável genérica osm_n_amenidades_250m (contagem total de amenidades num raio de 250m) foi substituída por duas covariáveis com perfil temporal distinto:

CovariávelTipos OSM incluídosPerfil temporal
osm_n_entretenimento_250mbar, pub, nightclub, restaurant, biergarten, music_venue, events_venue, love_hotel, cinema, theatreNoturno — sex/sáb após 20h
osm_n_comercio_250mfast_food, cafe, bank, pharmacy, post_office, marketplace, car_wash, atmDiurno — 14h às 20h

Justificativa: Os 10 cenários do projeto cobrem faixas horárias distintas em dois perfis de dia (ter/qua e sex/sáb). A contagem genérica não distingue áreas com concentração de bares (ruidosas à noite) de áreas com concentração de comércio (ruidosas de dia). A separação permite que o modelo RK atribua coeficientes diferentes por cenário.

CenáriosPeríodoCovariável dominante esperada
1-2, 614h-20hosm_n_comercio_250m
7sex/sáb 17h-20hAmbas (transição)
8-10sex/sáb 20h-02hosm_n_entretenimento_250m
3-5ter/qua 20h-02hAmbas fracas (pouca atividade)

Critérios de classificação:

  • Postos de combustível (fuel) excluídos do comércio — o ruído associado é veicular, já capturado pelas covariáveis viárias
  • osm_dist_hospital mantida como covariável separada de distância — hospitais são zonas de silêncio por legislação (Lei 9.505/08), não fontes de ruído

6. Distância Euclidiana vs. Rede Viária

Achado de Aumond et al.

  • Distância pela rede viária (ROAD) melhora OK, mas não melhora UK/RK
  • Quando o trend já inclui distâncias a categorias de vias, usar ROAD é redundante

Implicação para o projeto

Nosso RK já incorpora distâncias viárias como covariáveis na regressão. Portanto, distância euclidiana é suficiente para o variograma dos resíduos — a informação viária já está no trend.

7. Validação: LOO Cross-Validation

Abordagem do artigo

  • Bootstrap com 1000 replicações de subconjuntos aleatórios
  • Comparação contra mapa de referência denso (4360 pontos)

Nossa abordagem

  • LOO Cross-Validation (Leave-One-Out): remove 1 ponto, prediz com os N-1 restantes, repete N vezes
  • Métricas: RMSE, MAE, R², ME (bias), erros padronizados

Limitações conhecidas

  • LOO-CV é pessimista com poucos dados (cada fold remove ~0.13% da informação)
  • R² negativo em LOO-CV indica que a predição é pior que a média — esperado com nugget dominante em OK
  • O bias próximo de zero (~0.0 dB) indica que o modelo não tem viés sistemático, mesmo com RMSE alto

8. R² Negativo — Interpretação

Observado

  • IDW (baseline): R² = -0.013 a 0.050 (varia por cenário)
  • RK Híbrido (trend-only): R² = 0.19 a 0.29

O que significa

R² em LOO-CV compara o modelo contra a média global. R² < 0 significa que predizer a média seria melhor que o interpolador para aquele subconjunto.

Isso é esperado para IDW em escala municipal — sem covariáveis, o IDW com ponderação inversa converge para a média local, que pode ser pior que a média global em certas configurações espaciais.

RK melhora o R² consistentemente porque a tendência (regressão) captura variância que o IDW não consegue.

9. Síntese: Justificativa do Modelo

O modelo é adequado para o contexto?

Sim, com as seguintes ressalvas:

  1. A limitação principal é a densidade amostral (~2.2 pts/km² por cenário), não a metodologia. O RMSE obtido é coerente com o esperado pela literatura para essa densidade. Note-se que o projeto totaliza 7.450 medições controladas com equipamento Classe 1, mas distribuídas em 10 cenários temporais.
  2. O RK Híbrido é a melhor escolha disponível — a tendência com covariáveis urbanas é o componente que mais contribui para a qualidade. Isso está alinhado com a Conclusão de Aumond et al.
  3. O viés próximo de zero (ME ≈ 0.0 dB em todos os cenários) indica que o modelo é não-enviesado, mesmo com RMSE moderado. Isso é a métrica mais importante para zoneamento.
  4. A melhoria RK vs IDW (8–15% no RMSE) demonstra que as covariáveis capturam informação real, não ruído.
  5. Evolução em relação ao estudo anterior (Martins & Murta, 2012): os mesmos autores avançaram de medições aproveitadas de ações fiscais (ambiente interno, ruído de fundo) para coleta controlada em campo aberto (ruído total Leq), com metodologia de cenários e equipamento Classe 1.

O que não pode ser melhorado sem mais dados

  • O RMSE não vai abaixo de ~5 dB com 2.2 pts/km² — isso é limite teórico
  • O nugget ratio não vai diminuir significativamente — é reflexo da amostragem
  • O R² não vai acima de ~0.30 em escala municipal — variância total muito alta

O que pode ser melhorado com o modelo atual

  • Ajustar maxlag do variograma para ~2000m (pode melhorar marginalmente)
  • Testar modelo Matérn com κ=0.5 explicitamente (equivalente ao exponencial, mas com ajuste mais flexível)
  • Incorporar distância pela rede viária para o variograma OK (melhoria esperada modesta)

10. Coleta de Dados: Monitoramento do Ambiente Sonoro Urbano

Descrição metodológica

O Monitoramento do Ambiente Sonoro Urbano de Belo Horizonte foi realizado com base em medições de campo, seguindo critérios técnicos e normas nacionais. As medições foram feitas em 3 (três) períodos ao longo de 3 (três) anos: de julho a novembro de 2023, março a abril de 2024 e setembro de 2024 a fevereiro de 2025. Em cada um dos pontos, a medição teve duração de 5 (cinco) minutos, tempo considerado suficiente para um diagnóstico preliminar da paisagem sonora da cidade.

Equipamento e normas

Os dados foram coletados com sonômetros da marca Svantek, modelo SV 971A, equipamentos de classe 1 conforme as normas internacionais, devidamente calibrados em laboratório pela última vez em março de 2023. As medições seguiram os critérios estabelecidos pela ABNT NBR 10.151 (versão atualizada de 2020), que dispõe sobre medição e avaliação de níveis de pressão sonora em áreas habitadas. Considerando a diversidade dos cenários urbanos — de vias alargadas a becos estreitos — buscou-se respeitar a distância mínima de 2 metros de paredes, muros, veículos ou outros objetos que pudessem refletir as ondas sonoras.

Faixas horárias e dias de medição

As medições foram realizadas em 5 faixas de horário:

PeríodoFaixa horáriaObservação
Diurno14h às 16hEstudo do “horário de pico”
Diurno17h às 19h
Vespertino20h às 22h
Noturno 122h às 00hConforme Lei Municipal nº 9.505/2008
Noturno 20h às 2h

Os dias de medição definidos foram terça-feira e quarta-feira (representando dias úteis típicos) e sexta-feira e sábado (representando dias de fim de semana). A escolha dessas combinações se deve ao fato de que, principalmente no período noturno, os padrões de tráfego nesses pares de dias são similares, favorecendo uma leitura mais consistente do ambiente sonoro.

Malha de pontos de medição

Os pontos de medição foram definidos por meio de uma malha quadricular sobre o mapa da cidade, com quadrados de aproximadamente 400×400 metros — e de 200×200 metros na região Centro-Sul, no perímetro dentro da Avenida do Contorno — posicionados nos vértices para cobrir uniformemente o território urbano.

De acordo com o cenário apresentado, tornou-se necessário adaptar a unidade-dia dos pontos de medição dessa malha, para uma análise alternada da convergência desses pontos, agrupadamente, distribuídos entre os dias típicos (terça e quarta-feira) e os de fim de semana (sexta e sábado).

Alguns pontos também precisaram ser realocados — por exemplo, quando coincidiam com pontos de ônibus, semáforos ou cruzamentos, locais onde o ruído é influenciado por frenagens, acelerações ou concentração de veículos. Nesses casos, os pontos foram deslocados apenas por alguns metros.

Contagem de veículos

A partir do terceiro período de monitoramento (setembro de 2024 a fevereiro de 2025), incluiu-se a contagem de veículos que passavam por cada local durante os 5 minutos de medição, com foco nos horários diurnos. Os veículos foram classificados em:

  • Leves: carros
  • Pesados: ônibus, caminhões, kombis, carros-fortes, vans
  • Motocicletas

Essa classificação permitirá, em análises futuras, compreender melhor a influência do tráfego no ambiente acústico da cidade.

Esta primeira etapa do projeto é um levantamento inicial do ambiente sonoro urbano de Belo Horizonte, que servirá de base para estudos mais detalhados e aprofundados em fases futuras.

11. Covariáveis: Como o Sistema Implementa

Visão geral

O modelo RK Híbrido utiliza 14 covariáveis espaciais para capturar a tendência (trend) do ruído urbano. Cada covariável associa a cada célula da grade (10×10m) um valor numérico que descreve uma característica do entorno — distância a vias, concentração de atividades, morfologia urbana etc. A regressão aprende qual combinação linear dessas variáveis melhor prevê o nível de ruído.

Todas as covariáveis são calculadas em Python (scripts/etapas/covariaveis.py) usando dois tipos de operação espacial:

  1. Distância mínima — distância euclidiana da célula ao ponto mais próximo de um conjunto (ex: distância ao ponto de ônibus mais perto)
  2. Contagem em raio — quantos pontos de um conjunto existem dentro de um raio fixo (ex: número de pontos de ônibus em 250m)

Ambas operações dependem de busca eficiente entre milhões de pares coordenada–coordenada. A estrutura de dados que viabiliza isso é a cKDTree.

O que é cKDTree

A cKDTree (C implementation of K-Dimensional Tree, da biblioteca scipy.spatial) é uma árvore binária de particionamento espacial otimizada para buscas de vizinhança em coordenadas multidimensionais.

Problema que resolve: dada a grade de BH com ~3.3 milhões de células e, por exemplo, ~11.000 pontos de ônibus, calcular a distância mínima de cada célula ao ponto de ônibus mais próximo exige, por força bruta, 3.3M × 11K = 36 bilhões de cálculos de distância. Na prática: inviável.

A cKDTree resolve isso em tempo O(n · log m) em vez de O(n · m), onde n é o número de células e m o número de pontos de referência. Para BH, isso reduz de ~36 bilhões para ~50 milhões de operações — uma redução de ~700×.

Como funciona

A árvore organiza os pontos de referência (ex: pontos de ônibus) em uma estrutura hierárquica que divide o espaço recursivamente por eixos alternados (X, Y). Para encontrar o vizinho mais próximo de uma célula, a árvore percorre apenas os ramos relevantes, descartando grandes regiões do espaço sem calcular distâncias desnecessárias.

Analogia: buscar um nome numa lista telefônica de 11.000 entradas. Sem índice (força bruta), você lê as 11.000 entradas. Com a árvore KD, é como ter um índice que elimina metade das entradas a cada comparação — encontra o resultado em ~14 passos (log2(11.000) ≈ 13.4).

Exemplo concreto: pontos de ônibus

Os pontos de ônibus geram duas covariáveis: dist_ponto_onibus (distância ao mais próximo) e n_pontos_onibus_250m (contagem em raio de 250m). Ambas capturam a influência do transporte público sobre o ruído — ônibus municipais (frota diesel, sem barreiras acústicas) são fontes sonoras significativas no contexto brasileiro.

Etapa 1: Carregar dados

Os ~11.000 pontos de ônibus são carregados da tabela pontos_onibus (fonte: BHTrans/Prodabel), com coordenadas já em UTM 31983 (metros). A grade de interpolação (~3.3M células) é carregada da tabela grade_interpolacao_10m.

Etapa 2: Construir a árvore

As coordenadas dos pontos de ônibus são inseridas na cKDTree. A construção da árvore leva < 1 segundo para 11K pontos.

Etapa 3: Distância mínima (dist_ponto_onibus)

Para cada célula da grade, a operação tree.query(grade_coords, k=1) encontra o ponto de ônibus mais próximo e retorna a distância euclidiana em metros. A consulta para 3.3 milhões de células leva ~3 segundos.

CélulaUTM XUTM YPonto de ônibus mais próximoDistância (m)
#1.204.507610.3507.796.420Av. Amazonas, 150023
#2.891.033614.7807.801.660R. Leopoldina, s/n412
# 503.221607.1207.793.880R. do Ouro, 2401.847

A célula a 23m de um ponto de ônibus provavelmente sofre impacto acústico direto (frenagem, aceleração, motor diesel em marcha lenta). A célula a 1.847m está em área sem transporte público por ônibus — possivelmente região de preservação ou condomínio fechado.

Etapa 4: Contagem em raio (n_pontos_onibus_250m)

A operação tree.query_ball_point(grade_coords, r=250) conta quantos pontos de ônibus existem dentro de 250m de cada célula. Essa covariável captura a concentração de transporte: um único ponto isolado gera menos ruído que um corredor com 15 pontos em 250m (terminal de integração, eixo viário com faixas exclusivas).

CélulaN pontos em 250mInterpretação
#1.204.5078Corredor de ônibus — ruído alto e contínuo
#2.891.0331Ponto isolado — ruído intermitente
# 503.2210Sem transporte público próximo

Etapa 5: Transformação e regressão

As distâncias passam por transformação logarítmica (loge(d + 1)) antes de entrar na regressão. A justificativa é física: a atenuação sonora com a distância segue uma lei logarítmica (decaimento ~6 dB por duplicação de distância em campo livre). A transformação lineariza essa relação, melhorando o ajuste da regressão linear.

As contagens são padronizadas com StandardScaler (média 0, desvio padrão 1) para que covariáveis com escalas diferentes (distância em metros vs. contagem unitária) contribuam de forma equilibrada para o modelo.

Padrão arquitetural: todas as 14 covariáveis

O mesmo padrão cKDTree é aplicado a todas as covariáveis do modelo, mudando apenas o conjunto de pontos de referência:

CovariávelTipoPontos de referênciaN pontos
dist_ponto_onibusDistância mín.Pontos de ônibus (BHTrans)~11K
n_pontos_onibus_250mContagem 250mPontos de ônibus (BHTrans)~11K
dist_arterialDistância mín.Vias arteriais densificadas (Prodabel)~200K
osm_dist_motorwayDistância mín.Autoestradas (OSM)~0.6K
osm_dist_trunkDistância mín.Vias trunk (OSM)~0.6K
osm_dist_via_alto_impactoDistância mín.Motorway + trunk + arterial C (OSM + Prodabel)~80K
osm_dist_hospitalDistância mín.Hospitais e UBSs (OSM)~0.4K
osm_n_entretenimento_250mContagem 250mBares, restaurantes, casas noturnas (OSM)~3K
osm_n_comercio_250mContagem 250mFarmácias, bancos, fast-food (OSM)~2K
densidade_edif_100mContagem 100mEdificações (Prodabel)~400K
dist_parque_grandeDistância mín.Parques > 10 ha (Prodabel)~30
dist_fonte_vistoriadaDistância mín.Locais vistoriados por poluição sonora (SMMA)~10K

As duas covariáveis restantes — influencia_via e intensidade_trafego_250m — são compostas: combinam múltiplas distâncias e contagens ponderadas por hierarquia viária e decaimento linear, mas internamente também usam cKDTree.

Performance

O cálculo completo das 14 covariáveis para as ~3.3 milhões de células da grade de BH leva ~45 minutos. A maior parte do tempo é consumida pela intensidade_trafego_250m (soma ponderada com decaimento por distância em raio de 250m) e pela densidade_edif_100m (contagem de ~400K edificações). Sem a cKDTree, o cálculo seria da ordem de dias.

A cKDTree é a estrutura de dados que torna viável o cálculo de covariáveis em escala municipal. Ela transforma buscas de vizinhança de O(n·m) para O(n·log m), permitindo que 3.3 milhões de células sejam processadas contra centenas de milhares de pontos de referência em tempo computacional aceitável.

12. Infraestrutura Computacional

A geração do mapa de ruído municipal envolve processamento pesado sobre ~3.3 milhões de células em grade de 10 m. Esta seção documenta o hardware utilizado e os tempos observados em cada etapa, como referência para reprodutibilidade e planejamento de execuções futuras.

Hardware

ComponenteEspecificação
CPUAMD Ryzen 7 255 — 8 cores / 16 threads, até 4.97 GHz
RAM60 GB DDR5
DiscoNVMe (147 GB na partição Linux)
GPUAMD Radeon 780M (integrada — não utilizada no pipeline)
SistemaUbuntu 24.04 — Kernel 6.17
Banco de dadosPostgreSQL 16 + PostGIS 3.4 (local)
Python3.12 (venv local, PyKrige + scikit-learn + scipy)

Tempos observados por etapa

Todos os tempos referem-se à grade de 10 m (~3.3 M células) e foram medidos nesta máquina.

EtapaTempoGargalo principal
Geração da grade ~15 min INSERT em batch de 3.3 M linhas no PostGIS
Covariáveis (14 features) ~45 min intensidade_trafego_250m (soma ponderada com decaimento) e densidade_edif_100m (~400K edificações)
Krigagem — IDW ~1.5 h Cálculo de distâncias para cada célula (single-thread)
Krigagem — RK Híbrido ~2.5 h Ajuste do variograma + Ordinary Kriging dos resíduos (PyKrige, single-thread)
Validação LOO-CV (1 cenário) ~15 min N iterações = N medições (~745 por cenário); re-ajuste do modelo a cada iteração
Geração de raster (1 cenário) ~5 min Montagem do array + reprojeção UTM → WGS84 (rasterio)

Tempos totais do pipeline

EscopoTempo estimadoComando
Pipeline completo — 1 cenário ~5 h pipeline.py --cenario 1
Pipeline completo — 10 cenários ~50 h pipeline.py --todos-cenarios
Apenas rasters (10 cenários) ~50 min pipeline.py --todos-cenarios --etapas raster

Considerações de performance

Covariáveis — O gargalo é o cálculo de distâncias e contagens em raio (250 m, 100 m) para cada célula. A estrutura cKDTree (scipy) reduz a complexidade de O(n·m) para O(n·log m), mas o volume — 3.3 M células × centenas de milhares de pontos de referência — ainda demanda ~45 min. O processamento é feito em batches de 20 mil células com commits intermediários, o que permite retomar em caso de interrupção.

Krigagem — A etapa mais custosa. PyKrige opera em single-thread: cada célula resolve um sistema linear com os vizinhos mais próximos. O RK Híbrido adiciona o custo da regressão (Ridge) e do ajuste do variograma sobre os resíduos. A execução de 10 cenários é sequencial e totaliza ~40 h de CPU efetivo.

Rasterização — Etapa leve. Lê os resultados do banco, monta um array NumPy 2D e gera um PNG colormapped com reprojeção EPSG:31983 → 4326 via rasterio.warp. Pode ser reexecutada isoladamente sem recalcular a krigagem.

Para reproduzir: em hardware similar (8 cores, 60 GB RAM, NVMe), os tempos acima são representativos. Em máquinas com menos RAM (< 16 GB), os batches de covariáveis podem causar swap e o tempo pode triplicar. O disco NVMe é importante para os INSERT/UPDATE em batch no PostgreSQL.

13. Referências

Cressie N. (2015) — Statistics for Spatial Data. Revised Edition. Wiley. Wiley.
Goovaerts P. (1997) — Geostatistics for Natural Resources Evaluation. Oxford University Press. OUP.
Matheron G. (1963) — Principles of Geostatistics. Economic Geology 58(8), pp. 1246–1266. DOI.
Aumond P. et al. (2018) — Probabilistic modeling framework for multisource sound mapping. Applied Acoustics 139, pp. 34–43. ScienceDirect.
Diretiva 2002/49/CE — Avaliação e gestão do ruído ambiente. Parlamento Europeu. Tolerância CNOSSOS-EU: ±4,6 dB. EUR-Lex.
NBR 10.151:2019 (Errata 1:2020) — Medição e avaliação de níveis de pressão sonora em áreas habitadas. ABNT. Manual ProAcústica.
ISO 9613-2:1996 — Acoustics — Attenuation of sound during propagation outdoors — Part 2. ISO.
Lei Municipal nº 9.505/2008 — Controle do ruído urbano. Câmara Municipal de BH. Texto integral.
PyKrige — Murphy B.S. (2022). Kriging Toolkit for Python. DOI: 10.5281/zenodo.7407557.
SciPy — Virtanen P. et al. (2020). SciPy 1.0. Nature Methods 17, pp. 261–272. DOI.
rasterio — Gillies S. et al. Geospatial raster I/O for Python. Docs.
Martins C.S., Murta Filho R.L. (2012) — Avaliação do conforto sonoro no município de Belo Horizonte. Revista do Observatório do Milênio de BH. PDF.