Distância por segmento
Verifica shape_id, shape_pt_sequence, shape_pt_lat, shape_pt_lon, shape_dist_traveled em shapes.txt.
Propriedades da regra
| Propriedade | Valor |
|---|---|
| Rule ID | shapes_shape_dist_traveled_segment_valid |
| Ficheiro | shapes.txt |
| Campos | shape_id, shape_pt_sequence, shape_pt_lat, shape_pt_lon, shape_dist_traveled |
| Tipo | Identificador, Inteiro não negativo, Latitude, Longitude, Número não negativo |
| Severidade | Obrigatório, Obrigatório, Obrigatório, Obrigatório, Opcional |
Descrição dos campos:
shape_id: identifica o traçado.shape_pt_sequence: ordem pela qual os pontos se ligam para formar o traçado. Os valores devem aumentar, mas não precisam de ser consecutivos.shape_pt_lat: latitude do ponto que integra o traçado.shape_pt_lon: longitude do ponto que integra o traçado.shape_dist_traveled: distância percorrida desde o primeiro ponto até ao ponto desta linha. As unidades devem coincidir com as usadas emstop_times.txt.
Mais informação em shapes.txt.
Como funciona
A regra compara o aumento da distância acumulada com a distância geométrica entre pontos consecutivos. Não assinala diminuições da distância nem garante que todos os pares foram comparados.
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 configuração desativa a regra? | ✅ Passa sem verificação | Segue para o passo 2 |
| 2 | Existe uma sequência ilegível, negativa ou repetida? | Ignora o traçado | Segue para o passo 3 |
| 3 | As coordenadas e as duas distâncias do par são válidas, finitas e não negativas? | Segue para o passo 4 | Ignora este par |
| 4 | A distância acumulada diminui? | Ignora este par | Segue para o passo 5 |
| 5 | A diferença absoluta entre o aumento e a distância geométrica ultrapassa a tolerância? | ❌ Reprova: distâncias incompatíveis | ✅ Passa este par |
A primeira opção define a tolerância em metros: 20 por predefinição; zero é aceite. Valores inválidos, negativos ou não finitos repõem 20. A segunda opção pode indicar m ou km, ignorando espaços exteriores e maiúsculas. Sem unidade reconhecida, o máximo válido do traçado inferior a 800 indica quilómetros; caso contrário, metros. Esta estimativa é ambígua em traçados curtos. Inclui o primeiro segmento desde zero e aumentos iguais a zero. Há uma margem numérica adicional de 0.000001 metros. Os campos não são aparados. Os exemplos usam unidade m e tolerância 20.
O resultado segue a configuração da regra: obrigatório reprova; recomendado passa com aviso; informativo passa com informação. O aviso antecipa uma futura exigência, mas só reprova quando a configuração passar a obrigatório. Salvo indicação contrária, os exemplos de reprovação pressupõem a configuração obrigatória.
Como se relacionam
O campo shape_id agrupa os pontos. O campo shape_pt_sequence define a ordem das comparações. As coordenadas definem os segmentos geométricos. O campo shape_dist_traveled fornece a distância acumulada em cada ponto.
Exemplos
| shape_id | shape_pt_sequence | shape_pt_lat | shape_pt_lon | shape_dist_traveled | Resultado | Porquê |
|---|---|---|---|---|---|---|
A | 0, 10 | 0, 0 | 0, 0.001 | 0, 111.2 | ✅ Passa | Aumento próximo de 111 metros |
A | 0, 10 | 0, 0 | 0, 0.001 | 0, 0 | ❌ Reprova | Aumento zero com deslocação |
A | 0, 10 | 0, 0 | 0, 0.001 | 0, 300 | ❌ Reprova | Diferença superior a 20 metros |
Como corrigir
| Problema | Causa provável | O que fazer |
|---|---|---|
| Distâncias incompatíveis | A distância acumulada, as coordenadas ou a unidade não coincidem | Recalcular shape_dist_traveled em shapes.txt após conferir shape_pt_lat, shape_pt_lon e shape_pt_sequence; confirmar a unidade na configuração da regra. |