Distância entre pontos consecutivos do traçado
Verifica se o aumento da distância acumulada corresponde à distância geográfica entre pontos consecutivos, dentro da tolerância configurada.
Propriedades da regra
| Propriedade | Valor |
|---|---|
| Rule ID | shape_dist_traveled_delta_mismatches_haversine_segment |
| Ficheiro | shapes.txt |
| Campo | shape_dist_traveled |
| Tipo | Número não negativo |
| Severidade | Obrigatório |
Descrição do campo: distância percorrida ao longo do traçado, desde o primeiro ponto até ao ponto desta linha. Permite aos planeadores de viagens apresentar a parte correta do traçado no mapa. Os valores devem aumentar com shape_pt_sequence e usar a mesma unidade que as distâncias de stop_times.txt. O campo ajuda a distinguir passagens por locais onde o percurso se cruza ou repete.
Mais informação em shapes.txt.
Como funciona
Nos segmentos avaliados, o aumento de shape_dist_traveled deve corresponder à distância geográfica entre os dois pontos, dentro da tolerância configurada. A regra compara as coordenadas dos pontos; não confirma o percurso real do veículo pelas ruas. Campos em falta, coordenadas inválidas e distâncias decrescentes são tratados por outras regras.
A tolerância depende do valor configurado no GO. . Os valores numéricos apresentados nos exemplos são ilustrativos e não constituem limites fixos. Embora exista um valor predefinido, a validação utiliza a tolerância válida indicada na configuração.
A primeira opção da regra define a tolerância em metros e aceita zero. Quando esta opção falta ou é inválida, o validador utiliza a tolerância predefinida. A segunda opção permite indicar a unidade de shape_dist_traveled: m ou km. Sem uma unidade reconhecida, o validador procura inferi-la a partir da maior distância acumulada do traçado.
A regra avalia cada grupo de pontos com o mesmo shape_id em shapes.txt, seguindo os passos abaixo por ordem.
| # | Pergunta | Se sim | Se não |
|---|---|---|---|
| 1 | A regra está desativada na configuração? | Termina sem avaliar | Segue para o passo 2 |
| 2 | O ponto tem shape_id preenchido? | Segue para o passo 3 | Exclui o ponto desta avaliação |
| 3 | O grupo tem sequências em falta, negativas ou repetidas? | Não avalia o grupo | Ordena os pontos por shape_pt_sequence e segue para o passo 4 |
| 4 | Existem dois pontos consecutivos para comparar? | Segue para o passo 5 | Termina a avaliação do grupo |
| 5 | Ambos os pontos têm coordenadas válidas e distâncias acumuladas válidas e não negativas? | Segue para o passo 6 | Ignora este par e passa ao seguinte |
| 6 | A distância acumulada diminui entre os dois pontos? | Deixa esta situação para outra regra e passa ao par seguinte | Segue para o passo 7 |
| 7 | A diferença absoluta entre o aumento registado e a distância geográfica fica dentro da tolerância configurada? | ✅ Aceita o segmento e passa ao seguinte | ❌ Regista o problema no segundo ponto e passa ao seguinte |
A comparação converte as distâncias para metros. Inclui o primeiro segmento quando a distância acumulada começa em zero e os segmentos sem aumento da distância acumulada. Uma margem mínima de cálculo evita problemas causados apenas por arredondamentos numéricos.
Quando existem muitos segmentos com problemas, o resultado apresenta uma mensagem resumida por linha afetada, em vez do detalhe de cada segmento.
Exemplos
Apenas para estes exemplos, considere uma tolerância de 20 m, a unidade m e dois pontos cuja distância geográfica é 100 m. A configuração em rules.json pode definir outra tolerância ou unidade.
| Valor | Resultado | Porquê |
|---|---|---|
shape_dist_traveled passa de 0 para 100 | ✅ Passa | Aumento igual à distância geográfica |
shape_dist_traveled passa de 0 para 115 | ✅ Passa | Diferença de 15 m, dentro da tolerância do exemplo |
shape_dist_traveled passa de 0 para 150 | ❌ Problema | Diferença de 50 m, acima da tolerância do exemplo |
shape_dist_traveled permanece em 0 | ❌ Problema | Diferença de 100 m, acima da tolerância do exemplo |
Se a tolerância configurada fosse, por exemplo, 60 m, o aumento de 150 m também passaria para estes mesmos pontos.
Como corrigir
| Problema | Causa provável | O que fazer |
|---|---|---|
| O aumento da distância acumulada difere da distância geográfica além da tolerância configurada | Distância acumulada incorreta, coordenadas incorretas ou unidade mal interpretada | Verificar shape_dist_traveled, shape_pt_lat e shape_pt_lon nos dois pontos de shapes.txt. Corrigir os valores incorretos e confirmar a unidade e a tolerância na configuração da regra em rules.json. |
| Muitos aumentos de distância diferem dos comprimentos dos segmentos | Unidade inconsistente ou cálculo incorreto das distâncias ao longo do traçado | Rever os valores de shape_dist_traveled nas linhas indicadas de shapes.txt. Confirmar a unidade configurada em rules.json e recalcular as distâncias acumuladas quando necessário. |
Distância acumulada ao longo de um troço
Verifica se a distância acumulada de um troço corresponde à soma das distâncias geográficas dos seus segmentos, dentro da tolerância configurada.
Distância crescente ao longo da forma
Verifica se shape_dist_traveled não diminui quando os pontos são ordenados por shape_pt_sequence.