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!
Que legal sua iniciativa e da cidade também, tornando públicas as informações para que a própria população possa consumir esses dados em tempo real.
Você pretende disponibilizar sua lista de coordenadas num repositório no Github? Para calcular as velocidades também seria possível usar as coordenadas lat,long convertidas para o sistema de projeção UTM (coordenadas planas EPSG 31983 – SIRGAS2000 – UTM-23S) para a cidade de Curitiba, segundo notei em um mapa da cidade. Talvez as distâncias planas devam ser reduzidas para a altura média do local, já que a distância na projeção será ligeiramente menor que aquela medida na altitude.
Muito massa! Moro em CWB e já tive que fazer um trabalho da faculdade envolvendo grafos com o mapa de Curitiba, foi bem trabalhoso, principalmente a parte de lidar com manipulação de arquivo + estrutura de dados em C (sim...). Lembro de ver uma aplicação da URBS que mostra em tempo real o percurso dos ônibus, mas não sei se funciona ou se realmente alguém usa (https://www.urbs.curitiba.pr.gov.br/mobile/itibus), mas lembrei disso quando vi teu post. Parabéns!
noooosssaaaa cara, que massa, isso é de grande ajuda
me ganhou apenas com o primeiro parágrafo.
projeto show.
Opa, show de mais.
Qual lib Open Source de maps está usando já que a api do google maps é extremamente caro.
Muito bom!!! Moro em Curitiba, e fiz um trabalho na época da faculdade sobre tecnologia na mobilidade urbana... porém lá em 2008, eram ainda mais precárias as informações que eram existiam, e as poucas não eram disponibilizadas para o público! Creio q houve uma enorme evolução, e nos próximos anos tende a melhorar ainda mais!