Mirácomo funciona · guia técnico
Mirá · “árvore” em nheengatu · Manaus

Como o Mirá decide onde plantar

Manaus é dividida em 32.216 hexágonos de cerca de 120 m. Cada um recebe uma nota de 0 a 100 feita com três dados abertos: quanto a superfície esquenta, quanta vegetação falta e quantas pessoas moram ali. Este guia mostra cada peça, do satélite ao assistente que redige ofícios.

Nenhum número do Mirá é inventado por um modelo de linguagem. Os números vêm de satélites, do Censo e do OpenStreetMap, calculados por código que qualquer pessoa pode conferir.

1 · Visão geral

Três camadas, e só uma delas calcula

O pipeline roda no seu computador e transforma dados brutos em arquivos. O site e o assistente, publicados no Vercel, apenas leem esses arquivos.

FONTES ABERTAS Landsat 8/9calor de superfície Sentinel-2vegetação (NDVI) IBGE Censo 2022moradores por setor OpenStreetMappraças, escolas, ruas CHMv2 (Meta/WRI)altura das copas Pipeline · seu computador Python · etapas 1 a 8 1 grade H35 OpenStreetMap 2 calor6 copas 3 vegetação7 índice 4 população8 web.json recorta Manaus, agrega por hexágono, calcula percentis, índice, faixas, robustez e perda de copa public/data/ web.json + CSV e JSON abertos Vercel Site estáticomapa, ficha, pesos, ranking Função Pythonapi/index.py · assistente Jevinterpreta Geminisó redige o site recalcula o índice no navegador quando os pesos mudam
As setas mostram para onde os dados vão. O único lugar onde números são calculados é o pipeline, mais a conta do índice que o site e o assistente repetem com os pesos escolhidos.
32.216hexágonos analisados
16.913elegíveis: onde plantar faz sentido
1.692de prioridade muito alta, com ~392 mil moradores
−0,83 °Cna superfície a cada +10 pontos de vegetação
2 · A unidade de análise

Do pixel de satélite ao hexágono

Cada pixel tem um valor medido pelo satélite. O hexágono fica com a mediana dos pixels que caem dentro dele, que resiste melhor a um pixel estranho (um telhado brilhante, uma nuvem não mascarada) do que a média.

Por que hexágonos? Todos os vizinhos de um hexágono ficam à mesma distância do centro, o que não acontece com quadrados. O Mirá usa o sistema H3, uma grade hexagonal global, na resolução 10: cerca de 15 mil m² por célula, o tamanho aproximado de uma quadra.

Por que 120 m? É o tamanho do pixel térmico do Landsat (100 m). Um hexágono menor sugeriria um detalhe que o satélite de calor não enxerga.

Como cada dado chega ao hexágono:

  • Calor e vegetação: mediana dos pixels de cada cena, depois mediana entre várias cenas da estação seca.
  • Moradores: o Censo informa por setor censitário; o Mirá reparte cada setor entre os hexágonos que ele toca, com menos peso onde há água ou mata.
  • OpenStreetMap: soma de áreas (praças), contagem (escolas) e comprimento (ruas) dentro do hexágono.
  • Copas: fração de pixels de ~1,2 m com altura de 3 m ou mais.
3 · O índice

Três comparações e uma média ponderada

Cada fator vira um percentil: a posição do hexágono em relação aos outros. Percentil 96 em calor quer dizer “mais quente que 96% dos hexágonos”. O índice é a média ponderada dos três percentis.

Pesos (como no site)
40%
30%
30%
Índice
95

Os três fatores

  • Calor: diferença entre a temperatura de superfície do hexágono e a mediana da cidade, na estação seca (Landsat, por volta das 10h).
  • Falta de verde: NDVI baixo. O NDVI compara o infravermelho com o vermelho e é alto onde há planta viva (Sentinel-2, 10 m).
  • Moradores: pessoas no hexágono, com 50% a mais de peso para idosos (60+) e crianças de 0 a 4 anos, mais sensíveis ao calor.

Por que percentis? Os fatores têm unidades diferentes (°C, NDVI, pessoas). Convertidos em posição de 0 a 100, ficam comparáveis e nenhum domina só por ter números maiores.

Mexa nos pesos na calculadora: o telhado de Nova Esperança sobe quando o calor pesa mais e cai quando os moradores pesam mais. O site faz exatamente esta conta para os 16.913 hexágonos elegíveis cada vez que alguém move um controle.

