CBRE · Guarulhos e entorno — triagem de terrenos industriais/logísticos · análise / beta privado · agosto de 2026
Metodologia: uma página com tudo o que sustenta o ranking
Política de honestidade · O que é cada objeto · Fatores do motor (cbre.fatores) · Vetos · Perfil de conversão (cbre.conversao_regras) · Zoneamento em duas camadas · Validação
1. Política de honestidade (METODOLOGIA_HONESTIDADE.md, renderizado)
Novaterra x iAgroSat · análise / beta privado · agosto de 2026
Aplica-se a tudo o que a frente CBRE entrega: PDFs (deliverable/), site estático (web/), SIG com login (cbre.iagrointel.com), CSV/GeoJSON e o próprio banco (schema cbre).
1. Política (numerada, vinculante)
- Triagem: sinal, não prova. Todo resultado analítico (score, ranking, veredito, "parado", "verificar") é sinal para orientar diligência, nunca conclusão sobre o imóvel, o proprietário ou o processo. O rodapé de todo produto repete isso.
- Pesos declarados, não calibrados. Os pesos do score da grade e os presets do motor multicritério são escolhas do projeto (
cbre.fatores,research/12), visíveis, alteráveis pelo usuário e sem pretensão de ótimo. Nenhum peso é apresentado como "medido". - Preço pedido ou praça não é transação.
cbre.anuncios.preco_brle as praças decbre.leilao_detalhesão o que o vendedor ou o edital pedem. Nunca se deriva "valor de mercado" deles. "Fora do mercado" só se afirma contra itens com coordenada (1.199 de ~70 mil) e é piso fraco. - CAR é autodeclarado. Divisa do imóvel CAR não é matrícula; área é a declarada; gleba (mancha da grade) não é lote, lote não é matrícula. Nunca se afirma titularidade.
- Código, não pessoa. O imóvel é identificado pelo código CAR; leilão pelo número do processo e pelo comitente pessoa jurídica ou juízo. Nome, CPF, telefone e e-mail de pessoa física não entram no banco, no site nem no PDF. Contato com proprietário é ato da CBRE, com base legal própria (LGPD).
- Ausência não é certidão. "Sem embargo", "sem UC", "sem processo ANM" significam ausência na base consultada, na data de acesso. Nunca "certidão negativa".
- Método e confiança por zona. Cada polígono de zoneamento carrega
metodo(wfs, shp, app_json, georref_pdf, ocr_texto, wms_getfeatureinfo) econfianca(alta, média, baixa). "Galpão entra" é leitura da lei com artigo citado (zoneamento_parametros.artigo_fonte), não parecer nem consulta prévia; sigla ambígua recebe a leitura mais restritiva. - Veto explicável. Todo veto (grade, imóvel, mineração) tem motivo em texto na linha (
veto_motivo,veto_principal,mine_motivo) e regra declarada emcbre.fatores.veto_regra. Não há veto sem frase. - Sobreposição não é irregularidade. Cruzar imóvel com processo ANM, embargo, UC ou zona de proteção descreve coincidência espacial; nunca acusa. Extrato de leilão nunca julga o devedor.
- Satélite é indício. MapBiomas, NDVI e a série mensal Sentinel-2 leem cobertura, não uso legal; não distinguem cava de terraplenagem; várzea é proxy (GLO-30 + BC250), não mancha oficial. Nada foi visto em campo.
- Dado aberto, robots respeitado. Só fontes públicas; portais que bloqueiam (Cloudflare/403) ficam de fora e são nomeados como lacuna, não contornados. Uma requisição por fonte nas verificações de frescor.
- Número sem procedência não sai. Todo número em PDF, site ou fala tem tabela, script e data; o que não se conseguiu estabelecer fica NULL com motivo (
catalogo_camadas.motivo_null), nunca preenchido por suposição.
2. Como o catálogo, o dicionário, o registro de validação, os hashes e o frescor fazem a política valer
| Instrumento | Onde | O que garante | Regra que sustenta |
|---|---|---|---|
| Catálogo de camadas | cbre.catalogo_camadas (≈ 70 linhas), deliverable/CATALOGO_DADOS.md, catalogo.html |
uma linha por tabela/raster usado: fonte, URL, licença, data do dado, data de acesso, script gerador, linhas medidas, hash, método, confiança, limites, cadência, próxima verificação, responsável, último resultado | 6, 7, 11, 12 |
| Dicionário de campos | cbre.dicionario_campos (200 campos das 9 tabelas que o cliente vê) |
cada campo com significado em linguagem simples, unidade, domínio, exemplo e origem — o leitor não precisa adivinhar o que galpao_entra=conferir ou mine_veredito=atencao_anm querem dizer |
3, 4, 7, 8 |
| Registro de validação | cbre.validacao (origem doc = verificações feitas na construção, com número; origem auto = bateria semanal) |
cada verificação com esperado, medido, resultado (passa/atenção/falha), data, script e evidência; nada é "validado" sem linha aqui | 1, 12 |
| Hash de export determinístico | catalogo_camadas.sha256 + sha256_cmd; pipeline/qa/hash_tabela.sh |
prova de que a tabela entregue é a tabela medida: COPY (SELECT * ... ORDER BY pk) TO STDOUT \| sha256sum, reproduzível por qualquer auditor com acesso ao banco; a bateria recalcula duas vezes e compara com o catalogado |
12 |
| Frescor | cbre.frescor; pipeline/qa/frescor_check.py (mensal) |
para cada fonte_url, ETag/Last-Modified ou hash do corpo, comparado ao anterior; mudou=true abre tarefa de reingestão; host bloqueado é declarado, não adivinhado |
6, 11 |
| Cadência | frescor_periodo + proxima_verificacao no catálogo; cron qa_run.sh (domingo 05:30) e frescor_check.py (dia 1, 06:00), ao lado do cron de leilões (06:40 diário) |
a data de acesso envelhece de forma visível; o site mostra "última validação" por camada | 6, 12 |
| Dado pessoal | verificações auto: regex de CPF e "Nome:" em anuncios.titulo/raw, leilao_detalhe.*, colunas de identificação nas tabelas de imóvel |
falha bloqueia publicação | 5 |
| Rodapé único | web/build_web.py FOOT_TXT; style_cbre.py |
o mesmo texto de ressalva em todas as páginas e PDFs | 1, 3, 4, 6 |
Resultado por camada: passa (tudo dentro do esperado), atencao (fora do esperado com explicação registrada — não bloqueia, mas aparece), falha (bloqueia a publicação da camada até correção), nao_validado (catalogada sem verificação — aparece assim no site).
3. Documento de Validação (modelo)
Preencher um por camada ou por entrega, guardar em research/QA_<data>.md (automático) ou deliverable/VALIDACAO_<camada>_<data>.md (humano).
DOCUMENTO DE VALIDAÇÃO — <camada ou entrega>
Data: <AAAA-MM-DD> Rodada: <run_id ou "manual">
Tabela(s): cbre.<...> Hash (sha256, export determinístico): <64 hex> Linhas: <n>
Fonte: <órgão, conjunto, URL> Data do dado: <safra> Data de acesso: <AAAA-MM-DD> Licença: <...>
Script gerador: <caminho> Método: <uma linha> Confiança declarada: <alta/média/baixa>
O QUE FOI MEDIDO CONTRA O QUÊ (referência) ESPERADO MEDIDO RESULTADO
<teste 1> <fonte/relatório/propriedade> <valor> <valor> passa/atenção/falha
<teste 2> ...
Limites que permanecem: <uma linha por limite; nada que a política §1 proíba afirmar>
Ação se atenção/falha: <reingerir / corrigir / declarar lacuna> Prazo: <...>
Próxima verificação: <data> Cadência: <diário/semanal/mensal/trimestral/semestral/anual/estático>
Assina: <nome, papel, "agente" ou "humano"> Em: <AAAA-MM-DD>
Evidência: <caminho do log, do relatório, do CSV>
4. O que uma auditoria do cliente recebe
deliverable/CATALOGO_DADOS.md(+catalogo_camadas.csv,dicionario_campos.csv,validacao.csv) — catálogo, dicionário e registro completos, gerados do banco.deliverable/SHA256SUMS.txte os hashes por tabela com o comando que os reproduz (hash_tabela.sh).deliverable/DOSSIE_GUARULHOS.md— fontes, método em uma linha por etapa e o bloco de reexecução (84b → 80 → run_chain4.sh → mapas → build_docs.py).- Os scripts geradores em
pipeline/,mercado/,web/(código aberto ao auditor), com logs*.logpor etapa. research/QA_<data>.mdde cada rodada semanal e a sériecbre.frescormensal.- Este documento, com a política numerada, e a página
catalogo.htmldo site com "última validação" por camada. - O que NÃO recebe: dado pessoal, preço "de mercado", certidão, parecer urbanístico, laudo — porque não produzimos.
5. Operação
bash pipeline/qa/qa_run.sh— roda a bateria, gravacbre.validacao, atualiza hashes e resultado no catálogo, reexporta MD/CSV/JSON e publica o JSON no site.python3 pipeline/qa/frescor_check.py— verificação de fontes (mensal).python3 pipeline/qa/catalogo_export.py— só reexportar.python3 web/build_web.py— reconstrói o site, inclusivecatalogo.html(lêdata/catalogo.json).- Ao criar tabela nova em
cbre: inserir a linha emcbre.catalogo_camadasno mesmo commit (sem linha, a bateria a lista como "não catalogada").
6. Análise sob demanda de uma área (31/08/2026) — e a Prova do método
O cliente entrega uma área (desenha, solta um pino, manda KML/KMZ/GeoJSON/SHP zipado/GPKG/GML, ou cola
coordenadas) em analisar.html e recebe a leitura calculada na hora, no PostGIS, contra as mesmas
camadas do mapa. Detalhe e reexecução em research/34_ANALISE_SOB_DEMANDA.md.
Três selos, e todo valor tem um:
- medido no polígono — a conta foi feita com a geometria do usuário contra o vetor da fonte
(zona, macrozona, perímetro urbano, inundação, UC/APRM/RBCV, embargo, mineração ANM, CAR, lote,
matrícula, anúncio, leilão, estoque, renda por setor, tributação municipal, rede MT e subestação).
- herdado da célula de 250 m — o valor vem da grade (cbre.hex, hex_fav, hex_fatores_extra,
acesso_polos), ponderado pela área de interseção de cada célula com o polígono: relevo, cobertura
MapBiomas, tempo roteado aos 14 polos, roubo de carga, densidade, MVA da subestação. Carrega o erro
dessa escala e diz que carrega.
- declarado — regra, peso ou parâmetro escrito por nós. Nunca medição.
A Prova do método vem junto de cada leitura, e é a parte que não se esconde:
1. Critério → função de pertinência. O grau 0-100 de cada fator é uma função linear por partes com
âncoras declaradas — conjunto difuso no sentido estrito (pertence em grau, não por sim/não). As
âncoras são lidas de cbre.fatores (coluna transformacao) e mostradas junto do texto verbatim.
2. Agregação. Soma ponderada dos graus (WLC), compensatória, rodando por baixo de restrições
não-compensatórias (o veto): favorabilidade = (Σ w·g ÷ Σ w) × (1 − fração vetada). A tela mostra
a contribuição grau × peso de cada fator, ordenada, para aquela área.
3. Veto por objeto. cbre.veto_regras_urbano inteira, com vale_para_rural, vale_para_urbano e
motivo_da_diferenca: o imóvel rural e o lote urbano não são vetados pelas mesmas regras, e por
isso a leitura de uma área desenhada devolve duas notas.
4. Procedência por valor, com a ficha de cbre.catalogo_camadas de cada camada usada.
5. Reexecução: sha256 da entrada canônica + o comando que reproduz a leitura.
Regra de exibição (dono, 31/08): mostra-se o método por inteiro e guarda-se a resposta. As listas completas ficam trancadas; nada sobre como um número é feito fica escondido.
Pesos por uso. Além dos presets de industrial e logística, há varejo/comercial, escritório e data center. Eles são primeira versão para discussão: os critérios desses usos ainda não foram levantados com o time da CBRE, e a tela diz isso em toda parte onde eles aparecem. Como todos os outros, os pesos são declarados, nunca medidos.
7. Situação de uso do imóvel CAR (31/08/2026) — um imóvel em atividade nunca parece disponível
Regra do dono, depois de clicar num imóvel com NDVI 0,86 (claramente plantado) que a tela mostrava como oportunidade: um imóvel em plena atividade agrícola não pode aparecer como se estivesse disponível.
cbre.imovel_situacao_uso (4.346 imóveis, pipeline/9s_situacao_uso.sql, relatório research/35) dá a cada
imóvel um rótulo derivado só do que já estava medido: MapBiomas 2024 por imóvel e a série de NDVI de pico
de 2026. As regras são avaliadas em ordem (a primeira que fecha manda) e os limiares são declarados,
não calibrados em campo:
| # | rótulo | condição | limiares (declarados) |
|---|---|---|---|
| 1 | sem dado | menos de 4 anos MapBiomas OU ndvi_pico_2026 nulo | n_anos_mapbiomas < 4 OU ndvi_pico_2026 IS NULL |
| 2 | mineração | veredito de mineracao ou classe 30 do MapBiomas em 2024 | mine_veredito = 'veto_mineracao' OU pct_mining_2024 >= 0,10 |
| 3 | construído/urbanizado | area majoritariamente urbanizada ou com edificacao industrial OSM | pct_urban_2024 >= 0,50 OU pct_osm_edif_ind >= 0,10 |
| 4 | silvicultura | plantio florestal comercial em 2024 | pct_silvi_2024 >= 0,30 |
| 5 | em uso agrícola | lavoura declarada pelo MapBiomas, ou ciclo de cultura visivel no NDVI, ou uso agropecuario majoritario | lavoura_2024 >= 0,20 OU (ndvi_pico_2026 >= 0,70 E amplitude_2026 >= 0,15 E pct_forest_2024 < 0,60) OU (pct_mosaico_2024 >= 0,50 E pct_forest_2024 < 0,40 E ndvi_pico_2026 >= 0,60) |
| 6 | sem cultura há N safras | sem lavoura em nenhum ano amostrado e NDVI de pico baixo em 2026 | ndvi_pico_2026 < 0,55 E lavoura < 0,05 em 2014/2018/2021/2024 E pct_forest_2024 < 0,40 E pct_urban_2024 < 0,20 E (pasto+mosaico+nao_vegetado)_2024 >= 0,50 |
| 7 | pasto | pastagem majoritaria em 2024 | pct_pasture_2024 >= 0,30 |
| 8 | vegetação nativa | formacao florestal/natural majoritaria em 2024 | pct_forest_2024 >= 0,60 |
| 9 | mosaico/indefinido | o resto: uso agropecuario indistinto (classe 21) ou cobertura mista | nenhuma das regras 1-8 fecha |
Distribuição medida (4.346 imóveis): vegetação nativa · 1718 · em uso agrícola · 1129 · mosaico/indefinido · 838 · pasto · 325 · silvicultura · 138 · construído/urbanizado · 128 · mineração · 63 · sem cultura há 12 safras · 7.
Como aparece no produto. O rótulo abre o popup do imóvel (antes de qualquer outra coisa), com o NDVI e o ano — “em uso agrícola (NDVI 0,86, pico 2026)” — e vira um chip na linha de cada lista. A lista da Linha 1 abre só com os plausíveis; há um interruptor explícito “incluir imóveis em uso”, desligado por padrão.
E a frase que tem de estar na tela: imóvel em uso não é descartado — o cliente pode procurar o proprietário com uma oferta —, mas isso é outro movimento, com outro prazo, e por isso não entra na mesma lista. Nunca dizemos que um imóvel está “disponível”: o vocabulário é candidato ou alvo.
O que isto não é: não é vistoria, não é intenção de venda do proprietário e não é 2025-26 no MapBiomas (a coleção para em 2024; obra ou lavoura iniciada depois disso só aparece pelo NDVI). Limiares sujeitos a ajuste pela CBRE.
8. O lote urbano vazio conferido na imagem (31/08/2026) — o número caiu, e isso é o produto
research/36_LOTE_VAZIO_SENTINEL.md · cbre.v_lote_vacancia_s2 · pipeline/cadastro/60_lote_s2_serie.py.
O número de cabeceira da Linha 1 era 232 lotes / 289,9 ha, apurado por cadastro fiscal + pegada de edificação + OSM. Faltava a fonte que não depende de ninguém ter cadastrado nada: a imagem. A série Sentinel-2 2017-2026 de cada lote (janela seca de maio a setembro, 10 m, mediana das cenas do ano) foi lida lote a lote. Resultado: 13 lotes saíram — a série mostra mudança persistente compatível com obra que nenhum cadastro registrou. O número publicado passou a 219 lotes / 273,1 ha (São Paulo 178, Guarulhos 41). Isso é o produto funcionando, e por isso a queda aparece escrita na tela, não em silêncio.
A régua não foi escolhida a olho. 150 lotes comprovadamente construídos passaram pela mesma máquina e
deram a distribuição nula medida; os limiares são os percentis dela, declarados:
mudou = ΔNDBI ≥ +0,13 ou ΔNDVI ≤ −0,16 ou Δsolo exposto ≥ +0,19 (os p95), com persistência em
todos os anos válidos a partir do ano indicado; estável = |ΔNDVI| ≤ 0,12 e |ΔNDBI| ≤ 0,09 e
|Δsolo| ≤ 0,16 (os p90); o resto é inconclusivo. Falso positivo medido: 2,7 % (4 de 150).
A lista tem graus, não carimbo: vazio 96 / 110,0 ha (as quatro fontes concordando — é o núcleo e o
que a lista abre) · vazio_superficie_nao_vegetada 60 (série estável, mas o chão já é seco/exposto:
pátio, aterro ou terra batida — não é obra nova, é motivo de olhar a imagem) · vazio_inconclusivo_s2 63
(série curta, sinal sem persistência, ou polígono publicado pequeno demais) · construido 13 (fora de
toda contagem). O popup mostra a série ano a ano (NDVI, NDBI, solo exposto, nº de cenas) e o ano da mudança.
⛔ A população de Guarulhos por área aproximada (312 lotes por Voronoi na quadra) saiu do site. Reprovou no próprio teste: 309 dos 312 leem como não vegetados porque a fatia mede a quadra, não o lote. ⛔ 8 lotes têm polígono suspeito — o polígono publicado tem de 2 % a 45 % da área declarada no cadastro (mediana dos 232 = 1,000). Ficam marcados, entram como inconclusivos e não se ordena por área sem conferir. ⛔ O maior lote (Guarulhos, 245.788 m², ZUD3) não está no núcleo: não muda há dez anos, mas está não vegetado desde 2017 — nunca apresentar como terra limpa.
O que isto não é: não é vistoria, não é alvará, não é certidão de uso do solo e não é prova de disponibilidade. É triagem: sinal, não prova. NDBI e solo exposto são proxies de superfície impermeável e de solo descoberto, não detectores de edificação.
9. Comunidades urbanas e ZEIS (31/08/2026) — a camada com a regra de enquadramento mais estrita
A camada de favelas e comunidades urbanas (IBGE, Censo 2022) e de ZEIS entrou no motor como o fator 26. Ela é diferente das outras em uma coisa: a maneira de dizer faz parte do método, e a regra é vinculante em toda tela, todo popup, todo PDF e toda conversa.
O que a camada é. Censo e planejamento urbano. Ela diz onde a fonte oficial reconhece uma comunidade e onde a lei municipal prende a destinação do solo a Habitação de Interesse Social.
O que pontua, e é o único lado duro. A sobreposição: alvo dentro de comunidade = posse do chão
já constituída por moradia consolidada; alvo dentro de ZEIS = restrição legal de uso, lida artigo por
artigo na lei do município (cbre.com_zeis_regra).
O que não pontua, e está escrito na tela. A proximidade. Ela é ambígua, e a leitura mais direta dela é oferta de mão de obra a pé ou por transporte curto, que é o que operador logístico procura. Distância e população no entorno ficam medidas e visíveis, e fora do score.
Onde mora a segurança. No fator 12, medido de boletim de ocorrência georreferenciado da SSP-SP (research/16), e em lugar nenhum mais. Esta camada não é, e nunca é apresentada como, medida de risco.
O que não se escreve, nunca. "Risco de invasão", "área perigosa", ou qualquer construção que leia como juízo sobre quem mora ali. Critério que não couber em redação neutra fica de fora, e o motivo de ter ficado de fora vai escrito no relatório (research/38, seção 9).
Dado de pessoa. Nenhum. nome é o topônimo do núcleo publicado pela própria fonte. As colunas de
endereço que as fontes municipais publicam não foram ingeridas, e a camada de cortiço de São Paulo,
que traz endereço residencial, não foi sequer baixada.
10. Nome do módulo: "Radar de remembramento" (31/08/2026, comentário nº 37)
O módulo se chamava "radar de assemblagem". "Assemblagem" é decalque do inglês assemblage; o termo brasileiro para juntar imóveis vizinhos num só é remembramento — o inverso do desmembramento. No registro de imóveis o ato correspondente é a fusão de matrículas contíguas do mesmo proprietário (Lei 6.015/1973, art. 234), e é assim que o cartório o classifica.
Nome publicado, em toda tela, PDF, catálogo e conversa: "Radar de remembramento", com o subtítulo obrigatório "compra sucessiva de lotes na mesma quadra".
A precisão que vai junto, e não é cosmética. O remembramento propriamente dito é ato de registro e nasce na matrícula. Nós não lemos matrícula — o inteiro teor é pago e nunca foi buscado. Logo não observamos a fusão: observamos, no microdado de ITBI de São Paulo, a compra sucessiva de lotes distintos dentro da mesma quadra fiscal, que costuma preceder o remembramento. Consequências que ficam escritas onde o número aparece:
- Nem toda compra sucessiva vira remembramento (pode virar loteamento, revenda, ou nada).
- Um remembramento pode ocorrer sem nenhuma compra na janela — herança, cisão societária, dação.
- Não verificamos se os lotes são confrontantes: sabemos apenas que partilham a quadra fiscal.
- O ITBI não traz adquirente (sigilo fiscal): o sinal é de concentração de negócio na quadra, não de comprador único e muito menos de identidade.
A tabela continua sendo cbre.assemblagem. Renomear tabela em produção é risco sem ganho: o
rótulo publicado vive no COMMENT ON TABLE (valor/32_rotulo_remembramento.sql) e em
cbre.catalogo_camadas.descricao_simples, que são o que o catálogo e o site leem.
11. Auditoria de geometria das camadas publicadas (31/08/2026, comentário nº 38)
Carlos apontou, com um clique no mapa em (-23,00691 · -47,384548), um polígono que "aparenta ser
espúrio", e fez a pergunta certa: o defeito está na base original ou na base compilada para o
sistema? As duas coisas foram medidas, em EPSG:31983, em toda camada que o mapa serve
(pipeline/qa/geom_audit_20260831.py no banco, e o mesmo teste sobre os arquivos publicados).
Testes: ST_IsValid; distância máxima ao centroide ÷ √área > 3 (vértice fora de lugar);
perímetro ÷ (4·√área) > 5 (fio saindo do polígono); vértices repetidos; centroide fora do
retângulo de estudo; e área calculada contra a área que a fonte declara.
O que ele viu está na FONTE. É a matrícula 56039 do Registro de Imóveis de Capivari
(onr_id 3314756), do "Mapa do Registro de Imóveis" do ONR. O polígono real tem poucos milhares de
m² em Capivari; um vértice do primeiro anel está a 60,8 km dali, formando um triângulo degenerado
que atravessa a região metropolitana. O defeito já vem assim do ONR: o SHAPE__Area publicado pela
própria fonte é 9.193.031 m², coerente com o vértice errado, não com o imóvel. Nossa compilação só
simplificou (35 → 25 vértices) — não criou o pico. E o pico é a única razão pela qual esse imóvel
entrou no estudo: a lasca cruza o município de São Paulo, e é por junção espacial que atribuímos
município. Excluído da camada publicada (cbre.onr_matricula.geom_pico,
pipeline/qa/50_geom_qa.sql); a lista de matrícula urbana vai de 78 para 77 objetos.
O mesmo teste acha 17 casos em 32.905 matrículas do ONR no país (0,05 %), alguns com vértice a
mais de 4.000 km — todos da fonte, todos agora marcados.
O que era NOSSO, e foi corrigido. Na exportação, a geometria era arredondada para 4 casas
decimais (≈ 11 m) depois de simplificada. Arredondar sem snap dobra o anel sobre si mesmo:
medido, 23 de 3.729 imóveis em imoveis_outros.geojson, 123 de 934 em anm_processos,
82 de 559 em inundacao e 31 de 47 em macrozoneamento saíam inválidos do nosso
exportador, estando válidos no banco (teste: com 4 casas 0 de 23 sobrevivem; com 5 casas, 19; com
ST_ReducePrecision na mesma grade, 23 de 23). Correção: cbre.geom_pub() quantiza a geometria
na mesma grade em que ela vai ser escrita, antes do ST_AsGeoJSON — sem custo de tamanho.
Efeito visual era um contorno que se cruza, não um vértice longe; mesmo assim é defeito nosso e está
consertado.
O que é fiel à fonte e fica como está, declarado. Feição multiparte com razão alta e
compacidade baixa não é pico: é um desenho com várias partes espalhadas. É o caso das 260 feições
de inundacao (setores de risco dissolvidos por fonte × classe × município), das 87 de
comunidades, das 77 quadras do Radar de remembramento (lotes distintos da mesma quadra), das 11
subestações fora do retângulo (a rede vizinha atende a área) e dos 410 anúncios fora dele (carteiras
nacionais de LOG CP, Bresco e Herzog, que a fonte publica no país inteiro). Também seguem declarados
os 8 lotes do GeoSampa cujo polígono tem de 2 % a 45 % da área do cadastro (seção 8) e as
autointerseções que vêm do SIGMINE/ANM e do SICAR. O Cartório Teste do ONR (92 registros,
124.961 ha) continua fora de toda camada publicada — conferido.
Passa a ser verificação permanente: pipeline/qa/qa_checks.py, bloco "geometria", roda no cron de
domingo sobre toda camada que o cliente vê e acende quando um vértice fora de lugar aparece.
Linha de base do teste, declarada (31/08/2026). Em carta oficial o polígono longo e fino é
legítimo: zona que segue corredor de via, setor de risco ao longo do córrego, núcleo em faixa.
Medido: das 919 feições de zoneamento que acendem o teste, 617 têm menos de 1.000 m² e só 2 são
multiparte — são lascas e corredores da própria carta. Por isso o teste tem duas severidades: nas
listas de objeto (imoveis_candidatos, glebas_candidatas, estoque_logistico, assemblagem)
a base é 0 e qualquer caso é falha; na cartografia de fonte (zoneamento 919 ·
inundacao_oficial 43 · com_zeis 8 · com_favela 5 · macrozoneamento 4) o que se vigia é a
mudança contra a base publicada acima. onr_matricula fica com base 17 — os 17 defeitos da
fonte já marcados em geom_pico e fora do mapa; o 18º acende.
2. O que é cada objeto
| Objeto | O que é | De onde vem | Onde aparece |
|---|---|---|---|
| Imóvel candidato (objeto principal) | um imóvel rural real do CAR, com divisa autodeclarada, ≥ 5 ha, num dos 9 municípios; 4.346 no universo do CAR, 3.619 publicáveis e 601 ranqueados (29/08: 637 → 617 com o zoneamento dos 9 municípios e o veto de mineração; 31/08: 617 → 601 com a curadoria logística — 727 imóveis saem porque a zona lida na lei diz que o galpão NÃO entra (galpao_entra “não” ou “veto”). ⛔ Ausência de leitura NÃO é “não”: só esses dois valores filtram, e as linhas ficam no banco, em cbre.fora_escopo_logistico) | SICAR 2026 (só o código do imóvel, nunca o titular); cbre.imoveis_candidatos (pipeline/83_imoveis_candidatos.sql) | mapa (camada laranja, ligada), tabela, CSV |
| Célula | hexágono de 250 m da grade (73.115 células); recebe veto ou score 0–1 | cbre.hex + cbre.hex_score (80_score.sql) | mapa: raster do score e células ≥ 0,45 |
| Área apta (antiga “gleba”) | mancha de células contíguas com score ≥ 0,45 (≥ 10 ha); é uma área do mapa, não é imóvel de ninguém — a divisa real pode cortá-la | cbre.glebas_candidatas (81_glebas.sql) | mapa: camada de fundo desligada; CSV/GeoJSON em docs/ |
| Anúncio | item de portal, lote de leilão ou item de carteira de consultoria, com preço pedido ou praça (nunca transação) | cbre.anuncios (varredura 28/08/2026 + cron diário de leilões) | lista de mercado, calendário de leilões, mapa (só os 1.199 com coordenada, camada opcional) |
| Zona | polígono da carta oficial de zoneamento dos 9 municípios, traduzido para “galpão entra?” (lido na lei nos 6 municípios novos; glossário em Guarulhos/SP/Mogi) | GeoServer Guarulhos, GeoMogi, GeoSampa, SHP Mairiporã, DWG Cajamar, cartas georreferenciadas de PDF (Arujá, Itaquaquecetuba, Santa Isabel), APA Cantareira (Nazaré); cbre.zoneamento + cbre.zoneamento_parametros; glossário | mapa (por categoria) e nos popups/tabela de imóveis |
Grade hexagonal de 250 m sobre 9 municípios (73.115 células). Cada célula recebe um veto (zera) ou um score entre 0 e 1 pela média geométrica ponderada de cinco critérios, multiplicada por três descontos. Os pesos são declarados, não medidos — escolha nossa, a calibrar com a CBRE. Scripts: cbre/pipeline/80_score.sql, 81_glebas.sql, 82_cruzamentos.sql, 83_imoveis_candidatos.sql.
3. Fatores do motor multicritério (26 linhas de cbre.fatores, pipeline/85_fatores.sql)
Cada fator responde a um critério e vira favorabilidade 0-100 por célula de 250 m (ou por imóvel); vetos zeram a célula seja qual for o peso. Pesos são escolhidos pelo usuário na aba Motor do mapa; pesos e transformações são declarados, não medidos. A coluna “disponível” é o que a tabela diz hoje: “não (NULL)” = o fator não entra na combinação enquanto não tiver dado.
| # | Fator | Critério | Transformação (0-100) | Fonte | Veto | Disponível |
|---|---|---|---|---|---|---|
| 1 | Declividadedecl | terreno plano: menos terraplenagem | slope_mean <= 2 % -> 100; linear até 0 em 30 %: f = 100 x (30 - s) / 28; s >= 30 % -> 0 (veto) | Copernicus GLO-30 (modelo de superfície) + gdaldem slope, média por célula | declividade média >= 30 % | sim |
| 2 | Zoneamentozon | uso industrial/logístico (galpão, NR3) permitido | onde a lei foi lida (galpao_entra): sim -> 100; condicionado -> 60; conferir -> 50; não -> 10; proteção ambiental -> 0 (veto). Senão, pela categoria da carta: industrial, atividade econômica, ZEDE-3 -> 100; mista (NR3 permitido ou por projeto), ZA -> 70; ZPE -> 60; rural, ZTUR, célula sem polígono fora do urbano -> 50; ZOE, APA-ZEMR -> 30; ZEIS/AC, outra, residencial -> 10; proteção ambiental -> 0 (veto); demais lacunas -> 30 | Cartas oficiais dos 9 municípios (cbre.zoneamento, 29/08/2026): Guarulhos Lei 7.888/2021 (WFS GeoServer, Quadro 4C, confiança alta) · São Paulo Lei 18.177/2024 (WFS GeoSampa, alta) · Mogi Lei 7.200/2016 + ZEDE-3 (GeoMogi JSON, alta) · Mairiporã LC 438/2021 alt. LC 455/2022 e 484/2025 (SHP, alta) · Cajamar LC 234/2024 + LC 181/2019 (DWG oficial + memoriais OCR, alta/média/baixa) · Arujá LC 42/2019 (carta georreferenciada de PDF, 62 GCPs, RMSE 18,8 m, divisas ± 20-40 m: média; ZEIS/ZURA baixa) · Itaquaquecetuba LC 420/2025 (GeoPDF georreferenciado, alta/média) · Santa Isabel LC 184/2016 Mapa 32-A (carta georreferenciada de PDF via Wayback, alta/média) · Nazaré Paulista (sem lei de zoneamento: APA Sistema Cantareira Dec. 65.244/2020 via WMS GetFeatureInfo + perímetro Lei 495/99 + corredores LC 78/2023 + Distrito Industrial, alta/média/baixa). Categoria e sigla dominantes na célula (maior área); "galpão entra?" lido na lei (cbre.zoneamento_parametros, 88 zonas dos 6 municípios novos). Ressalva: georref_pdf e confiança baixa não decidem lote na linha de divisa — conferir na prefeitura | zona de proteção ambiental dominante | sim |
| 3 | Acesso ao GRU Cargogru | tempo de viagem até a âncora (configurável por cliente) | banda <= 15 min -> 100; 30 -> 80; 45 -> 50; 60 -> 30; além de 60 min -> 10 | Isócronas OSRM (OSM 27/08/2026, car.lua, fluxo livre) até o TECA do GRU; banda da célula | — | sim |
| 4 | Distância a rodovia principalrod | acesso rodoviário próximo | d <= 300 m -> 100; linear até 10 em 5 km: f = 100 - 90 x (d - 300) / 4700; d > 5 km -> 10 | OSM 27/08/2026 (motorway, trunk, primary), distancia do ponto interior da célula | — | sim |
| 5 | Disponibilidade da terradisp | terra livre (pasto, mosaico, solo exposto), não mata nem urbano consolidado | urbano >= 60 % -> 0 (veto); floresta >= 40 % -> 20; senão f = 100 x fração livre (pasto + agricultura/mosaico + não vegetado + mineração) | MapBiomas col. 10, 2024, fracoes da célula | urbano 2024 >= 60 % da célula | sim |
| 6 | Energiaener | rede de média tensão perto; subestação a até 5 km | rede MT dentro da célula -> 100; <= 300 m -> 70; <= 1 km -> 40; além -> 20; bonus +10 se subestação ONS a <= 5 km (teto 100) | BDGD ANEEL 2024 (rede MT, quantizada +-35 m) + subestacoes ONS SINDAT | — | sim |
| 7 | Água / APPagua | fora da faixa mínima de APP de curso d’água (30 m, Lei 12.651 art. 4 I a) | trecho de drenagem a <= 30 m -> 40; senão -> 100 | IBGE BC250 (drenagem 1:250.000) — piso: a drenagem 1:10.000 e mais densa | — | sim |
| 8 | Restrições legais/ambientaisrestr | sem restrição que impeça ou onere o licenciamento | TI, UC de proteção integral >= 10 % da célula, embargo IBAMA ou zona núcleo da RBCV -> 0 (veto); senão o MENOR entre: APRM/manancial -> 50; RBCV amortecimento -> 70; UC de uso sustentável (APA) >= 50 % -> 80; borda de UC-PI (< 10 %) -> 60; nada -> 100 | CNUC/MMA + SIMA-SP + SDU (UC), FUNAI (TI), IBAMA (embargo), APRM (Leis SP 15.913/2015 e 15.790/2015 + manancial Guarulhos), RBCV (zoneamento WMS) | terra indigena; UC-PI >= 10 %; embargo IBAMA; RBCV núcleo | sim |
| 9 | Inundação (oficial)varzea | fora da área suscetível/inundável oficial | pct_inundavel = fração da célula/imóvel em classe alta ou média (SGB), em mancha TR <= 25 anos (SP) ou em setor de risco R3/R4: >= 50 % -> 10; 10-50 % -> 40; > 0 e < 10 % -> 80; 0 -> 100. Sem cobertura oficial: proxy (várzea_proxy -> 30; senão 100), marcado | Cartas de suscetibilidade a inundações SGB/CPRM + IPT (RIGeo, 2014-2017; classes alta/média/baixa) nos 8 municípios; manchas de inundação TR 5/25/100 da PMSP (GeoSampa, 08/2026) em São Paulo; setores de risco de inundação R3/R4 (IG-SP 2020 e Defesa Civil 2026 em Guarulhos, SGB 2013-14, PMSP). Substitui o proxy GLO-30 + BC250 (cbre.hex_varzea), que fica marcado onde não há carta | — | sim |
| 10 | Pressão urbana 2014-2024press | vizinhança em urbanização (frente de expansão) | d = média da variação urbana 2014->2024 (pp); d <= 0 -> 0; linear até 100 em +20 pp: f = 100 x d / 0,20 | MapBiomas col. 10: variação da fração urbana na célula e nas 6 vizinhas | — | sim |
| 11 | População / densidade 2022dens | densidade moderada: mão de obra e clientes perto, sem conflito de vizinhança | hab/km2: 0 -> 40; linear até 100 em 500; 100 entre 500 e 2.000; linear até 20 em 10.000; >= 10.000 -> 20 | IBGE Censo 2022, setores censitários ponderados por area | — | sim |
| 12 | Segurança: roubo de cargaroubo | menos roubo de carga no entorno (trajeto), lendo também o caminhão levado que o BO classificou como roubo/furto de VEÍCULO | kernel gaussiano 2 km da densidade de BO (BO/km²/ano) das duas leituras somadas sem duplicar BO -> 100 x (1 - min(1, dens/P95)); P95 ampliado = 3.087 (a série só-declarada, P95 = 2,251, fica em roubo_carga_fav_declarado / f_roubo_declarado) | SSP-SP Transparência: (a) SPDadosCriminais NATUREZA_APURADA = ROUBO DE CARGA + (b) base "Veículos subtraídos" (DESCR_TIPO_VEICULO pesado/carga), 2024-01..2026-06 | — | sim |
| 13 | Tributação municipaltrib | menor ISS de armazenagem, menor IPTU de terreno, existência de incentivo logístico | 0,40 x ISS armazenagem + 0,30 x IPTU terreno + 0,30 x incentivo, min-max nos 9 municípios (fonte primária 9/9) | ISS/IPTU e incentivos por município (a ingerir; gancho) | — | sim |
| 14 | Renda IBGErenda | informativo: menor renda no entorno = menor custo de terra/mão de obra | percentil da renda mediana do setor (Censo 2022) -> 100 - percentil | Censo 2022, rendimento por setor (a ingerir; gancho) | — | sim |
| 15 | Reserva legal / APP do CARrlapp | maior fração do imóvel fora de RL e APP declaradas | 100 x (área útil fora de RL e APP) / área do imóvel (SICAR) | SICAR: RL e APP declaradas por imovel (a integrar; gancho) | — | sim |
| 16 | Polos geradores de tráfegopolos | poucos polos geradores de tráfego perto (galpão pesado quer via livre) | d = distância ao polo mais próximo: d <= 200 m -> 20; linear até 100 em 2 km: f = 20 + 80 x (d - 200) / 1800; d >= 2 km -> 100; menos 8 por polo de grande porte e 4 por escola a <= 1 km; piso 0 | OSM 27/08/2026 (shopping, hospital, escola, universidade, estádio, terminal de ônibus, estação, terminal aeroportuário); 97_polos_se_estoque.sql | — | sim |
| 17 | Subestação de distribuiçãose | subestação da distribuidora perto (ponto de conexão em MT/AT) | d = distância à subestação mais próxima: d <= 2 km -> 100; linear até 20 em 15 km: f = 100 - 80 x (d - 2000) / 13000; d > 15 km -> 20 | ANEEL BDGD 2024-12-31 V11 (EDP SP 391 + Enel SP 390), camadas SUB (POS PD/O/T) + UNTRAT (MVA); 97_polos_se_estoque.sql | — | sim |
| 18 | Estoque logístico existentecluster | cluster logístico maduro no entorno (mercado validado, mão de obra, serviços) | A = m2 de galpão a <= 2 km; N = condomínios (carteira + galpão >= 20.000 m2) a <= 5 km: f = 30 + 40 x min(1, A / 50.000) + 30 x min(1, N / 5); sem saturação penalizada | OSM 27/08/2026 (building=warehouse/industrial > 5.000 m2) + carteiras com coordenada em cbre.anuncios (Herzog, LOG, Bresco); 97_polos_se_estoque.sql | — | sim |
| 19 | Mineração (ANM + Sentinel)mine | sem lavra ativa nem sinal de mineração no imóvel | por imóvel (veredito): veto_mineracao -> 0 (veto: sai do ranking); verificar_mineracao -> 20; atencao_lavra -> 50; atencao_anm -> 80; demais (parado_confirmado, parado_sem_sinal_mineracao, sem_sinal) -> 100. Por célula (só ANM, sem Sentinel): polígono com direito de lavra cobrindo >= 5 % da célula -> 0; pesquisa/requerimento/disponibilidade >= 5 % -> 80; sem processo -> 100 | ANM SIGMINE (public.amc_anm_sigmine, processos na área de estudo; fases com direito de lavra = concessão de lavra, licenciamento, registro de extração, lavra garimpeira) + série mensal Sentinel-2 2020-01..2026-08 por imóvel (cbre.car_s2_mensal: fração de solo exposto NDVI < 0,20, sazonalidade úmida-seca) + MapBiomas classe 30; veredito por imóvel em cbre.imovel_mineracao (98_mineracao_dinamica.sql). Nota: veto = direito de lavra + solo exposto persistente sem sazonalidade; processo ANM ≠ lavra; sobreposição ≠ irregularidade | imóvel com veredito veto_mineracao (direito de lavra ANM + solo exposto persistente sem sazonalidade) | sim |
| 20 | Caminho de conversão (rural → lote industrial)conv | menor caminho jurídico-urbanístico até o lote industrial: pronto (já em zona industrial dentro do perímetro urbano) > urbano condicionado (EIV/alvará) > expansão (parcelamento Lei 6.766 + INCRA + GRAPROHAB) > rural fora do perímetro (lei de perímetro) > veto | por imóvel (caminho): pronto -> 100; urbano_condicionado -> 75; expansao -> 40; rural_fora_perimetro -> 15; veto (UC-PI, mineração ativa, inundação >= 50 %, RL averbada >= 40 %) -> 0. Sem valor por célula | cbre.imovel_perfil_conversao (pipeline/9x_perfil_conversao_20_perfil.sql; regras em cbre.conversao_regras): SICAR (status, condição, módulo fiscal, RL averbada/aprovada/proposta, APP, área consolidada, vegetação nativa, servidão) + SIGEF (parcela certificada e número de matrícula) + macrozoneamento do PD (nível 1) + zona de uso (nível 2, galpão entra?) + APRM (subárea) + inundação oficial + mineração (ANM + Sentinel) + rede MT BDGD | imóvel com caminho = veto (UC-PI; veredito veto_mineracao; inundação oficial >= 50 %; RL averbada >= 40 % da área) | sim |
| 21 | Acesso a Viracopos (VCP)vcp | tempo de viagem até o segundo terminal de carga aérea do estado (alternativa ao GRU e porta do eixo Campinas) | t <= 60 min -> 100; linear até 20 em 150 min: f = 100 - 80 x (t - 60) / 90; t >= 150 min -> 20; sem rota -> sem dado | Roteamento OSRM (OSM 27/08/2026, car.lua, fluxo livre) até o Terminal de Cargas do Aeroporto de Viracopos, Campinas (-23,00693/-47,14454, aeroway=terminal no OSM); grafo ampliado rmsp_camp_santos (cbre.acesso_polos, polo vcp_carga). ROTEADO, não estimado | — | sim |
| 22 | Acesso ao Porto de Santossantos | tempo de viagem até o maior porto do país (perfil exportador/importador) | t <= 60 min -> 100; linear até 20 em 150 min: f = 100 - 80 x (t - 60) / 90; t >= 150 min -> 20; sem rota -> sem dado. Mesma régua do VCP para que os dois polos distantes sejam comparáveis | Roteamento OSRM (OSM 27/08/2026, car.lua, fluxo livre) até o MENOR tempo entre três portões de contêiner verificados no OSM: BTP - Brasil Terminal Portuário (-23,92355/-46,35186), Tecon Santos - Santos Brasil (-23,96110/-46,29057) e DP World Santos (-23,92337/-46,32104); grafo ampliado rmsp_camp_santos (cbre.acesso_polos, polo porto_santos). ROTEADO, não estimado | — | sim |
| 23 | Acesso ao Rodoanel (SP-021)rodoanel | entrar no anel sem atravessar a cidade: é o acesso que liga o sítio a todos os outros polos | t <= 10 min -> 100; linear até 20 em 60 min: f = 100 - 80 x (t - 10) / 50; t >= 60 min -> 20; sem rota -> sem dado | Roteamento OSRM (OSM 27/08/2026, car.lua, fluxo livre) até o acesso mais próximo entre 30 nós highway=motorway_junction a <= 150 m da via Rodoanel Mário Covas, deduplicados a 300 m (cbre.polos_logisticos_pontos); cbre.acesso_polos, polo rodoanel. ROTEADO. Ressalva: o Trecho Norte está como highway=construction no OSM (42,4 km) — seus acessos não existem no grafo e o tempo pelo vetor norte está SUPERESTIMADO | — | sim |
| 24 | Raio 30 / centro de São Paulocentro | proximidade do consumidor: dentro do Raio 30 da CBRE (last mile), depois Raio 60 | d <= 30 km -> 100 (Raio 30); 30-60 km: f = 100 - 50 x (d - 30) / 30 (Raio 60 = 50); 60-90 km: f = 50 - 30 x (d - 60) / 30; d > 90 km -> 20; sem rota -> sem dado | Roteamento OSRM (OSM 27/08/2026, car.lua) até a Praça da Sé (-23,5505/-46,6343), DISTÂNCIA pela via (km) — o "Raio 30" da CBRE é um anel de distância, não de tempo; cbre.acesso_polos, polo centro_sp | — | sim |
| 25 | Preço pedido × banda de referênciapreco | preço pedido barato em relação ao que se transaciona no mesmo recorte: abaixo da banda é melhor, dentro da banda é neutro-bom, muito acima é ruim | por imóvel (nunca por célula). p = preço pedido R$/m²; banda = p25 · mediana · p75 do próprio recorte. Âncoras lineares: p ≤ p25 -> 100; p = mediana -> 75; p = p75 -> 60; p = 2×p75 -> 20; p ≥ 4×p75 -> 0. SEM PREÇO PEDIDO ou SEM BANDA -> 50 (NEUTRO, declarado: alvo sem preço não é punido). Para o imóvel do CAR, p = mediana do R$/m² pedido dos anúncios cujo ponto cai DENTRO do imóvel em precisão de lote ou quadra (centroide de bairro nunca conta). REGRA DURA: quando a única banda do alvo é o VTN do INCRA, o fator é NEUTRO (50) e não é calculado — o VTN é referência tributária de terra nua e fica uma a duas ordens de grandeza abaixo do mercado na borda da metrópole; usá-lo como denominador zeraria todo alvo rural com preço, o que seria punir o alvo pela fonte e não pelo preço (medido: os 20 imóveis rurais com anúncio dentro iam todos a 0) | cbre.valor_referencia_alvo (research/33_VALOR_REFERENCIA.md): preço PEDIDO do anúncio (cbre.mercado_il, varredura própria) contra a banda de referência de cbre.valor_referencia — ITBI de São Paulo (Prefeitura/SF, transações com imposto pago), Planta Genérica de Valores de Guarulhos, valor declarado de ativo de FII (B3/FNET), VTN do INCRA e arrematação em leilão. A banda usada é a do nível mais fino disponível para o alvo: zona > macrozona > porte (lote ≥ 1.000 m²) > município > RMSP, gravado em banda_nivel | — | sim |
| 26 | Comunidade urbana e ZEIS (sobreposição)comun | terreno sem sobreposição que prenda a destinação do solo (ZEIS) nem cuja posse já esteja constituída por ocupação consolidada reconhecida pelo Censo ou pelo cadastro municipal | Duas medidas, ambas de SOBREPOSIÇÃO, e o fator é o MENOR das duas. (1) OCUPAÇÃO: pct = fração da área do alvo dentro de comunidade urbana (união do IBGE 2022 com o cadastro municipal); f = 100 × (1 − mín(1; pct ÷ 0,50)) — 0 % → 100 · 10 % → 80 · 20 % → 60 · 35 % → 30 · ≥ 50 % → 0. Alvo pontual (anúncio, lote publicado como ponto): dentro → 0, fora → 100, sem fração. (2) ZEIS: f = 100 − (100 − f_regra) × mín(1; pct_zeis ÷ 0,50), onde f_regra vem de cbre.com_zeis_regra, lida na lei do município: São Paulo ZEIS 1-4 → 0 (PDE art. 55 e Quadro 4: mínimo de 60 % da área construída total para HIS 1 e no máximo 20 % para HMP mais todos os demais usos, em terreno acima de 1.000 m²; o galpão é uso PERMITIDO, nR3-6, mas cabe dentro dos 20 %) · São Paulo ZEIS 5 → 20 · Guarulhos ZEIS 1 → 60 (Lei 7.888/2021 art. 144: vale a zona de uso SOB a ZEIS até sair legislação específica, logo a ZEIS 1 hoje não decide o galpão) · Guarulhos ZEIS 2 e ZEIS G → 0 (art. 145 VI: HIS ≥ 50 %, uso não residencial ≤ 20 % e só nas categorias NR1, NR2 e I1-A; NR3, a faixa do galpão, não consta) · Mogi, Itaquaquecetuba, Mairiporã, Santa Isabel e Arujá → 50 NEUTRO, declarado: o polígono é oficial mas o teto de área construída por uso ainda não foi lido em fonte primária. SEM SOBREPOSIÇÃO → 100. ⛔ A PROXIMIDADE NÃO ENTRA NO FATOR: distância à comunidade mais próxima e população no entorno (500 m / 1 km / 2 km) são MEDIDAS e mostradas, e não pontuam — proximidade é ambígua e lê-se também como oferta de mão de obra, que operador logístico procura. ⛔ Esta camada não mede segurança: segurança é o fator 12, medido de boletim de ocorrência da SSP-SP. | IBGE, Favelas e Comunidades Urbanas do Censo 2022 (polígonos nacionais, ftp.ibge.gov.br) + cadastro municipal onde ele existe: São Paulo (SEHAB/Habitasampa — favela, núcleo urbanizado e loteamento irregular, 06/2026, dados abertos CC-Zero) e Guarulhos (Secretaria de Habitação, geocorppg:tm_sh_zeis). ZEIS: carta de zoneamento vetorizada de São Paulo (Lei 18.177/2024), Mairiporã, Santa Isabel e Arujá + camada própria de Guarulhos (Lei 7.730/2019), GeoMogi (Mogi das Cruzes) e mapa oficial de Itaquaquecetuba (LC 399/2024). Efeito jurídico de cada ZEIS em cbre.com_zeis_regra, lido artigo por artigo na lei municipal. Tabelas: cbre.com_favela, cbre.com_zeis, cbre.hex_comunidade, cbre.com_alvo (research/38_COMUNIDADES.md) | — | sim |
4. Vetos (qualquer um zera a célula)
| Veto | Regra | Fonte | Células vetadas em Guarulhos (de 5.888) |
|---|---|---|---|
| UC de proteção integral | qualquer sobreposição | CNUC/MMA, SIMA-SP, SDU Guarulhos | 1.743 |
| Terra indígena | qualquer sobreposição | FUNAI | 0 |
| Embargo IBAMA | ponto ou polígono na célula | IBAMA (tabela limpa) | 12 |
| Zona de proteção ambiental | categoria dominante da carta (9 municípios) | Lei 7.888/2021 (Guarulhos), Lei 18.177/2024 (SP), Lei 7.200/2016 (Mogi), LC 438/2021 (Mairiporã), LC 234/2024 (Cajamar), LC 42/2019 (Arujá), LC 420/2025 (Itaquaquecetuba), LC 184/2016 (Santa Isabel), APA Cantareira Dec. 65.244/2020 (Nazaré Paulista) | 848 |
| Mineração ativa (por imóvel) | veredito veto_mineracao: direito de lavra ANM (ou MapBiomas mineração > 10 %) + solo exposto persistente (mediana > 30 % dos pixels) sem sazonalidade (< 0,08) na série mensal Sentinel-2 2020–2026 | ANM SIGMINE + Sentinel-2 + MapBiomas (98_mineracao_dinamica.sql, cbre.imovel_mineracao) | veto por imóvel, não por célula (ver seção 3) |
| Urbano consolidado | urbano 2024 ≥ 60 % da célula | MapBiomas col. 10 | 2.544 |
| Declividade | média ≥ 30 % | Copernicus GLO-30 + gdaldem slope | 24 |
| Uso consolidado | aeroporto, militar, golfe, cemitério… (OSM) | OpenStreetMap 27/08/2026 | aeroporto 190 · militar 22 · golfe 6 |
Resultado em Guarulhos: 5.400 células vetadas, 336 com score ≥ 0,45.
4b. Perfil de conversão do CAR: caminho até o lote (cbre.conversao_regras, research/27)
Caminho jurídico-urbanístico mais curto de cada imóvel CAR ≥ 5 ha até o lote industrial (pronto · urbano condicionado · expansão · rural fora do perímetro · veto), com prazo em meses declarado a partir de prazos legais e prática (não há série medida), obstáculos e score de conversão (pesos declarados, não calibrados). Perímetro urbano inferido (macrozona do PD + zona de uso); SIGEF traz só nº de parcelas/matrículas, nunca o titular. Fator 20 do Motor (conv, só por imóvel). Não é parecer jurídico nem certidão. Regras abaixo tal qual estão na tabela, com a fonte legal linkada.
Contagem por caminho
| caminho | 4.346 imóveis CAR ≥ 5 ha | ranqueados pelo Motor | Guarulhos (ranqueados) |
|---|---|---|---|
| pronto | 141 | 71 | 0 |
| urbano condicionado | 991 | 340 | 19 |
| expansão | 344 | 1 | 0 |
| rural fora do perímetro | 1902 | 182 | 0 |
| veto | 241 | 7 | 0 |
Regras (28 linhas de cbre.conversao_regras, renderizadas tal qual)
| # | grupo | regra | condição | prazo (meses, DECLARADO) | fonte legal | procedência |
|---|---|---|---|---|---|---|
| 1 | caminho | veto | UC de protecao integral dominante (em_uc_pi) OU mineracao ativa (veredito veto_mineracao: direito de lavra ANM + solo exposto persistente) OU inundacao oficial >= 50 % OU reserva legal AVERBADA >= 40 % da area | — | SNUC Lei 9.985/2000 art. 7 §1 (uso indireto em UC-PI); Codigo de Mineracao DL 227/1967 arts. 42-43 (titulo minerario prevalece); Lei 12.651/2012 art. 18 (RL averbada so se desonera com aprovacao do orgao ambiental) | DECLARADO |
| 2 | caminho | pronto | Macrozona do PD urbana consolidada ou de atividade economica (nivel 1 = URB_CONSOLIDADA / IND_ATIV_ECON) E zona de uso (nivel 2) industrial/atividade economica ou galpao_entra = sim, E galpao_entra <> nao, E sem RL averbada relevante (< 10 %), E sem sinal de mineracao (veredito fora de veto/verificar/atencao_lavra), E inundacao oficial < 10 %, E CAR nao cancelado/suspenso | [3,7) | Lei 6.766/1979 arts. 3, 16 e 18; LUOS municipal (Guarulhos Lei 7.888/2021 Quadro 4C; SP Lei 18.177/2024; Mogi Lei 7.200/2016) | DECLARADO (prazo: LITERATURA — Lei 6.766/1979 art. 16: 90 dias para o municipio aprovar; art. 18: registro em 180 dias) |
| 3 | caminho | urbano_condicionado | Macrozona urbana (nivel 1 URB_CONSOLIDADA / IND_ATIV_ECON / ESPECIAL) mas: zona mista/outra/residencial, ou galpao_entra condicionado/conferir/nao, ou RL averbada 10-40 %, ou inundacao 10-50 %, ou sinal de mineracao a verificar. Precisa alvara de uso condicionado / EIV e, se a zona nao permite NR3, alteracao de zoneamento | [6,13) | Lei 10.257/2001 arts. 36-38; Lei 6.766/1979 art. 16; LUOS municipal | DECLARADO (prazo: LITERATURA — Estatuto da Cidade arts. 36-38 (EIV); Lei 6.766 art. 16) |
| 4 | caminho | expansao | Macrozona urbana de expansao/qualificacao (nivel 1 URB_EXPANSAO_QUALIF), ou zona rural (nivel 2) dentro de macrozona urbana. Precisa: diretrizes urbanisticas + parcelamento (Lei 6.766 art. 3: so em zona urbana, de expansao urbana ou de urbanizacao especifica definida no PD), audiencia previa do INCRA e do orgao metropolitano (Lei 6.766 art. 53 e art. 13 par. unico) e averbacao na matricula, Declaracao de NAO ENQUADRAMENTO no GRAPROHAB (Dec. SP 66.960/2022 art. 8: analise obrigatoria so para parcelamento HABITACIONAL; industrial/logistico = aprovacao municipal + CETESB; research/26 §4.1), ITR -> IPTU (CTN art. 32; STJ Tema 174: ITR persiste enquanto houver exploracao rural = item de custo, nao bloqueio), RL compensada/relocada e extinta so no registro do parcelamento (Lei 12.651 art. 19) | [18,37) | research/26_CBRE_TERRENOS_COMO_OPERAM.md §4; Lei 6.766/1979 arts. 3, 6-9, 13, 53; Lei 5.868/1972 arts. 6 e 8; Decreto SP 66.960/2022 art. 8 (revogou o Dec. 52.053/2007); CTN art. 32 §1; DL 57/1966 art. 15; STJ REsp 1.112.646 (repetitivo: destinacao decide ITR x IPTU); Lei 12.651/2012 art. 19 | DECLARADO (prazo: LITERATURA — Dec. 66.960/2022: nao enquadramento em 10 dias; Lei 6.766 art. 16: 90 d; art. 18: registro 180 d; INCRA e CETESB sem prazo verificado; research/26 §4.2: marcos verificados somam 5-9 meses no melhor caso, o resto e INCRA + CETESB + ciclos de exigencia) |
| 5 | caminho | rural_fora_perimetro | Macrozona rural ou de protecao (nivel 1 RURAL / PROTECAO sem veto) — EXCETO Guarulhos: Lei 7.888/2021 art. 5 declara urbano todo o territorio e o PD 7.730/2019 nao tem macrozona rural (research/26 §4.0), logo nenhum imovel de Guarulhos cai aqui (o CAR de tipificacao rural la e terra urbana com cadastro rural: caminho expansao ou urbano_condicionado pela zona; INCRA e ITR->IPTU seguem valendo para o cadastro). Precisa lei municipal especifica de alteracao do perimetro urbano com projeto especifico (Estatuto da Cidade art. 42-B) + tudo da expansao. "inviavel no ciclo" quando a proxima revisao obrigatoria do PD (ano da lei + 10, art. 40 §3) cai depois de 2029, ou o PD esta sem anexo/delimitacao publicada (confianca baixa) | [36,61) | research/26 §4.0-4.1; Lei 10.257/2001 arts. 40 §3 e 42-B; Lei 6.766/1979 art. 3; Guarulhos Lei 7.888/2021 art. 5 | DECLARADO (prazo: LITERATURA — Estatuto da Cidade art. 40 §3 (revisao decenal) e 42-B; historico de revisao de PD na RMSP 2-4 anos) |
| 6 | perímetro | dentro_perimetro_urbano | Composicao de research/25 (nivel 2 prevalece dentro do seu perimetro): zona de uso (nivel 2) dominante de categoria industrial/atividade_economica/mista/outra/residencial/especial = urbano (fonte nivel2); zona rural (nivel 2) dentro de macrozona urbana (nivel 1 URB_CONSOLIDADA/IND_ATIV_ECON/URB_EXPANSAO_QUALIF) = expansao; zona de protecao_ambiental (nivel 2) dentro de macrozona urbana = urbano com obstaculo zona_protecao_ambiental; senao vale o nivel 1 (macrozona do PD dominante por area): URB_CONSOLIDADA/IND_ATIV_ECON = urbano, URB_EXPANSAO_QUALIF = expansao, RURAL = rural, PROTECAO = protecao, ESPECIAL = especial; sem nenhum dos dois: rural = rural, protecao_ambiental = protecao. Macrozona PROTECAO sob zona urbana de nivel 2 vira obstaculo macrozona_protecao (o PD tem de ser compativel). Guarulhos: perimetro nunca e rural/protecao (Lei 7.888/2021 art. 5, research/26 §4.0) — MAUC/MAAP sem zona urbana de nivel 2 viram expansao (perimetro_fonte = lei_7888_art5). Aruja: o perimetro urbano da LC 42/2019 (cbre.aruja_perimetro_urbano_lc42) e gravado a parte (perim_lei_pct) | — | Estatuto da Cidade arts. 40-42; Lei 6.766 art. 3 | DECLARADO |
| 7 | obstáculo | rl_averbada | RL averbada (SICAR has_rl_averbada) com pct_rl >= 10 %: obstaculo a compensar/relocar com o orgao ambiental (Lei 12.651 art. 18 §4 e art. 19: a RL so se extingue no registro do parcelamento; research/26 §4.1); >= 40 % averbada = veto no ciclo | — | Lei 12.651/2012 arts. 18-19 | DECLARADO |
| 8 | obstáculo | rl_declarada | RL declarada (proposta/aprovada) >= 20 % da area: a RL em area que passa a urbana so e liberada apos registro do parcelamento (art. 19); ate la limita a area util | — | Lei 12.651/2012 art. 19 | DECLARADO |
| 9 | obstáculo | app | APP declarada >= 15 % da area (uniao RL+APP em cbre.imovel_rl_app): intocavel em zona urbana ou rural (art. 4 e art. 8) | — | Lei 12.651/2012 arts. 4 e 8 | DECLARADO |
| 10 | obstáculo | aprm | Imovel em APRM: a lei aplicavel esta em aprm_lei — Lei 15.913/2015 (ATC: Biritiba, Mogi, Paraibuna, Ribeirao Pires, Salesopolis, Suzano; NAO cobre Guarulhos, art. 1 §2), Lei 15.790/2015 (Alto Juquery), e em Guarulhos Lei 898/1975 art. 2 II e VI + Lei 1.172/1976 (Cabucu e Tanque Grande) + APA municipal Lei 6.798/2010 (research/26 §4.1). Nenhuma delas e veto aqui; subareas SUC/SUCt/SOD/SUICt = onera (obstaculo aprm); SCA/SBD/SBD1-3/SER = regime de baixa densidade / conservacao / recuperacao (obstaculo aprm_baixa_densidade: lote minimo grande, uso industrial so conforme a lei especifica; impede o caminho pronto). NAO e veto: a Area de Restricao a Ocupacao (ARO) das leis nao esta na camada carregada; leitura artigo por artigo e pendencia | — | Lei SP 15.913/2015; Lei SP 15.790/2015; Lei SP 9.866/1997 | DECLARADO |
| 11 | obstáculo | inundacao | pct_inundavel oficial (cbre.imovel_inundacao, research/22) >= 10 %: obra de drenagem/aterro e restricao de parcelamento (Lei 6.766 art. 3 par. unico I); >= 50 % = veto | — | Lei 6.766/1979 art. 3 par. unico | DECLARADO |
| 12 | obstáculo | mineracao | veredito de cbre.imovel_mineracao (research/17): verificar_mineracao / atencao_lavra / atencao_anm = obstaculo; veto_mineracao = veto (regra 1). Processo ANM nao e lavra; sobreposicao nao e irregularidade | — | DL 227/1967; ANM SIGMINE | DECLARADO |
| 13 | obstáculo | rbcv_nucleo | Imovel na Zona Nucleo da Reserva da Biosfera do Cinturao Verde (cbre.imoveis_candidatos.rbcv_classe): anuencia do gestor; amortecimento e transicao nao contam como obstaculo (ja entram no fator restr do Motor) | — | Lei 9.985/2000 art. 15; RBCV (UNESCO/IF-SP) | DECLARADO |
| 14 | obstáculo | sem_sigef | Imovel sem parcela SIGEF certificada cobrindo >= 50 % da area: georreferenciamento e certificacao INCRA sao pre-requisito de qualquer desmembramento/transferencia de imovel rural (Lei 10.267/2001; Dec. 4.449/2002 art. 10 — obrigatorio para todo imovel desde 22/11/2025) | — | Lei 10.267/2001 art. 3; Decreto 4.449/2002 art. 10 | DECLARADO |
| 15 | obstáculo | multi_matricula | Mais de uma matricula certificada dentro do imovel CAR (SIGEF): unificacao ou negociacao por partes (Lei 6.015/1973 art. 234-235) | — | Lei 6.015/1973 arts. 234-235 | DECLARADO |
| 16 | obstáculo | car_cancelado_suspenso | ind_status do CAR = CA (cancelado) ou SU (suspenso): regularizar o cadastro antes de qualquer ato (Decreto 7.830/2012; IN MMA 2/2014) | — | Decreto 7.830/2012 | DECLARADO |
| 17 | obstáculo | servidao | Servidao declarada no CAR (linha de transmissao, duto, estrada): faixa non aedificandi (Lei 6.766 art. 4 III-A: 15 m de cada lado de rodovia/ferrovia/duto) | — | Lei 6.766/1979 art. 4 III-A | DECLARADO |
| 18 | obstáculo | zona_nao_permite_nr3 | Zona de uso (nivel 2) com galpao_entra = nao: exige alteracao da LUOS ou projeto especial | — | LUOS municipal (cbre.zoneamento_parametros) | DECLARADO |
| 19 | obstáculo | macrozona_protecao | Macrozona de protecao ambiental do PD (nivel 1 PROTECAO) sem veto de UC-PI: conversao depende de compatibilizacao/alteracao do PD (em Guarulhos a MAAP cobre ZUD6 do Rodoanel: LUOS permite NR3, PD protege — conferir na SDU) | — | Estatuto da Cidade art. 40 | DECLARADO |
| 20 | score | score_conversao | 0-100 = 0,55 x base do caminho (pronto 100 / urbano_condicionado 75 / expansao 40 / rural_fora_perimetro 15 / veto 0) + 0,15 x area util (100 x max(0, 1 - pct_rl_app_uniao / 0,5)) + 0,10 x titulo (SIGEF certificado >= 50 % = 100; alguma parcela = 50; nenhuma = 20) + 0,10 x inundacao (0 % = 100; < 10 % = 80; 10-50 % = 40; >= 50 % = 10) + 0,10 x acesso GRU (banda <= 15 min 100; 30 = 80; 45 = 50; 60 = 30; alem = 10) - 4 por obstaculo; piso 0; veto = 0. rank_conversao so entre os imoveis com rank_geral (617) | — | pesos declarados nesta tabela; nao calibrados | DECLARADO |
| 21 | motor | conv | Fator 20 do Motor (cbre.fatores): transformacao pronto 100 · urbano_condicionado 75 · expansao 40 · rural_fora_perimetro 15 · veto 0 (so por imovel; celula nao tem) | — | pipeline/9x_perfil_conversao_30_motor.sql | DECLARADO |
| 22 | tamanho fiscal | estrato_fundiario | minifundio < 1 MF; pequena 1-4 MF; media 4-15 MF; grande > 15 MF (Lei 8.629/1993 art. 4; MF do municipio pelo INCRA). Fonte: SICAR (estrato_fundiario, mod_fiscal) | — | Lei 8.629/1993 art. 4 | DECLARADO |
| 23 | obstáculo | zona_protecao_ambiental | Zona de uso (nivel 2) de protecao ambiental (APA-ZEPAM, ZPDS, ZEPAM etc.) dominante no imovel: uso industrial vedado ou excepcional; exige alteracao de zoneamento | — | LUOS municipal | DECLARADO |
| 24 | obstáculo | aprm_baixa_densidade | Subarea de APRM de baixa densidade/conservacao/recuperacao dominante (ATC: SCA, SBD; AJ: SBD1-3, SER): lote minimo grande e uso industrial so conforme a lei especifica; impede o caminho pronto | — | Lei SP 15.913/2015; Lei SP 15.790/2015 | DECLARADO |
| 25 | CAR | area_consolidada | SICAR-SP nao exporta o tema "area consolidada" (4 de 4.346 imoveis com valor). pct_consolidada fica como declarado (quase sempre 0 = nao declarado) e o campo util e pct_antropizado_2014 (proxy MapBiomas col. 10: 1 - floresta - agua - campo natural em 2014, ano mais antigo da serie carregada; piso de ocupacao antropica antiga, nao a data legal de 22/07/2008) | — | Lei 12.651/2012 art. 3 IV e art. 61-A | DECLARADO (proxy) |
| 26 | negocio | perfil_negocio | Fluxo real da CBRE (research/26 §5-6): mandato do proprietario -> estudo de vocacao -> venda organizada ou permuta. Sugestao DECLARADA: caminho pronto/urbano_condicionado e area >= 10 ha e galpao_potencial >= 30.000 m2 -> bts_ocupante; pronto/urbano_condicionado demais -> venda_organizada; expansao/rural_fora_perimetro e area >= 20 ha -> permuta_desenvolvedor (o desenvolvedor carrega o prazo de aprovacao); expansao/rural menores -> venda_organizada; veto -> nenhum | — | research/26_CBRE_TERRENOS_COMO_OPERAM.md §5-6 | DECLARADO |
| 27 | negocio | brownfield | Uso industrial/mineral anterior no imovel: OSM landuse industrial/brownfield/quarry/construction >= 5 % da area, ou edificio industrial OSM >= 2 %, ou MapBiomas classe 30 (mineracao) >= 5 % em qualquer ano 2014-2024. Implica etapa de diligencia de area contaminada na CETESB (DD / Lei SP 13.577/2009) antes da compra | — | research/26 §4.1-4.3; Lei SP 13.577/2009 | DECLARADO |
| 28 | custo | itr_iptu | STJ Tema 174 / DL 57/1966 art. 15: imovel em zona urbana com exploracao rural comprovada segue no ITR; a mudanca para IPTU e consequencia da destinacao, nao pre-requisito — item de custo, nunca bloqueio | — | research/26 §4.1; CTN art. 32; STJ Tema 174 | DECLARADO |
5. Zoneamento em duas camadas (macrozoneamento do Plano Diretor × zona de uso da LUOS)
Modelo em duas camadas (leitura de Carlos, Novaterra, 29/08/2026 17:56)
Feedback verbatim: "nao tem padrao de legislacao nem de nomenclatura; ZUD significa coisas diferentes por municipio. Primeira
alternativa: homogeneizar usando so os PLANOS DIRETORES (macrozoneamento, menos detalhado) e, numa outra camada sempre mais
heterogenea e menos confiavel, as LEIS DE USO DO SOLO (detalhamento)". Medicao nos 9 municipios: research/25_MACROZONEAMENTO_DUAS_CAMADAS.md;
carga: pipeline/zon_catalogo/20_macrozoneamento_cbre.sql -> cbre.macrozoneamento (47 macrozonas, 9 municipios) + cbre.macrozoneamento_qa.
11.1 Camada 1 — MACROZONEAMENTO do Plano Diretor (zon.macrozona, nivel = 1)
- Base legal: Estatuto da Cidade (Lei 10.257/2001) arts. 40-42 — PD obrigatorio para municipio > 20 mil hab., integrantes de RM/aglomeracao, areas de interesse turistico ou de empreendimento de impacto; revisao pelo menos a cada 10 anos (art. 40 par. 3). O macrozoneamento nao e exigido nominalmente pela lei federal, mas e a peca cartografica que praticamente todo PD traz (Res. ConCidades 34/2005 art. 3 e 4 recomenda "macrozoneamento" como conteudo minimo). E o unico instrumento que existe nos 9 municipios (Nazare Paulista, sem LUOS, tem PD).
- Taxonomia canonica pequena e estavel (6 classes) —
zon.domdominioclasse_macro: | classe | o que e | exemplos lidos | |---|---|---| |URB_CONSOLIDADA| area urbana com infraestrutura; consolidada/adensavel | MUC Guarulhos e SP; MCUA Itaqua; ZOUR Nazare | |URB_EXPANSAO_QUALIF| urbana a qualificar, expandir, reestruturar ou conter; periurbana | MQU/MRVU/MRVURA/MCQUA SP; MOP Mogi; MEQU Mairipora; ZUI Cajamar | |IND_ATIV_ECON| macrozona cuja vocacao declarada e industria/logistica/atividade economica | MD Guarulhos; MEM SP; MDE Santa Isabel; ZUPI Cajamar | |RURAL| rural / producao / contencao da urbanizacao | MIPR/MIPRM/MCU Mogi; MCUUS SP; MOD Santa Isabel; ZR Cajamar | |PROTECAO| protecao ambiental, mananciais, UC e amortecimento | MAAP Guarulhos; MPEN SP; MPI/MPRA Mairipora; MRO Santa Isabel | |ESPECIAL| aeroporto, mineracao, ZEIS, projeto especifico quando aparecem NO NIVEL DO PD | SEM Santa Isabel; ZMI Cajamar | - Mapeamento por municipio em
zon.mapa_macro(macrozona local -> classe, comambiguidadetextual econfianca). Regra: a classe e lida no artigo que define a macrozona (ex.: Guarulhos art. 18 "uso predominantemente industrial, comercial e de servicos" -> IND_ATIV_ECON), nunca no nome. Quando o artigo mistura duas vocacoes, escolhe-se a dominante e aambiguidadefica registrada (25 de 47 macrozonas medidas tem ambiguidade). metodoproprio do nivel 1:wfs | app_json | kmz | georref_pdf | mesmo_instrumento(PD que ja e a LUOS: Cajamar)| derivado_nivel2(macrozona reconstruida pela tabela zona->macrozona da propria lei: Itaqua)| proxy_texto(macrozona so em texto, geometria por perimetro/APA: Aruja, Nazare).proxy_texto= confianca baixa por definicao e nunca vira "sim" no motor.
11.2 Camada 2 — ZONA DE USO da LUOS/LPUOS (zon.zona, nivel = 2)
E o que o catalogo ja modela (secoes 2-3): sigla local + 8 categorias + uso_logistico ("galpao entra?"). Muda so isto:
- zon.zona.nivel smallint NOT NULL DEFAULT 2 e zon.zona.macrozona_id (FK opcional para zon.macrozona: a macrozona que a contem, quando a lei diz).
- Confianca default do nivel 2 e explicitamente menor: confianca_param e confianca_geom nascem media (nunca alta sem revisor humano), porque
a LUOS muda mais (Aruja em revisao, Mairipora em revisao, Itaqua LC 420 de 12/2025, SP 18.177 de 2024) e a nomenclatura nao e comparavel entre cidades.
- A sigla local NUNCA e traduzida por dicionario global (ZUD = "uso diversificado" misto em Guarulhos, "uso industrial diversificado" em Itaqua,
"usos diversificados" = atividade economica em Mairipora e Santa Isabel — 4 significados na mesma sigla, medidos).
11.3 Regras de composicao
- Ausencia do nivel 2 (municipio sem LUOS ou sem carta): o catalogo entrega o nivel 1 com
nivel=1na saida euso_logistico = conferir(a classe IND_ATIV_ECON do PD e vocacao declarada, nao permissao de uso). Nunca inventar zona. - Conflito: dentro do perimetro de uma zona do nivel 2 vale o nivel 2; fora dele (buracos, area nao zoneada, municipio sem LUOS) vale o nivel 1.
O achatamento e a view
zon.v_zon_efetivo(nivel 2 se existe, senao nivel 1), nunca tabela-fonte. - Motor (fator
zondo score,pipeline/85_fatores.sql): lev_zon_efetivo; senivel = 1, o fator recebe desconto 0,8 (declarado), e IND_ATIV_ECON do nivel 1 vale comocondicionado, nuncasim. Seconfianca = baixa(proxy_texto), desconto adicional 0,5 (mesma regra ja usada para APRM). Pesos e descontos ficam emzon.dom(dominiodesconto_motor), nao no codigo. - Um ponto pode cair em duas macrozonas so por erro de carta (sobreposicao medida <= 2,1 km2 em Santa Isabel, 0 nos vetores oficiais) — QA avisa, nao bloqueia.
11.4 QA especifico do nivel 1 (zon.qa, checks macro_*)
| check | esperado | resultado medido (9 municipios) |
|---|---|---|
macro_cobertura |
uniao das macrozonas = 100 % da divisa IBGE (tolerancia 1 %; falha < 95 %) | 7 passam; SP 96,4 % (aviso: MEM/MPEN nao fecham a divisa no WFS); Santa Isabel 83,8 % (falha: Mapa 32-A deixa faixas viarias e a APA em branco); Cajamar 89,1 % (falha: LC 234 nao zoneia 14 km2) |
macro_n_classes |
classes canonicas usadas <= 6 e >= 2 | passa em todos (2 a 6) |
macro_n_macrozonas |
<= 12 macrozonas por municipio (acima disso e LUOS disfarcada) | passa (3 a 8) |
macro_sobreposicao |
area de sobreposicao interna <= 1 % | passa (max 2,08 km2 / 0,7 % em Santa Isabel) |
macro_confianca |
proxy_texto nunca alta; wfs/kmz/app_json nunca baixa |
passa |
macro_tem_ind |
existe classe IND_ATIV_ECON? (aviso, nao falha: 5 de 9 PDs nao tem) | Guarulhos, SP, Santa Isabel, Cajamar sim; Aruja, Itaqua, Mairipora, Mogi, Nazare NAO |
11.5 Veredito medido (detalhe em research/25)
- A hipotese de Carlos vale para cobertura e vocabulario: o nivel 1 existe nos 9, cabe em 6 classes (2 a 6 usadas por municipio, 47 macrozonas no total, nenhuma ficou sem classe) e 100 % de cobertura em 7 dos 9. O nivel 1 e homogeneizavel; o nivel 2 nao.
- A hipotese nao vale para a pergunta do produto: o nivel 1 so tem classe economica em 4 dos 9 PDs. Somando os 9, 51,4 % da area industrial do nivel 2 (ZI/ZAE/ZPI/ZDE/ZUPI, 191,7 km2) cai em IND_ATIV_ECON do nivel 1; por municipio: Cajamar 100 % (mesmo instrumento), Guarulhos 97,6 %, Santa Isabel 75 %, SP 74,7 %, e 0 % em Aruja (ZUPI-1 24,6 km2 esta na "Macrozona Urbana"), Itaqua (ZUPI+ZUD 11,3 km2 dentro da "Consolidacao Urbana-Ambiental"), Mairipora, Mogi (ZUPI 18,6 km2 dentro de macrozona RURAL) e Nazare. O inverso tambem falha: em SP so 15,8 % da MEM e zona onde galpao entra; em Guarulhos 78 % da MD.
- Default do produto: nivel 1 = camada de contexto/triagem nacional (sempre presente, 6 cores, cobertura 100 %); nivel 2 = camada que decide "galpao entra?",
com confianca declarada menor; o motor le o nivel 2 onde existe e cai para o nivel 1 com desconto 0,8 +
conferir. Nunca vender o nivel 1 como zoneamento.
6. Validação (cbre.validacao)
Registro acumulado: 581 passa · 73 atenção · 14 falha (668 verificações, origem doc = número relatado em research/, auto = bateria semanal). Última rodada automática 20260831T151817Z (2026-08-31): 142 passa · 12 atenção · 6 falha em 160 testes. Registro completo, por tabela, em Catálogo; relatório semanal em research/QA_<data>.md (Biblioteca).
Falhas registradas (todas, inclusive as já corrigidas — o registro não apaga)
| Data | Tabela | Teste | Medido |
|---|---|---|---|
| 2026-08-31 | macrozoneamento | vértice fora de lugar em geom (dispersão > 3 E compacidade > 5, EPSG:31983) | 4 de 47 |
| 2026-08-31 | inundacao_oficial | vértice fora de lugar em geom (dispersão > 3 E compacidade > 5, EPSG:31983) | 43 de 13528 |
| 2026-08-31 | onr_matricula | vértice fora de lugar em geom_utm (dispersão > 3 E compacidade > 5, EPSG:31983) | 17 de 32905 |
| 2026-08-31 | zoneamento | vértice fora de lugar em geom (dispersão > 3 E compacidade > 5, EPSG:31983) | 919 de 62634 |
| 2026-08-31 | com_zeis | vértice fora de lugar em geom_utm (dispersão > 3 E compacidade > 5, EPSG:31983) | 8 de 4080 |
| 2026-08-31 | com_favela | vértice fora de lugar em geom_utm (dispersão > 3 E compacidade > 5, EPSG:31983) | 5 de 6271 |
| 2026-08-29 | car_status | colunas de identificação pessoal (nome/cpf/proprietário/telefone) | uc_nome,aprm_nome |
| 2026-08-29 | imoveis_candidatos | mineração ativa entre os ranqueados (auditoria do ranking de 28/08) | 19 vetos, 11 entre os 637 (nºs 1, 4, 12, 14 do geral) → corrigido para 617 |
| 2026-08-29 | leilao_detalhe | lote Zuk 967 (Guarulhos, Zircônio): área de terreno | relatórios 13/15 diziam 8.646 m² (construída); terreno = 79.669 m², residencial 5 torres, ZUD-8 |
| 2026-08-29 | zoneamento_parametros | chave única (municipio_ibge,zona_sigla) | 2 duplicadas em 88 |
| 2026-08-28 | glebas_candidatas | cruzamento gleba × CAR parado usa a regra operacional | usou a regra estrita (3) → 0 glebas |
| 2026-08-28 | acervo | regulador.zoning_rules tem geometria | NULL em 3.827 de 3.827 → motivou a frente 06/19 |
| 2026-08-28 | acervo | ibge_trechos_rodoviarios cobre SP | 0 trechos na RMSP (ingestão parcial GO/MS/MT) |
| 2026-08-28 | acervo | matview mv_car_x_protected_areas × cruzamento direto | matview 0 CARs em UC-PI; direto 183 → não confiar na matview |