Pt:That Shouldnt Be Possible

From OpenStreetMap Wiki
Jump to navigation Jump to search
O texto desta página é a tradução do artigo original em inglês, conferida em 11/05/2014.
Mapa de soluções do That Shouldn't Be Possible

That Shouldn't Be Possible (em inglês Isso Não Deveria Ser Possível, abreviado como "tsbp") é um analisador de trilhas de GPS em desenvolvimento que analisa a correspondência entre uma trilha de GPS e a roteabilidade da base de dados do OSM. O título diz tudo: você entrega uma trilha de GPS e o sistema usa várias informações presentes na trilha (principalmente registros de horário) para lhe dizer se, conforme a base de dados do OpenStreetMap, o trajeto que você seguiu não deveria ser possível. Se a pessoa estava dirigindo/pedalando seguindo as normas de trânsito, um trecho da trilha que Não Deveria Ser Possível é uma boa indicação de que algo pode estar significativamente errado com o mapa nessa área.

Atualmente há um protótipo do tsbp rodando em https://ris.dev.openstreetmap.org/tsbp-proto que só trabalha com dados das Ilhas Britânicas (Reino Unido, Irlanda e mais algumas dependências), da Benelux (Bélgica, Países Baixos e Luxemburgo), Islândia, África do Sul, Brasil e Polônia (manter o planeta inteiro atualizado requer recursos de processamento significativos que eu ainda não tenho).

Código-fonte

O fonte está no bitbucket em http://bitbucket.org/ris/tsbp e contribuidores são bem-vindos. O código está sob a GPLv3.

Demos

Palestra no SotM Escócia (Youtube), Outubro 2013.

Bookmarklet