A faixa de prioridade depende da posição do índice entre todos os hexágonos, e não do número em si. Por isso a calculadora mostra o índice, e o site mostra também a faixa e a posição.

4 · Faixas, exclusões e robustez

Quem entra, em que faixa, e com que segurança

Primeiro saem os hexágonos onde não faz sentido plantar. Entre os elegíveis, as faixas são fatias fixas do ranking: a metade de baixo é “baixa”, os 10% do topo são “muito alta”. A contagem de cada faixa é aproximada; a de muito alta é exata.

Fora do índice

  • Vegetação densa (13.509): cobertura vegetal de 60% ou mais e copa de árvores de 30% ou mais. É mata para proteger, e não para plantar. A exigência de copa devolveu cerca de 670 gramados e pastos ao índice.
  • Água (1.065): mais da metade do hexágono é rio ou igarapé.
  • Sem dado (458): nuvens em todas as cenas úteis.
  • Aeroporto (271): área aeroportuária, onde árvores não são indicadas.
Robustez (ilustração). O índice é recalculado com cinco conjuntos de pesos. Quem fica entre os 10% do topo em todos é “robusto”: 461 hexágonos hoje. São as escolhas que nenhum critério razoável derrubaria.
5 · Pipeline de dados

Oito etapas, em ordem

Comando: python pipeline/rodar_tudo.py. Para retomar: --a-partir-de 6. As etapas 1 a 6 gravam em dados/intermediario/; a 7 e a 8 gravam em public/data/, que vai para o site.

  1. ETAPA 1 · segundos

    Grade

    Hexágonos H3 com centro dentro dos 63 bairros do IBGE.

    grade.parquet
  2. ETAPA 2 · 10–30 min

    Calor

    Cenas Landsat da seca, nuvens mascaradas, anomalia em relação à cidade.

    calor.parquet
  3. ETAPA 3 · 15–40 min

    Vegetação

    NDVI, cobertura vegetal e água do Sentinel-2.

    vegetacao.parquet
  4. ETAPA 4 · 2–5 min

    População

    Censo por setor, repartido nos hexágonos pela habitabilidade.

    populacao.parquet
  5. ETAPA 5 · 1–5 min

    OpenStreetMap

    Praças, escolas, avenidas, ruas e aeroporto.

    viabilidade.parquet
  6. ETAPA 6 · 2–5 min

    Copas

    Altura das copas (CHMv2): fração com 3 m ou mais e altura média.

    copas.parquet
  7. ETAPA 7 · segundos

    Índice

    Exclusões, percentis, faixas, robustez, oportunidade, perda de copa, relação verde–calor.

    hexagonos.csv · bairros.csv
  8. ETAPA 8 · segundos

    Site

    Compacta tudo em formato colunar, com inteiros escalados (2,4 MB).

    web.json

Quando rodar de novo: uma vez por ano, depois da estação seca (julho a outubro), para atualizar calor e vegetação. Os testes (testes/rodar_testes.py) rodam as oito etapas com dados sintéticos, sem internet.

6 · Visão computacional

Árvore ou gramado? A altura responde

O NDVI enxerga cor: gramado e árvore parecem iguais. Um modelo de visão computacional estima a altura de cada pixel e separa os dois.

1. Imagem de satélite (RGB) 2. NDVI: “tem planta viva?” 3. CHMv2: “qual a altura?” gramado árvores NDVI alto NDVI baixo 14 m 8 m 0 m telhado: 0 m* Perfil de altura ao longo da cena (CHMv2) 3 m: abaixo disto não conta como copa copa copa gramado: ~0 m
Cena ilustrativa. *O modelo foi treinado para medir vegetação; telhados e prédios tendem a sair com altura zero, mas podem ocorrer erros locais.

Como o mapa de alturas foi feito

O CHMv2 (Meta e WRI, licença CC BY 4.0) cobre o mundo com pixels de ~1,2 m. Ele vem de um modelo em duas partes:

  • um DINOv3, Vision Transformer pré-treinado sem rótulos em milhões de imagens de satélite, que aprende a reconhecer textura de copa, sombra e telhado;
  • uma cabeça de regressão densa, parente da estimativa de profundidade, treinada com alturas medidas por LiDAR (laser aerotransportado).

O Mirá lê só os 4 tiles que cobrem Manaus, por requisições parciais em arquivos COG, sem baixar os 24 TB do mundo. As imagens de origem desses tiles vão de 2010 a 2019.

