Visão Geral do Pipeline
O sistema processa um arquivo Excel exportado do Hexagon em quatro etapas sequenciais:
1. Leitura
→
2. Limpeza
→
3. Identificação de POIs
→
4. Ranking TOP 50
1 Leitura do Arquivo
Tenta abrir a aba PlanilhaDadosOcorrencia; se não existir, usa a primeira aba.
Colunas detectadas automaticamente por normalização de texto (sem acento, sem maiúsculas).
| Papel | Nomes aceitos no Excel |
| Latitude | Latitude, lat |
| Longitude | Longitude, lon, lng |
| Data | Data Abertura, DataHora, DataOcorrencia |
| ID | Ocorrência, Numero, Protocolo |
| Agência | Agência Principal, Agencia, Distrito |
| Endereço | Localização, Logradouro, Endereço |
2 Limpeza e Remoção de Duplicatas
Passagem 1 — Linhas Exatamente Iguais
Todos os campos idênticos → apenas a primeira linha é mantida.
| ID | Data | Lat | Agência | Resultado |
| COR001 | 01/11/2024 | -23.500 | Sul |
Mantida |
| COR001 | 01/11/2024 | -23.500 | Sul |
Removida |
Passagem 2 — Mesmo ID de Ocorrência (padrão Hexagon)
O Hexagon exporta uma linha por "Ponto Rio Águas" vinculado ao evento. Apenas a primeira aparição de cada ID é mantida.
| ID | Data | Lat | Agência | Resultado |
| COR001 | 01/11/2024 | -23.500 | Sul |
Mantida (1ª) |
| COR001 | 01/11/2024 | -23.500 | Norte |
Removida (mesmo ID) |
3 Identificação de Pontos de Interesse (POIs)
O primeiro registro cronológico de um local é o POI. Todos os eventos seguintes dentro de
100 metros são recorrências daquele POI.
Algoritmo de varredura cronológica
- Registros ordenados por data de abertura (mais antigo primeiro).
- Primeiro registro válido (com coordenadas) = POI nº 0.
- Para cada registro seguinte, calcula distância Haversine até todos os POIs existentes.
- ≤ 100 m → recorrência do POI mais próximo.
- > 100 m → novo POI criado naquele ponto.
Fórmula de Haversine
a = sin²(Δlat/2) + cos(lat₁) · cos(lat₂) · sin²(Δlon/2)
d = 2 · R · arcsin(√a) [R = 6.371.000 m]
Otimização por bounding-box
Filtro retangular de ±0,0015° (≈ 167 m) aplicado antes do Haversine — qualquer POI dentro de 100 m está
garantidamente na caixa, eliminando candidatos distantes sem cálculo trigonométrico.
4 Geração do Ranking TOP 50
Total Ocorrências (POI) = 1 (fundador) + N (recorrências dentro de 100 m)
POIs ordenados decrescentemente por total. Os 50 primeiros formam o relatório final.
Coluna Recorrências: cada evento histórico listado como
ID | Data | Endereço, um por linha.
Limitações
- Raio de 100 m fixo — locais próximos em logradouros distintos podem ser agrupados.
- POI fundador é sempre o evento mais antigo do cluster.
- Registros sem coordenadas são ignorados no agrupamento.
- Não filtra por tipo de ocorrência — fazer a filtragem na exportação do Hexagon.