Por conveniência, eis aqui um bookmarklet (o quê?) que pode ser usado para passar da página de trilhas do openstreetmap.org (ex.: https://www.openstreetmap.org/user/PHerison/traces/1134833) para a página do tsbp para resolver o problema, sem que você tenha que fazer aquele absurdo de procuar-copiar-colar-o-id:

javascript:(function(){window.location="https://ris.dev.openstreetmap.org/tsbp-proto/solve?osm_trace_id="+/\/traces\/(\d+)\b/.exec(window.location.pathname)[1]}())

Para instalá-lo, crie um novo favorito e cole o código acima no campo URL de destino. Para executar, abra o favorito ao visualizar a localização desejada no openstreetmap.org.

Perguntas frequentes

O que significa esse gráfico vermelho-e-cinza?

O "gráfico de custo" (como eu chamo) indica o quanto um trecho de uma trilha Não Deveria Ser Possível. Isso pode significar algumas coisas diferentes.

O tsbp funciona tentando ajustar rotas conhecidas possíves às trilhas que você fornece para ele. Ele usa o registro de horário dos pontos para tentar determinar quão Não Possíveis os trajetos ponto-a-ponto devem ser considerando o tempo que se levou para percorrê-los. O tsbp tenta minimizar a impossibilidade ou o custo.

Então um trecho pode ser de alto custo tanto onde tem algo realmente errado com o mapa quanto onde o tsbp não funciona direito e não consegue achar a rota certa. Normalmente fica entre esses dois extremos. Para o tsbp, as duas coisas são indistintas. Se o tsbp não encontra um boa solução num trecho de uma trilha, normalmente há um bom motivo pra isso.

Mas o tsbp está errado às vezes, e é por isso que temos a função Recálculo onde você pode dar uma dica pra ele do que realmente aconteceu num ponto e pedir que ele pense um pouco mais sobre a situação.

O que são as cruzes vermelhas/os blocos vermelhos no gráfico?

O tsbp geralmente só olha uns 100 metros em volta de um ponto da trilha. Se uma estrada candidata adequada não for encontrada nessa área, o tsbp simplesmente a ignora por completo. Você também pode manualmente pedir pro tsbp ignorar completamente um ou mais pontos da trilha num recálculo selecionando "Ignorar este ponto" no menu pop-up do ponto no gráfico de custo.

Não funciona no meu navegador!

Nunca funcionará no IE8 ou anterior. Na verdade nem sei se funciona no IE9. Deveria. Estou farto de ter que lidar com navegadores antigos mal feitos e ficar à margem sem poder usar os últimos dez anos de recursos da web. Com todos os outros projetos em que eu tive que lidar com o IE, já chega. Este projeto é uma forte quebra onde eu me permito usar recursos mais modernos sem gastar todo o meu tempo usando contingências arcaicas.

Por favor use um navegador de verdade.

Suporta (recurso de roteamento...)?

O tsbp é feito usando o OSRM como roteador, e com isso geralmente suporta os mesmos recursos/limitações. Eu deliberadamente tentei manter o perfil de roteamento do OSRM tão "simples" quanto possível, e realmente não quero ajustá-lo para, por exemplo, permitir que se passe por portões, permitir que se passe por vias privadas (access=private), porque, sinceramente, o que estamos tentando testar é se um "roteador comum" seria capaz de gerar uma rota correspondente ao trajeto seguido. E se um OSRM básico se recusa a passar por barrier=lift_gate, talvez o que deveríamos estar olhando é se essa etiquetagem está correta, ou se o OSRM deveria permitir que as pessoas passem por essa barreira, ou se um esquema de etiquetagem muito melhor é necessário para isso. Porque, do contrário, teríamos a situação em que o OSRM não permite roteamento de/para a Ilha dos Cães.

De forma similar, o tsbp pode se tornar uma forma eficaz de encontrar defeitos no próprio OSRM.

O que você quer dizer com protótipo?

Bem, eu vou acabar mudando as coisas. E possivelmente quebrar coisas. E apesar do esquema de URL do tsbp ser projetado para soluções "permanentes", no protótipo eu não vou ter medo de excluir soluções antigas caso eu precise. Não tenho certeza se as pessoas tem tanta necessidade de uma solução permanente, mas eu costumo entregar URLs permanentes, então, seja o que for.

E tem uns cantos feios. E uma pilha de recursos que eu ainda não implementei.

Com que frequência o planeta é atualizado?

Toda noite. Lá pelas 3 da manhã, horário UTC (meia-noite no Brasil). E não é gracioso se estiver calculando uma das suas soluções naquele momento. Sua solução provavelmente vai ser cancelada e você, relegado a tentar novamente. Mas afinal o que você está fazendo tentando analisar trilhas de GPS às 3 da manhã?

Sobre isso, recálculos só podem ser feitos no snapshot do planeta em que suas soluções foram iniciadas porque, do contrário, surge todo tipo de ambiguidades estranhas. Então não espere poder clicar em "Recalcular" numa solução no dia seguinte e tê-la funcionando.

Então... pra que serve isso?

That Shouldn't Be Possible normalmente encontra erros pequenos, como aqui um trecho estragado da M6 perto de Carlisle é mostrado como um pico pequeno mas evidente no gráfico de custo

Serve pra qualquer coisa que você descobrir que serve. (?)

Na real, pode ser usado como um verificador de erros em geral. Ele pode ser usado para testar que sistemas de entroncamentos funcionam como o pretendido. Você pode pensar que uma trilha de GPS é um relato da verdade. "Este trajeto é possível". E assim você pode considerar cada trilha como um teste de unidade para dados. Algo está errado quando os dados não passam nos testes de unidade.

Outra forma de encará-lo e como uma ferramenta que economiza tempo. É realmente entendiante e demorado examinar manualmente uma trilha enorme que você enviou procurando nos 99% do seu trajeto que já está mapeado pelo 1% do trajeto que não está. Tenho certeza que pessoas que dirigem bastante ou que de alguma forma geram uma grande quantidade de trilhas de GPS acham isso irritante demais para se preocuparem em olhar suas trilhas em detalhe. Com o tsbp, você deve poder informar a sua trilha e minutos mais tarde encontrar realçado aquele lugarzinho na viagem onde você usou uma rampa que o OSM ainda não tem.

Isso provavelmente seria ainda mais útil em países que não estão tão completos quanto o Reino Unido, ou em países que tiveram uma importação de áreas de qualidade variável.

A maior parte do gráfico parece só corresponder à velocidade que eu estava indo

Isso provavelmente é bom. Provavelmente significa que a trilha está mais ou menos certa. Os verdadeiros problemas de roteamento produzem picos que tornam minúsculos os típicos custos de velocidade.

Como todos os custos no tsbp são relativos (custos absolutos seriam impossívels com as diferentes precisões dos aparelhos de GPS, diferentes taxas de registro, diferente esquemas de registro, etc.), as trilhas apresentam custos normalizados em relação ao ponto de maior custo na trilha. Então não tente comparar custos entre trilhas diferentes.

Falando de velocidade, o tsbp considera limites de velocidade. Claro que um trecho vermelho/de alto custo não quer dizer que você estava acima do limite, mas quão mais próximo do limite você está, mais Não Possível parece. Claro, isso às vezes indica problemas com limites de velocidade mapeados incorretamente. Se alguém marcou um trecho de uma via expressa (trunk) com o limite de 30 km/h e você correr por ele a 70 km/h, o tbsp vai corretamente indicar que Isso Não Deveria Ser Possível™.

E quanto à precisão do GPS?

O tsbp usa valores DOP se presentes (recomendo muito tentar fazer o seu dispositivo incluir esses valores nos arquivos de trilha, embora muitos simplesmente não fazem), e tenta fazer menos alarde e ser mais flexível na sua busca onde o GPS nos diz que há problemas de precisão.

Mas em geral, trilhas distantes da estrada pretendida vão causar um custo mais alto. Mas de novo, isso é provavelmente um problema que o tsbp deveria sinalizar. O GPS pode estar certo e a estrada existente pode estar imprecisa. Depende de você tentar deduzir de outras fontes ou discutir com alguém sobre com uma trilha diferente.

Como eu envio uma trilha?

Você não envia. Trilhas são obtidas das trilhas do OSM. Você precisa enviá-las ao OSM, torná-las visíveis publicamente, e fornecer ao tsbp o ID da trilha desejada. Sim, um dia vai ter um jeito mais agradável de fazer isso e também de analisar as trilhas privadas usando oauth, mas não é uma prioridade imensa nesse momento.

Fazer assim significa que eu não tenho que me preocupar com licenças de trilhas ou com administração dos dados de outras pessoas, me dá garantias sobre a validade dos arquivos GPX, e significa que as trilhas são enviadas para o OSM para a posteridade. E uma hora dessas eu quero conseguir algumas coisas úteis (ex.: tipo de transporte) a partir das etiquetas da trilha.