Fiz um Mapa com Localizações dos Ônibus de Curitiba durante uma Tarde
Como dev, eu adoro deixar meu projeto principal de lado e me concentrar em alguma coisa aleatória de vez em quando. Então, vou contar para vocês o que fiz essa semana. :)
Descobri há alguns dias que Curitiba tem um servidor socket.io ""público"" que oferece acesso a várias informações da URBS (Urbanização de Curitiba). Ele também disponibiliza a localização em tempo real de todos os ônibus, mas o problema é que essas informações são atualizadas apenas a cada 60 segundos.
Mesmo assim, tive a ideia de salvar todas as localizações dos ônibus durante uma tarde inteira (das 12h até às 22h, mais ou menos), e foi exatamente isso que fiz.
No final, coletei 82MB de dados com 873.670 localizações diferentes. Registrei o horário de cada atualização, além de informações como latitude, longitude, ID do veículo, etc.
Consegui uma imagem da área de Curitiba e com esses dados criei três tipos de mapas:
-
O primeiro mostra todos os 873.670 pontos como pequenas bolinhas. É bem simples, mas já dá para ver os caminhos:
-
O segundo é parecido, mas com uma cor diferente para cada veículo. É possível identificar alguns trajetos comuns e outros que apenas veículos específicos seguem:
-
O terceiro, e o que foi mais difícil de criar, é um mapa onde tentei calcular a velocidade (em km/h) em cada ponto usando Vincenty's inverse formula. Com a posição atual, a anterior e o tempo entre elas, tentei estimar a velocidade. O azul representa a velocidade normal, e quanto mais avermelhado, mais rápido (em teoria). Apesar de ficar um pouco difícil de enxergar, o resultado é bem interessante.
Com esses dados e provavelmente mais tempo, seria possível fazer coisas como prever a localização exata dos ônibus em "tempo real", baseado no histórico, já que os trajetos são fixos. Eu pessoalmente não vou seguir com essa ideia, mas é possível.
Obrigado por lerem!