Por que a copa não substitui o NDVI no índice: as duas concordam bastante (correlação de 0,87), o NDVI recente explica um pouco melhor o calor (R² 0,79 contra 0,71) e o CHMv2 é mais antigo que os outros dados.

Perda de copa: o passado contra o presente copa antiga (CHMv2) − cobertura atual (Sentinel-2) ≥ 30 pontos Tarumã · loteamento na mata 2010–2019 98% hoje 65% Nova Esperança · capoeira virou telhado 2010–2019 72% hoje 0% 795 hexágonos com provável perda, sobretudo em Ponta Negra, Tarumã, Tarumã-Açu, Lago Azul e Nova Cidade.
Os dois casos foram conferidos nas imagens atuais do Google Maps. Comparar sensores e datas diferentes exige cautela: a camada indica onde olhar, e não prova desmatamento.
7 · O assistente

O modelo escreve; o código responde pelos números

“Pergunte ao Mirá” explica pontos, bairros e a cidade, e redige ofícios. O Jev interpreta, o código busca os dados, o Gemini redige e o servidor confere cada número antes de mostrar.

Pessoa (site)ServidorJevCódigo (dados)Gemini 1 · pergunta + ponto em foco + bairro + pesos 2 · “qual a intenção?” 3 · intenção + destinatário (com confiança) 4 · ficha, resumo do bairro ou ranking, com os mesmos pesos 5 · FATOS: números, complementos, definições 6 · “redija só com estes FATOS” 7 · texto 8 · todo número do texto está nos FATOS? sim: Gemini não: modelo Se o Gemini falhar ou errar, sai uma versão completa montada só com os dados.

O que o Jev reconhece

  • explicar um ponto: “por que este ponto é prioridade?”
  • onde plantar num bairro, com botões que levam aos pontos no mapa
  • comparar bairros e panorama da cidade
  • como funciona o índice
  • redigir documento: ofício para prefeitura, vereador, escola ou associação
  • fora do tema: resposta fixa, sem chamar o Gemini

Proteções

  • Nenhum número é liberado por padrão. Complementos como “entre os 4% mais quentes” são calculados pelo servidor e entram nos fatos.
  • As instruções proíbem causa circular (“é prioridade porque é o 1º”), recomendar espécies e tratar o tipo de espaço do OpenStreetMap como motivo.
  • Limite de 6 perguntas por minuto e 60 por dia por visitante.
  • Sem chaves, roda com o Jev simulado e os textos de modelo.

Limite conhecido: a conferência verifica se o número existe nos fatos, e não se está no lugar certo da frase.

8 · Próximos passos

O que ainda dá para fazer com LLMs e VLMs

Em ordem aproximada de esforço dentro de cada grupo. As marcas indicam valor para quem usa, esforço e potencial de publicação.

Ordem sugerida: justificativa técnica e Jev como juiz (rápidos); validar os 795 alertas de perda de copa com VLM (o mais publicável); conjunto de avaliação do assistente; depois os projetos grandes, fotos de rua e copas atualizadas.

9 · Glossário

Termos usados neste guia

H3
Grade hexagonal global. Resolução 10 ≈ 15 mil m² por hexágono.
LST
Temperatura da superfície medida por satélite. Não é a temperatura do ar.
NDVI
(infravermelho − vermelho) / (infravermelho + vermelho). Alto onde há planta viva.
Percentil
Posição em relação aos outros: percentil 96 é maior que 96% dos valores.
Robusto
Hexágono que fica entre os 10% do topo com os cinco conjuntos de pesos.
CHMv2
Mapa global de altura das copas (Meta/WRI), ~1,2 m por pixel.
DINOv3
Modelo de visão auto-supervisionado, base do CHMv2.
LiDAR
Laser que mede altura com precisão; usado para treinar o modelo de copas.
COG
GeoTIFF otimizado para nuvem: pode ser lido aos pedaços pela internet.
STAC
Catálogo padrão de imagens de satélite, usado pelo Planetary Computer.
Jev
Modelo System One da TypeSafe: responde perguntas estruturadas (escolha, nota, probabilidade) com confiança.
LLM / VLM
Modelo de linguagem / modelo que entende imagem e texto.
RAG
O modelo responde com trechos buscados em documentos, citando a fonte.
Texto de modelo
Resposta montada só com os dados, usada quando o LLM falha ou erra.