• Nenhum resultado encontrado

Correção de inconsistências nos dados de GPS de ônibus do Rio de Janeiro

N/A
N/A
Protected

Academic year: 2021

Share "Correção de inconsistências nos dados de GPS de ônibus do Rio de Janeiro"

Copied!
48
0
0

Texto

(1)

Instituto de Computa¸

ao

Departamento de Ciˆ

encia da Computa¸

ao

NATALIA ROCHA DE ALMEIDA PIPAS

CORRE ¸

C ˜

AO DE INCONSISTˆ

ENCIAS NOS DADOS

DE GPS DE ˆ

ONIBUS DO RIO DE JANEIRO

Niter´

oi-RJ

2017

(2)

ii NATALIA ROCHA DE ALMEIDA PIPAS

CORRE ¸C ˜AO DE INCONSIST ˆENCIAS NOS DADOS DE GPS DE ˆONIBUS DO RIO DE JANEIRO

Trabalho submetido ao Curso de

Bacharelado em Ciˆencia da Computa¸c˜ao da Universidade Federal Fluminense como requisito parcial para a obten¸c˜ao do t´ıtulo de Bacharel em Ciˆencia da Computa¸c˜ao.

Orientador: Prof. Marcos Lage Co-orientador: Prof. Antˆonio Augusto Rocha

Niter´oi-RJ 2017

(3)
(4)

Ficha Catalográfica elaborada pela Biblioteca da Escola de Engenharia e Instituto de Computação da UFF

P664 Pipas, Natalia Rocha de Almeida

Correção de inconsistências nos dados de GPS de ônibus do Rio de Janeiro / Natalia Rocha de Almeida Pipas. – Niterói, RJ : [s.n.], 2017.

47 f.

Projeto Final (Bacharelado em Ciência da Computação) – Universidade Federal Fluminense, 2017.

Orientador: Marcos Lage, Antônio Augusto Rocha. 1. Processamento de dados. 2. GPS. 3. Ônibus. I. Título.

CDD 004.33

(5)

`

A minha irm˜a Lara, que me prometeu um brownie para aparecer aqui.

(6)

v

Agradecimentos

`

A minha fam´ılia, apoiadora de todos os meus projetos e sonhos.

Aos meus orientadores Marcos Lage e Antˆonio Augusto Rocha, sempre sol´ıcitos durante todo o trabalho.

Aos professores Lhaylla Crissaff, Aline Paes e Antˆonio Augusto Rocha pela presen¸ca na banca examinadora.

Aos meus colegas de trabalho, que reclamaram apenas um pouco do tempo que dediquei a esse projeto.

(7)

Resumo

Com os avan¸cos recentes na coleta de dados urbanos, consequˆencia da evolu¸c˜ao de diversos tipos de sensores, das tecnologias de comunica¸c˜ao sem fio e da capacidade de armazenamento de dados, surgem oportunidades para o desenvolvimento de aplicativos, sistemas e tecnologias baseados na an´alise dos dados coletados e capazes de aumentar o entendimento que se tem sobre ´areas urbanas. Seguindo essa tendˆencia, a prefeitura do Rio de Janeiro tem disponibilizado dados de GPS de sua frota de ˆonibus, que cont´em informa¸c˜oes como a localiza¸c˜ao geogr´afica e velocidade dos ve´ıculos em tempo real. En-tretanto, o grande desafio de utilizar esta base de dados ´e a presen¸ca de inconsistˆencias como a ausˆencia do n´umero da linha servida por alguns ve´ıculos e a presen¸ca de regis-tros de ˆonibus em posi¸c˜oes geogr´aficas absurdas. Por outro lado, muitos destes problemas podem ser corrigidos automaticamente atrav´es de modelos matem´aticos e estrat´egias com-putacionais. Com base no exposto, foi desenvolvido um sistema capaz de, na posse das trajet´orias das linhas de ˆonibus da cidade, corrigir alguns dos problemas mais frequentes da base do GPS dos ˆonibus do Rio de Janeiro e disponibilizar os dados corrigidos em um formato de f´acil acesso aos sistemas externos que desejarem utiliz´a-los.

(8)

vii

Abstract

With the global advance in collecting urban data, a consequence of the evolution of many types of sensors, wireless communication technology and data storage, a number of opportunities to develop apps and systems based on the analysis of the collected urban data have emerged. This advance on the technology has the potential of significantly improving the understanding we have on the urban area. Following this tendency, the Rio de Janeiro government has made available GPS data from its buses, which contains information like the geographic location and the speed of the vehicles in real time. Howe-ver, the biggest challenge in using this data is related to some inconsistencies like the absence of the line number of some buses and the presence of records containing absurd geographic positions. On the other hand, many of these problems can be fixed automati-cally by mathematical models and computational strategies. Based on that, we developed a system capable of, by knowing the trajectory of the city’s buses, fix some of the most frequent problems on the dataset and make the corrected results available in a format that is easy to access to the external systems that wish to use it.

(9)

Sum´

ario

Resumo vi

Abstract vii

Lista de Figuras xi

Lista de Tabelas xii

1 Introdu¸c˜ao 1

1.1 Escopo . . . 2

1.2 Objetivos . . . 3

1.3 Organiza¸c˜ao da Monografia . . . 4

2 A base dos ˆonibus do Rio de Janeiro 5 2.1 Descri¸c˜ao . . . 5

2.2 Inconsistˆencias nos dados . . . 6

2.3 Filtragem dos dados . . . 8

2.4 Estrutura¸c˜ao dos dados . . . 10

3 Sistema Proposto 13 3.1 M´odulo de carregamento de linhas . . . 13

3.2 M´odulo de acesso aos dados do Data Rio . . . 15

3.3 M´odulo de inferˆencia de linhas . . . 16

3.4 Disponibiliza¸c˜ao dos resultados . . . 19

4 Estudo de Caso 21 4.1 Precis˜ao da estimativa das rotas . . . 21

4.1.1 Resultados obtidos . . . 22 viii

(10)

ix

4.2 Origem dos erros . . . 25

4.3 Integra¸c˜ao com outros sistemas . . . 28

4.3.1 Resultados obtidos . . . 29 5 Conclus˜oes 30 5.1 Limita¸c˜oes . . . 31 5.1.1 Escalabilidade . . . 31 5.1.2 Cobertura da cidade . . . 31 5.2 Trabalhos futuros . . . 32

(11)

Lista de Figuras

2.1 Ultima atualiza¸c˜´ ao x N´umero de ˆonibus. A imagem mostra que nem todos os ˆonibus s˜ao atualizados minuto a minuto, como se imaginava a princ´ıpio. 8 2.2 Propor¸c˜ao de ˆonibus com/sem linha associada. Apesar de serem minoria,

os ˆonibus sem linha informada representam uma fra¸c˜ao relevante do total de ordens. . . 9 2.3 Elementos que comp˜oem o dicion´ario Grid. Este dicion´ario ´e usado para

dividir a cidade em c´elulas e guardar os pontos das trajet´orias das linhas de ˆonibus. . . 11 2.4 Elementos que comp˜oem o dicion´ario dicion´ario Ordem. Este dicion´ario

guarda, para cada ordem, informa¸c˜oes necess´arias para a inferˆencia de sua linhas, entre elas, uma lista com os ´ultimos N pontos de sua trajet´oria. . . 11 2.5 Elementos que comp˜oem o dicion´ario dicion´ario Linha. Este dicion´ario

armazena as ordens pertencentes a cada linha. . . 12 3.1 Diagrama com os m´odulos do sistema proposto e as dependˆencias entre eles. 14 3.2 Exemplo de c´alculo da distˆancia ordem-linha, onde os pontos em laranja e

azul representam pontos de trajet´oria de duas linhas conhecidas e o ponto rosa ´e o ponto sob an´alise em uma rodada. As linhas tracejadas representam a distˆancia em linha reta entre a ordem e cada uma das linhas. . . 17 3.3 C´odigo necess´ario para subir o servidor web . . . 20 4.1 Resultado da estimativa das linhas. Foram analisados os 5 ´ultimos

pon-tos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2

(imagem da esquerda) e 111x111m2 (imagem da direita). . . 23

(12)

xi 4.2 Resultado da estimativa das linhas. Foram analisados os 10 ´ultimos

pon-tos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2 (imagem da esquerda) e 111x111m2 (imagem da direita). . . . 23

4.3 Resultado da estimativa das linhas. Foram analisados os 20 ´ultimos pon-tos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2

(imagem da esquerda) e 111x111m2 (imagem da direita). . . 24 4.4 Trajet´oria da linha 455 (azul) e pontos de ordens cuja linha informada pelo

DataRio era 455, mas que receberam pontua¸c˜ao zerada para tal linha na estimativa (vermelho). Os pontos em vermelho foram obtidos no Caso de Teste 1, com 20 pontos anteriores e c´elulas de 1111 x 1111m2. . . 25 4.5 Trajet´oria da linha 422 (azul) e pontos de ordens cuja linha informada pelo

DataRio era tamb´em a 422, mas que receberam pontua¸c˜ao zerada para tal linha na estimativa (vermelho). Diferente da figura anterior, os pontos em vermelho ficaram concentrados em uma ´area pequena. Os resultados foram obtidos em teste realizado no final da tarde do dia 08/07/2017. . . 26 4.6 Mesma compara¸c˜ao da figura 4.5, mas com o teste tendo sido realizado na

parte da manh˜a do dia 10/07/2017. . . 27 4.7 Exemplo de exibi¸c˜ao dos dados fornecidos pelos sistema desenvolvido nesta

monografia no Trackbus. ´Icones de cores iguais representam logs de mesma linha. . . 28 5.1 Propor¸c˜ao de ordens classificadas . . . 31 5.2 Classifica¸c˜ao realizada dos ˆonibus sem linha . . . 32

(13)

Lista de Tabelas

3.1 Distˆancia m´edia entre os pontos das trajet´orias de linhas, utilizada para avaliar a viabilidade do tamanho de c´elula escolhido. . . 15 4.1 Configura¸c˜ao do caso de teste elaborado com a finalidade de verificar a

qualidade das estimativas das linhas. Foram feitos testes com diferentes parˆametros. . . 22 4.2 Rela¸c˜ao parˆametros x Porcentagem m´edia de acerto. . . 24 4.3 Rela¸c˜ao parˆametros x Porcentagens m´edias de acerto, com e sem a

elimi-na¸c˜ao de ordens que tiveram pontua¸c˜ao zero para a linha correta. . . 28 4.4 Configura¸c˜ao do sistema no teste de integra¸c˜ao com o sistema TrackBus

(14)

Cap´ıtulo 1

Introdu¸

ao

A cidade do Rio de Janeiro, uma das mais populosas e movimentadas do pa´ıs, tem sofrido muito nos ´ultimos anos com o crescente fluxo de ve´ıculos. Para uma cidade que lidera os rankings brasileiros de tempo gasto no trajeto ao trabalho e de perdas econˆomicas por conta do trˆansito [IBGE 2016], ´e urgente falar sobre dados urbanos e como eles podem auxiliar a quest˜ao da mobilidade.

Diversos avan¸cos tecnol´ogicos recentes tamb´em colaboram para o desenvolvimento de novas pesquisas e solu¸c˜oes na ´area de an´alise de dados urbanos [Freire et al. 2014, Ferreira et al. 2013, Raymond e Imamichi 2016, Wang et al. 2014, Doraiswamy et al. 2014, Chen, Guo e Wang 2015]. Novos algoritmos e hardwares tem alavancado ´areas como Inte-ligˆencia Artificial e Big Data e resultam em um crescimento exponencial das capacidades de comunica¸c˜ao sem fio, armazenamento de dados, oferta de sensores de diversos tipos e an´alise de informa¸c˜oes. Neste novo cen´ario, ´e bastante natural pensarmos em solu¸c˜oes que agreguem estas novas capacidades para auxiliar na resolu¸c˜ao de problemas enfrentados pelas grandes cidades.

Ainda, como parte do cumprimento da lei de acesso `a informa¸c˜ao1, muitas cidades

passaram a disponibilizar em tempo real informa¸c˜oes sobre o seu quotidiano. A cidade do Rio de Janeiro, por exemplo, conta com o portal de dados DataRio2. O DataRio fornece

informa¸c˜oes nas ´areas de transporte e mobilidade urbana, entretenimento, educa¸c˜ao, ur-banismo, esportes, turismo, meio ambiente, sa´ude e etc. Em particular, o DataRio oferece informa¸c˜oes em tempo real, atualizadas de minuto em minuto, sobre todos os ˆonibus em

1Lei no 12.527/2011 2http://data.rio/

(15)

atividade na cidade. Essas informa¸c˜oes s˜ao mantidas pela FETRANSPOR e contˆem a posi¸c˜ao geogr´afica, a velocidade, a linha e um identificador ´unico de cada ˆonibus.

Apesar dos esfor¸cos realizados pela prefeitura, a qualidade dos dados ´e muitas vezes questionada e impacta o desenvolvimento de solu¸c˜oes inovadoras para auxiliar no combate ao problema da mobilidade urbana. Uma das principais reclama¸c˜oes diz respeito `

a informa¸c˜ao da linha associada aos ˆonibus, que muitas vezes n˜ao ´e informada pela em-presa respons´avel. Trabalhos relacionados [Schettino 2016] sugerem que 68% dos registros fornecidos pelo DataRio no ano de 2015 contˆem algum tipo de inconsistˆencia.

Pensando em minimizar os problemas encontrados mais frequentemente na base de dados de ˆonibus do DataRio, foi desenvolvido um sistema que atua como intermedi´ario entre aplica¸c˜oes e usu´arios consumidores desses dados e o portal DataRio. Em outras palavras, o objetivo do sistema proposto ´e corrigir algumas das inconsistˆencias encontradas e oferecer dados de melhor qualidade `as diversas aplica¸c˜oes dependentes da base, muitas delas sendo mantidas na pr´opria Universidade Federal Fluminense.

1.1

Escopo

Para que o objetivo deste projeto fosse alcan¸cado, era necess´ario ter acesso n˜ao apenas `a base de dados de ˆonibus do DataRio citada anteriormente, mas tamb´em `as trajet´orias das linhas de ˆonibus em atividade no Rio de Janeiro. O site de dados abertos da prefeitura do Rio, no entanto, n˜ao mant´em informa¸c˜oes dos trajetos das linhas de ˆonibus. Sendo assim, utilizamos como insumo para o nosso sistema as estimativas produzidas pelo trabalho do aluno Daniel Padilha, do grupo de Dados Urbanos do Instituto de Computa¸c˜ao da UFF [Padilha 2017]. O objetivo desse trabalho ´e inferir dados operacionais das linhas de ˆonibus, como a posi¸c˜ao da garagem, os pontos inicial/final e o trajeto usando dados hist´oricos de GPS.

Outro projeto relacionado ao sistema aqui descrito ´e o Trackbus, trabalho de con-clus˜ao de curso descrito em [Rocha e Amaral 2016]. O sistema, tamb´em desenvolvido por alunos da Universidade Federal Fluminense permite, entre outras funcionalidades, a exi-bi¸c˜ao de pontos tur´ısticos, pontos de parada de ˆonibus e a consulta da posi¸c˜ao geogr´afica dos ˆonibus em atividade na cidade do Rio de Janeiro, em tempo real. O aplicativo em quest˜ao consome os dados do portal DataRio diretamente. Em outras palavras, o sistema

(16)

3 n˜ao faz nenhum tratamento ou limpeza nos dados dos ˆonibus fornecidos pelo portal Data-Rio. Entretanto, como dito anteriormente, a base de dados em quest˜ao apresenta diversas inconsistˆencias e, por este motivo, a qualidade do servi¸co oferecido pelo aplicativo fica comprometida. O trabalho aqui proposto foi motivado pela necessidade de se desenvolver uma aplica¸c˜ao capaz de reparar inconsistˆencias da base do DataRio em tempo real para que a informa¸c˜ao corrigida fosse disponibilizada para aplica¸c˜oes como o TrackBus. A integra¸c˜ao do sistema proposto nesse trabalho e o TrackBus est´a descrita na Se¸c˜ao 4.3.

Ainda, ´e grande o n´umero de trabalhos que utilizam a base de dados do DataRio, tendo alguns deles funcionalidades semelhantes `as de nosso sistema. Como exemplo, temos o trabalho [Barbosa et al. 2014], que quantifica o desvio de ˆonibus de suas linhas originais atrav´es do c´alculo de uma pontua¸c˜ao baseada na distˆancia entre o ve´ıculo e a trajet´oria de sua linha. A ideia de mostrar desvios espaciais e temporais de um ˆonibus tamb´em aparece no trabalho [Bessa et al. 2016], que utiliza redes neurais para exibir ve´ıculos que possuam inconsistˆencias em rela¸c˜ao `a trajet´oria seguida ou ao tempo de percurso, que pode ser influenciado pelo trˆansito ou pelo pr´oprio desvio `a rota original. No entanto, apesar da proposta parecida, n˜ao ´e o objetivo de nenhum desses trabalhos inferir a qual linha pertencem os ˆonibus sem linha informada pelo DataRio.

1.2

Objetivos

Este trabalho descreve um sistema de tempo real capaz de obter, corrigir e dispo-nibilizar os dados de ˆonibus do DataRio, de minuto em minuto. Tendo em vista que a existˆencia de registros de ˆonibus sem linha associada e registros em regi˜oes fora dos limites da cidade do Rio de Janeiro s˜ao os problemas mais prejudiciais encontrados na base de dados, o sistema aqui desenvolvido objetiva corrigir esses dois tipos de problemas.

O sistema implementado ´e composto por quatro m´odulos, respons´aveis pelo car-regamento de linhas conhecidas, pela obten¸c˜ao dos dados do DataRio, pela inferˆencia de linhas percorridas por cada ˆonibus sem linha informada e a disponibiliza¸c˜ao dos resulta-dos. Os m´odulos que comp˜oe o sistema ser˜ao descritos no Cap´ıtulo 3. Foram elaborados os seguintes requisitos para auxiliar o desenvolvimento do sistema:

• O sistema deve ser capaz de inferir, a partir de rotas obtidas previamente, a qual linha um determinado ˆonibus pertence;

(17)

• O sistema deve ser capaz de detectar e remover da base de dados registros com coordenadas geogr´aficas fora dos limites do Rio de Janeiro;

• Os dados devem ser carregados, processados e disponibilizados pelo sistema dentro do intervalo de um minuto;

• Os dados corrigidos devem ser disponibilizados pelo sistema atrav´es de uma API para consulta an´aloga `a do DataRio.

1.3

Organiza¸

ao da Monografia

O restante deste trabalho est´a dividido em quatro outros cap´ıtulos, totalizando cinco com a introdu¸c˜ao. O Segundo Cap´ıtulo 2 apresenta uma descri¸c˜ao dos dados utili-zados, alguns problemas encontrados no desenvolvimento do sistema e como se organizam as estruturas de dados do mesmo. O Terceiro Cap´ıtulo 3 ´e respons´avel por explicar deta-lhadamente cada m´odulo do sistema, definindo conceitos utilizados por ele. O Cap´ıtulo 4 concentra a descri¸c˜ao dos resultados obtidos pelos testes realizados, bem como uma breve conclus˜ao ap´os cada um deles. A conclus˜ao, com apresenta¸c˜ao das limita¸c˜oes, contribui-¸c˜oes e reflex˜oes quanto a trabalhos futuros s˜ao encontrados no Cap´ıtulo 5.

(18)

Cap´ıtulo 2

A base dos ˆ

onibus do Rio de Janeiro

2.1

Descri¸

ao

Como dito no Cap´ıtulo 1, o portal DataRio ´e uma base de dados que disponibiliza informa¸c˜oes sobre diferentes aspectos da cidade do Rio de Janeiro, desde a localiza¸c˜ao dos ˆonibus em circula¸c˜ao at´e dados administrativos, indicadores de frequˆencia escolar, entre outros. Sendo assim, o portal ´e uma fonte rica de informa¸c˜ao para diversos projetos que visam estudar aspectos urbanos, sociais ou demogr´aficos da cidade. Uma das bases fornecidas no DataRio, mantida pela FETRANSPOR (Federa¸c˜ao das Empresas de Trans-portes de Passageiros do Estado do Rio de Janeiro), fornece informa¸c˜oes como a posi¸c˜ao geogr´afica, velocidade, linha e identificador ´unico dos aproximadamente 8000 ˆonibus na cidade do Rio Janeiro, atualizados minuto a minuto. O acesso a essas informa¸c˜oes pode ser feito atrav´es de uma API HTTP1.

Os dados de ˆonibus s˜ao disponibilizados pelo DataRio em trˆes formatos; JSON, CSV e PDF. Para o escopo desse trabalho, foi escolhido o formato CSV pela facilidade de leitura e escrita das informa¸c˜oes. No formato CSV disponibilizado pelo portal, as informa¸c˜oes s˜ao disponibilizadas de acordo com as colunas abaixo:

• Data/hora: String que representa o instante de tempo em que o registro foi gerado. As strings s˜ao fornecidas no formato mm-dd-yyyy hh:mm:ss. Um exemplo de instante de tempo fornecido pelo DataRio ´e a string 25-02-2017 00:08:01 ;

• Ordem: String contendo o identificador ´unico de cada ˆonibus. Um exemplo de Ordem ´e a string A29004 ;

1http://dadosabertos.rio.rj.gov.br /apiTransporte/apresentacao/csv/onibus.cfm

(19)

• Linha: String contendo o identificador da linha a qual o ve´ıculo est´a servindo. S˜ao exemplos de linhas de ˆonibus os identificadores 422 e 455-SV ;

• Latitude - Valor num´erico representando a distˆancia em graus ao Equador me-dida sobre o meridiano de Greenwich. Um exemplo de latitude ´e o valor -22.868 ;

• Longitude - Valor num´erico representando a distˆancia em graus ao meridiano de Greenwich medida ao longo do Equador. Um exemplo de longitude ´e o valor -43.292 ;

• Velocidade: Valor num´erico que representa a velocidade do ve´ıculo no instante em que foi armazenado do registro.

As requisi¸c˜oes HTTP realizadas pelo sistema foram implementadas utilizando a biblioteca urllib do Python, que ´e capaz de realizar a requisi¸c˜ao e gravar o resultado dentro de um diret´orio local tamb´em no formato CSV. Um arquivo CSV ´e baixado pelo sistema a cada minuto e cont´em as ´ultimas informa¸c˜oes conhecidas de cada ve´ıculo da frota de ˆonibus da cidade do Rio de Janeiro. De posse do arquivo CSV, o sistema carrega todas as informa¸c˜oes (Data/hora, ordem, linha, latitude, longitude e velocidade) em mem´oria na forma de uma cole¸c˜ao de dicion´arios. A estrutura de dados utilizada para armazenar os dados obtidos do DataRio ser´a explicada na Se¸c˜ao 2.4.

2.2

Inconsistˆ

encias nos dados

Como foi brevemente mencionado no Cap´ıtulo 1, os dados dos ˆonibus do Rio de Janeiro, fornecidos pelo portal DataRio, apresentam problemas de diversas naturezas. Esses problemas, ou inconsistˆencias, podem limitar ou at´e mesmo inviabilizar o desenvol-vimento de sistemas e/ou algoritmos de an´alise de dados que utilizam a base de registros de GPS dos ˆonibus. Um exemplo de aplicativo que sofre das limita¸c˜oes impostas pela base de dados ´e o TrackBus, descrito em [Rocha e Amaral 2016]. Nesta Se¸c˜ao, listamos os problemas encontrados de forma mais frequentes na base de dados.

Imprecis˜ao das coordenadas geogr´aficas. Apesar de o DataRio fornecer informa¸c˜oes de latitude e longitude com at´e seis casas decimais de precis˜ao, o que geraria erros de no m´aximo 0.11 metros, em alguns locais da cidade, a precis˜ao da posi¸c˜ao dos registros pode

(20)

7 variar bastante. Tal fenˆomeno se deve a interferˆencias externas como a presen¸ca de pr´edios ou montanhas e m´a qualidade dos aparelhos utilizados. Este problema ´e de dif´ıcil solu¸c˜ao, mas a incerteza gerada pela imprecis˜ao nas coordenadas geogr´aficas dos registros precisa ser considerada durante a estimativa das linhas proposta nesse trabalho.

Para tratar essa quest˜ao, foi implementado um c´alculo de confiabilidade das esti-mativas produzidas pelo sistema. Tal mecanismo est´a descrito no Cap´ıtulo 3 desse do-cumento. Vale ressaltar que, mesmo que os GPS retornassem posi¸c˜oes geogr´aficas 100% precisas, ainda assim n˜ao seria poss´ıvel estimar a linha de um ve´ıculo com 100% de pre-cis˜ao. Essa impossibilidade se deve ao fato de v´arios ve´ıculos compartilharem partes de sua trajet´oria com outros ˆonibus.

Velocidades absurdas. E poss´ıvel encontrar na base de dados ve´ıculos que permane-´ cem com velocidade nula por per´ıodos muito longos ou ve´ıculos com valores de velocidade muito acima do permitido pela legisla¸c˜ao brasileira. Tal fato ´e causado por falhas ou defeitos nos aparelhos de GPS presentes nos ve´ıculos. Como a informa¸c˜ao da velocidade do ve´ıculo n˜ao ´e fundamental para a estimativa das linhas servidas por cada ve´ıculo, tais inconsistˆencias n˜ao foram tratadas nesse trabalho.

Registro no mar, rios ou lagoas. Devido a falhas do GPS dos ˆonibus e/ou a im-precis˜ao das coordenadas geogr´aficas, alguns registros s˜ao feitos em ´areas ocupadas por rios, lagoas ou pelo mar. Como esses registros n˜ao podem ser associados ao trajeto de ne-nhuma linha, definimos uma estrat´egia para eliminar estas informa¸c˜oes da base de dados. A Se¸c˜ao 2.3 desse documento descreve com mais detalhes o procedimento adotado.

Indisponibilidade do DataRio. Como observado no trabalho [Rocha e Amaral 2016], percebemos durante a execu¸c˜ao deste projeto que o DataRio sofre frequentemente de pro-blemas de instabilidade de acesso. Sendo assim, seria interessante fornecer uma alter-nativa capaz de minimizar falhas pontuais de comunica¸c˜ao. De fato, o sistema proposto neste trabalho poderia substituir o DataRio temporariamente para evitar que servi¸cos que dependam dos dados fornecidos pelo portal fiquem fora do ar. Indisponibilidades mais severas, como queda do portal por longos per´ıodos, s˜ao imposs´ıveis de se resolver j´a que o portal ´e a fonte prim´aria dos dados em quest˜ao.

(21)

Taxa de atualiza¸c˜ao. Em teoria, a base de dados dos ˆonibus fornecida pelo DataRio deveria ser atualizada a cada minuto. Contudo, muitos ve´ıculos passam horas sem sequer uma atualiza¸c˜ao. Como exemplo, podemos citar a Figura 2.1, que representa uma amostra capturada `as 18h do dia 18/06/2017, onde 27% dos 5566 registros haviam sido gravados antes do meio-dia. De fato, o DataRio fornece, a cada minuto, o ´ultimo registro conhecido de cada ve´ıculo da frota de ˆonibus da cidade do Rio de Janeiro.

Figura 2.1: ´Ultima atualiza¸c˜ao x N´umero de ˆonibus. A imagem mostra que nem todos os ˆ

onibus s˜ao atualizados minuto a minuto, como se imaginava a princ´ıpio.

Ordens sem linha. Raz˜ao motivadora da implementa¸c˜ao desse sistema, alguns ˆonibus n˜ao vˆem associadas a linha alguma nos arquivos disponibilizados pelo DataRio. Como ilustra a figura 2.2, a ocorrˆencia desse fenˆomeno ´e de aproximadamente 7% e impacta os sistemas dependentes da completude dos dados. Tal porcentagem fora retirada de uma an´alise feita em uma amostra de 6653 ordens retirada do pr´oprio DataRio em dezembro de 2016 na parte da manh˜a.

2.3

Filtragem dos dados

Apesar de ser importante que se consiga oferecer o melhor servi¸co poss´ıvel (isto ´e, com o maior n´umero de registros) para as aplica¸c˜oes interessadas em consumir os dados de ˆonibus do Rio de Janeiro tratados pelo nosso sistema, alguns registros com informa¸c˜oes

(22)

9

Figura 2.2: Propor¸c˜ao de ˆonibus com/sem linha associada. Apesar de serem minoria, os ˆ

onibus sem linha informada representam uma fra¸c˜ao relevante do total de ordens.

inconsistentes e que n˜ao s˜ao tratadas pelo nosso sistema precisam ser descartados. Sendo assim, registros que n˜ao atendam aos crit´erios de qualidade impostos pelo sistema s˜ao ignorados pelo programa, n˜ao havendo nem mesmo a grava¸c˜ao dos mesmos em diret´orios separados. Portanto, caso algum sistema externo queira utilizar os arquivos gravados por esse programa, deve considerar a poss´ıvel perda de informa¸c˜oes. Nesta Se¸c˜ao descrevere-mos os filtros utilizados em nosso sistema.

Filtro de formato inconsistente. Caso algum registro seja disponibilizado em um formato fora do padr˜ao estabelecido pelo portal DataRio e descrito no in´ıcio deste Ca-p´ıtulo, o mesmo ser´a desconsiderado. Durante os nossos testes, n˜ao houve registros da ocorrˆencia de tais eventos. Ainda assim, o filtro foi adicionado para garantir a robustez e a n˜ao interrup¸c˜ao do sistema.

Filtro por data. Como o Data Rio disponibiliza os dados de forma instantˆanea (ou seja, sempre fornece as ´ultimas informa¸c˜oes disponibilizadas por um ˆonibus, independente de seu GPS estar ativo e logando ou n˜ao), ´e necess´ario armazenar, para cada ordem, a data e hora de sua ´ultima atualiza¸c˜ao. Caso o sistema receba um registro com data igual `

a ´ultima data armazenada, esse ´e desconsiderado. Dessa forma, n˜ao s˜ao armazenadas informa¸c˜oes repetidas na base.

(23)

Filtro por duplicidade. Caso as informa¸c˜oes de latitude e longitude se repitam em sequˆencia, ou seja, dois registros consecutivos possuam a mesma localiza¸c˜ao geogr´afica, o registro tamb´em ´e rejeitado, evitando que estimativas sejam feitas para ˆonibus que n˜ao est˜ao em movimento.

Filtro por registros em rios, lagoas e no mar. Como ´e imposs´ıvel que um ˆonibus circule sobre ´agua, qualquer registro sobre o mar, rios ou lagoas deve ser desconsiderado. Para filtrar esses registros, utilizamos as informa¸c˜oes geogr´aficas dos limites do munic´ıpio do Rio de Janeiro2 e testamos se os registros obtidos do DataRio pertencem ao interior do pol´ıgono, utilizando um algoritmo de classifica¸c˜ao ponto conjunto como o winding number. O algoritmo ´e implementado por bibliotecas como a Shapely.

2.4

Estrutura¸

ao dos dados

A estrutura de dados utilizada para armazenar e manipular os dados obtidos do portal DataRio em nossa aplica¸c˜ao ´e uma cole¸c˜ao de dicion´arios. Dicion´arios s˜ao estrutu-ras de dados eficientes, j´a que s˜ao tipicamente implementadas atrav´es de tabelas hash, e simples de usar. Estas caracter´ısticas fazem com que o carregamento, atualiza¸c˜ao e ma-nipula¸c˜ao dos dados de GPS de ˆonibus usando dicion´arios seja intuitiva e apresente boa performance, dentro das restri¸c˜oes temporais impostas pela taxa de atualiza¸c˜ao dos dados do DataRio. As estruturas de dicion´arios utilizados em nossa aplica¸c˜ao para representar e manipular os dados obtidos do DataRio ser˜ao descritos no restante desta Se¸c˜ao.

Grid. E respons´´ avel por armazenar as rotas das linhas conhecidas estimadas e fornecidas por [Padilha 2017]. Este dicion´ario ´e preenchido na inicializa¸c˜ao do sistema e consultado pelo algoritmo respons´avel por estimar a qual linha pertence um registro. Cada item do dicion´ario representa uma c´elula de um grid que cobre toda a cidade do Rio de Janeiro. A chave de cada c´elula ´e a string lat,lng onde lat e lng s˜ao, respectivamente, os valores da latitude e da longitude truncados na terceira casa decimal, como explicado na se¸c˜ao 3.2. Sendo assim cada c´elula grid [“lat,lng”] = <lista–pontos> armazena a lista de pontos das trajet´orias conhecidas que est˜ao contidos na regi˜ao espacial representada pela c´elula do grid. A Figura 2.3 mostra a rela¸c˜ao entre os elementos que comp˜oem o dicion´ario.

(24)

11

Figura 2.3: Elementos que comp˜oem o dicion´ario Grid. Este dicion´ario ´e usado para dividir a cidade em c´elulas e guardar os pontos das trajet´orias das linhas de ˆonibus.

Figura 2.4: Elementos que comp˜oem o dicion´ario dicion´ario Ordem. Este dicion´ario guarda, para cada ordem, informa¸c˜oes necess´arias para a inferˆencia de sua linhas, entre elas, uma lista com os ´ultimos N pontos de sua trajet´oria.

Ordem. E respons´´ avel por armazenar as informa¸c˜oes de cada ve´ıculo fornecidas pelo DataRio. Este dicion´ario ´e atualizado minuto a minuto de modo que, para cada ordem, haja o hist´orico completo dos N ´ultimos registros dispon´ıveis. Neste dicion´ario tamb´em ´e armazenado se a linha relativa a uma determinada ordem foi informada pelo DataRio ou inferida pelo sistema. Tal distin¸c˜ao ´e necess´aria pois o sistema tenta descobrir a linha apenas de ordens que tenham originalmente sido recebidas sem essa informa¸c˜ao. Em outras palavras, mesmo que uma ordem tenha sua linha inferida, ´e desej´avel que ela continue sendo avaliada em pr´oximos ciclos de processamento. Os elementos que comp˜oem o dicion´ario Ordem podem ser observados na Figura 2.4.

(25)

Figura 2.5: Elementos que comp˜oem o dicion´ario dicion´ario Linha. Este dicion´ario arma-zena as ordens pertencentes a cada linha.

Linha. E respons´´ avel por armazenar quais ordens est˜ao associadas a uma determinada linha. Durante a atualiza¸c˜ao dessa estrutura, ´e preciso evitar que uma ordem seja associ-ada a mais de uma linha em um mesmo instante. Isto pode acontecer quando o algoritmo que estima a linha a qual pertence uma ordem corrige a estimativa com o passar das ite-ra¸c˜oes. Sendo assim, ´e necess´ario garantir que, para cada atualiza¸c˜ao da linha a qual uma ordem pertence, haja a desassocia¸c˜ao `a linha anterior, que fora substitu´ıda. Os elementos que comp˜oem o dicion´ario Linha podem ser vistos na figura 2.5.

Como os m´odulos do sistema s˜ao executados atrav´es de threads independentes e um dicion´ario n˜ao pode ser acessado e modificado ao mesmo tempo, foi necess´ario adicionar um lock para lidar com as quest˜oes de concorrˆencia. O uso do lock ´e feito de modo que, toda vez que uma opera¸c˜ao de leitura ou escrita est´a prestes a ser realizada em um dicion´ario, o lock seja adquirido e liberado ap´os a realiza¸c˜ao da opera¸c˜ao.

(26)

Cap´ıtulo 3

Sistema Proposto

A proposta desta monografia ´e o desenvolvimento de um sistema capaz de, a partir dos registros de GPS dos ˆonibus que comp˜oem a frota e das rotas das linhas de ˆonibus, inferir a qual linha pertence cada ve´ıculo em opera¸c˜ao na cidade do Rio de Janeiro. Sendo assim, um subproduto do sistema proposto ´e o enriquecimento dos dados fornecidos pelo DataRio. Como descrito nos cap´ıtulos anteriores, a informa¸c˜ao da linha servida pelos ve´ıculos em opera¸c˜ao no Rio de Janeiro est´a frequentemente indispon´ıvel na base de dados originalmente disponibilizada pelo portal. Portanto, a oferta de um sistema capaz de estimar essa informa¸c˜ao e usar esta estimativa para enriquecer os registros da base de dados original ´e uma grande colabora¸c˜ao para todos interessados em desenvolver tecnologias baseadas nos registros de GPS dos ˆonibus do Rio de Janeiro.

Neste cap´ıtulo, vamos apresentar os m´odulos que comp˜oem o sistema proposto. Uma vis˜ao geral desses m´odulos e da dependˆencia entre eles pode ser vista na Figura 3.1.

3.1

odulo de carregamento de linhas

Executado uma vez, na inicializa¸c˜ao do sistema, o m´odulo de carregamento de linhas consiste em, a partir de arquivos previamente obtidos, carregar para o dicion´ario Grid (apresentado no Cap´ıtulo 2) os pontos das trajet´orias que comp˜oem as linhas da cidade do Rio de Janeiro. Tais linhas foram obtidas utilizando o trabalho de mestrado [Padilha 2017], como dito na Se¸c˜ao 1.1. As sete linhas que estavam dispon´ıveis e foram utilizadas pelo sistema s˜ao a 422, 298, 864, 326, 455, 778, 908. Para cada uma das sete linhas citadas, o trabalho de [Padilha 2017] fornece um trajeto de ida e um trajeto de

(27)

Figura 3.1: Diagrama com os m´odulos do sistema proposto e as dependˆencias entre eles. volta. Sendo assim, o sistema aqui proposto ´e capaz de informar n˜ao apenas a qual linha pertence um ve´ıculo, mas tamb´em qual a dire¸c˜ao percorrida por cada ˆonibus em opera¸c˜ao. Contudo, ´e importante ressaltar que o funcionamento do m´odulo n˜ao est´a atrelado `as linhas aqui citadas, podendo quaisquer outras trajet´orias serem utilizadas.

A estrat´egia utilizada para otimizar o acesso das linhas conhecidas foi a utiliza¸c˜ao do dicion´ario Grid com c´elulas de aproximadamente 111m x 111m. A escolha de tamanho da c´elula foi feita de forma que a ´area ocupada pelas mesmas fosse suficientemente abran-gente (de aproximadamente um quarteir˜ao), mas que n˜ao tornasse excessiva a quantidade de pontos de trajet´oria em cada c´elula do grid. De fato, o custo computacional do algo-ritmo de estimativa de linhas ´e fun¸c˜ao do n´umero registros analisados a cada itera¸c˜ao e dos pontos de rotas conhecidas por c´elula do grid.

(28)

15 Linha Distˆancia

326(ida) 112,01

864(ida) 45,87

864(volta) 45,93

298 99,56

Tabela 3.1: Distˆancia m´edia entre os pontos das trajet´orias de linhas, utilizada para avaliar a viabilidade do tamanho de c´elula escolhido.

Para definir o valor ´otimo do tamanho de c´elula, tamb´em foi analisada a distˆancia m´edia entre os pontos das trajet´orias de algumas linhas conhecidas. O resultado, que pode ser observado na tabela 3.1, mostra que, utilizando c´elulas de tamanho 111m x 111m, h´a uma grande probabilidade de que exista ao menos um ponto da trajet´oria do ˆ

onibus em cada c´elula. Por esse motivo, ´e f´acil observar que a escolha do tamanho da c´elula influencia diretamente na qualidade da estimativa de linha realizada pelo sistema. Para garantir que a parametriza¸c˜ao do m´odulo seja definida de forma consistente, um caso de teste analisando os resultados de diferentes configura¸c˜oes foi adicionado `a Se¸c˜ao 4.1.

Outro fator que influenciou a escolha do tamanho de c´elula foi a conveniˆencia de ser poss´ıvel acessar os dados de uma c´elula apenas truncando seus valores de latitude e longi-tude na terceira casa decimal e os utilizando como chave de acesso ao grid. Por exemplo, se o m´odulo de inferˆencia de linhas deseja obter todas as linhas que passam pela mesma c´elula onde se encontra o ponto (22.246421,-44.543211), bastaria apenas acessar o dicio-n´ario Grid passando a string “22.246,-44.543” como chave, pois o m´odulo de carregamento das linhas conhecidas utiliza a mesma estrat´egia para construir o dicion´ario.

Como o m´odulo de carregamento ´e executado durante a inicializa¸c˜ao do sistema, n˜ao h´a quaisquer requisitos mais r´ıgidos referentes `a sua performance.

3.2

odulo de acesso aos dados do Data Rio

Nesse m´odulo, s˜ao realizadas as requisi¸c˜oes HTTP para o portal de dados DataRio e a carga das informa¸c˜oes no dicion´ario Ordem, descrito na se¸c˜ao 2.1. ´E crucial que, dentro de sessenta segundos (per´ıodo estabelecido para que seja feita uma nova requisi¸c˜ao ao DataRio), a carga dos dados seja completa. Se essa condi¸c˜ao n˜ao for atendida, haver´a

(29)

perda de informa¸c˜oes. Mesmo a carga de dados levando em m´edia 1.6 segundos, valor bem inferior ao limite estabelecido, o sistema monitora o tempo de execu¸c˜ao do m´odulo e alerta o usu´ario caso o limite de tempo seja excedido.

3.3

odulo de inferˆ

encia de linhas

Crucial ao sistema, o m´odulo de inferˆencia ´e respons´avel por tentar associar regis-tros inicialmente sem linha (ou de linha anteriormente inferida pela aplica¸c˜ao) a uma das linhas inseridas no sistema pelo m´odulo de carregamento de linhas. S˜ao avaliadas apenas ordens que possuam ao menos cinco (valor parametriz´avel, denotado por N ) registros j´a conhecidos, que servir˜ao de referˆencia, e cuja linha associada n˜ao tenha sido informada pelo DataRio. A fim de obter o melhor parˆametro para o n´umero de registros conhecidos a serem analisados, foi adicionado um caso de teste focado nessa quest˜ao `a Se¸c˜ao 4.1.

A raz˜ao pela qual o sistema recalcula linhas de uma ordem j´a inferidas anterior-mente ´e a possibilidade de um ve´ıculo alterar sua trajet´oria durante o servi¸co, fato que precisa ser diagnosticado pelo m´odulo. Como exemplo, ´e poss´ıvel citar um ˆonibus sem linha informada que fazia a rota do 512 e, ap´os algum tempo, passou a fazer a rota do 513. Inicialmente, o sistema ir´a responder que o ˆonibus pertence `a linha 512, mas ´e necess´ario que essa informa¸c˜ao seja constantemente recalculada em itera¸c˜oes posteriores para que essa mudan¸ca de trajet´oria seja percebida o mais r´apido poss´ıvel.

A seguir, descreveremos os conceitos utilizados na implementa¸c˜ao dos Algoritmos 1 e 2 respons´aveis pela estimativa das rotas dos ˆonibus em opera¸c˜ao.

Esquema de pontua¸c˜ao. Suponha que sejam utilizados cinco pontos conhecidos da trajet´oria de uma ordem para que sua linha seja inferida. A an´alise de cada um destes cinco pontos constitui o que chamamos de rodada e o resultado retornado pelo m´odulo ´e composto pela agrega¸c˜ao das pontua¸c˜oes recebidas pelas linhas candidatas em cada rodada. Sendo assim, cada linha candidata recebe, ao final do processamento do m´ o-dulo, uma pontua¸c˜ao que pode ser enxergada como sendo um ´ındice de confiabilidade do resultado. A linha com maior pontua¸c˜ao ´e associada `a ordem analisada.

A soma das pontua¸c˜oes de todas as linhas ´e necessariamente um valor predetermi-nado, chamado de Pontua¸c˜ao M´axima e denotado por PM, normalmente o de cem pontos.

(30)

17 Pontua¸c˜ao da Rodada e denotada por Pr, que pode ser compreendida como o total de

pontos distribu´ıdo entre as linhas candidatas a cada rodada. O c´alculo da Pontua¸c˜ao da Rodada ´e dado pela f´ormula abaixo:

Pr=

PM

N (3.1)

A quantidade de pontos atribu´ıda a cada linha candidata depende da distˆancia entre o ponto em an´alise e as rotas que passam pela c´elula do dicion´ario Grid que cont´em o registro. O crit´erio de distribui¸c˜ao ser´a descrito nos pr´oximos par´agrafos. ´E importante observar que, devido ao baixo n´umero de linhas conhecidas pelo sistema, muitas vezes as ordens analisadas n˜ao compartilham c´elulas com linha alguma. Por conta disso, foi introduzido ao sistema o conceito de linha vazia, que pode ser vista como o conjunto de linhas n˜ao cadastradas ou inexistentes. A linha vazia recebe pontua¸c˜ao toda vez que n˜ao for poss´ıvel atribuir pontos a alguma linha conhecida pelo sistema durante uma rodada.

Distribui¸c˜ao da pontua¸c˜ao. Durante sua execu¸c˜ao, o m´odulo recebe os N ´ultimos pontos por onde uma determinada ordem passou e os analisa individualmente. Para cada ponto recebido, s˜ao obtidas todas as linhas candidatas atrav´es do acesso `a c´elula onde se encontra o ponto. Uma linha ´e considerada candidata quando ao menos um ponto de sua trajet´oria se encontra na mesma c´elula em que o ponto sob an´alise em uma rodada.

Figura 3.2: Exemplo de c´alculo da distˆancia ordem-linha, onde os pontos em laranja e azul representam pontos de trajet´oria de duas linhas conhecidas e o ponto rosa ´e o ponto sob an´alise em uma rodada. As linhas tracejadas representam a distˆancia em linha reta entre a ordem e cada uma das linhas.

(31)

O passo executado na sequˆencia ´e o c´alculo da distˆancia entre o registro atual e cada linha candidata, denotada por l. Para calcular essa distˆancia utilizamos as coordenadas do registro p analisado na rodada e um ou mais pontos que comp˜oem a rota da linha l. Caso haja apenas um ponto de l presente na c´elula do dicion´ario Grid que cont´em p, ser´a realizado o c´alculo simples de distˆancia ponto a ponto. Caso l possua mais de um ponto de sua trajet´oria dentro da c´elula em quest˜ao, ser˜ao tra¸cados um ou mais segmentos de reta s que conectem os pontos de trajet´oria (como na trajet´oria laranja no exemplo ilustrado pela Figura 3.2). No caso de haver apenas um segmento resultante, a distˆancia entre a ordem e a linha ser´a a distˆancia entre este segmento e o registro p. Caso haja mais de um segmento de reta, ser´a calculada a distˆancia entre p e cada um dos segmentos produzidos, sendo a resposta a menor distˆancia encontrada. ´E importante frisar que, como a trajet´oria das linhas conhecidas tem seus pontos ordenados temporalmente, os segmentos de reta tra¸cados devem respeitar essa ordena¸c˜ao de modo que somente pontos consecutivos sejam associados.

Algorithm 1 Inferˆencia de Linhas

1: function Infere(lista–pontos, PM) . lista–pontos: N ´ultimos pontos de uma ordem

2: for i = 0 to N do 3: scores–rodada = calcula–pontuacao(lista–pontos[i], Pr) 4: scores–linhas.push(scores–rodada) 5: end for 6: soma–total = consolida(score–linhas) 7: for l in soma–total do 8: soma–total[l] = soma–total[l] / PM 9: end for

10: return linha de maior pontua¸c˜ao

11: end function

As distˆancias calculadas s˜ao, ent˜ao, armazenados temporariamente atrav´es de uma rela¸c˜ao (l,d), sendo d a distˆancia entre o registro p e a linha l. A partir dessa rela¸c˜ao, a pontua¸c˜ao da rodada Pr ´e distribu´ıda entre as linhas candidatas de modo que as linhas

mais pr´oximas ao ponto recebam proporcionalmente maior pontua¸c˜ao do que as linhas de maior distˆancia, sendo esse c´alculo feito considerando a soma s de todas as distˆancias ordem-linha da rodada. Caso n˜ao haja linha candidata, a pontua¸c˜ao completa da rodada

(32)

19 Algorithm 2 C´alculo das pontua¸c˜oes em uma rodada

1: function calcula–pontuacao(p, Pr)

2: linhas–candidatas = linhas contidas na mesma c´elula de p

3: soma = 0

4: for l in linhas–candidatas do

5: distancia–linha[l] = distancia(l, p)

6: soma += distancia–linha[l]

7: end for

8: score–linha[l] = (1− distancia–linha[l] / soma) * Pr

9: return score–linha

10: end function

´e dada `a linha vazia. A f´ormula da distribui¸c˜ao de pontua¸c˜ao entre as linhas candidatas, caso haja mais de uma, ´e a seguinte:

scoreLinha[l] = (1 − distanciaLinha[l]

s ) ∗ Pr (3.2)

Um dos requisitos do sistema ´e que ele retorne apenas uma linha como resposta para cada ordem. Sendo assim, ser´a escolhida a linha de maior pontua¸c˜ao ao final das N rodadas, desde que n˜ao seja a linha vazia. Essa ser´a considerada apenas caso nenhuma outra linha possua pontua¸c˜ao diferente de zero.

Para o sucesso da execu¸c˜ao do sistema, ´e necess´ario que, a cada minuto, todas as ordens que n˜ao tenham linha informada pelo DataRio sejam avaliadas ou reavaliadas. Assim, o sistema monitora constantemente a execu¸c˜ao do m´odulo e alerta o usu´ario caso o valor tempo limite de sessenta segundos seja ultrapassado sem que todas as ordens sem linha tenham sido analisadas. Durante os testes da vers˜ao final do sistema, esse valor nunca foi excedido.

3.4

Disponibiliza¸

ao dos resultados

Para disponibilizar os dados para usu´arios externos, foi implementado um servidor capaz de produzir um arquivo JSON no mesmo formato utilizado pelo DataRio, enrique-cido com as informa¸c˜oes de rotas estimadas pelo sistema, permitindo que usu´arios que atualmente obt´em informa¸c˜oes dessa fonte possam migrar para esse sistema sem maior

(33)

esfor¸co, apenas alterando a url consultada.

Para isso, foi necess´ario utilizar a biblioteca web do Python, que permite a cria¸c˜ao de um servidor web capaz de tratar requisi¸c˜oes HTTP. Como a biblioteca j´a implementa e pr´e-configura uma razo´avel gama de funcionalidades, o trabalho de disponibilizar as informa¸c˜oes computadas pelo sistema se resume `a adequa¸c˜ao ao formato JSON. A Figura 3.3 apresenta o c´odigo necess´ario para instanciar o servidor.

Figura 3.3: C´odigo necess´ario para subir o servidor web

Quando o usu´ario acessa o endere¸co https://<ip>/linhas, lhe ´e retornado uma fotografia dos ´ultimos registros de cada ordem presente no sistema, de modo semelhante ao realizado pelo DataRio, com a diferen¸ca da adi¸c˜ao de filtros e das linhas inferidas. Para atender tal requisi¸c˜ao, o sistema acessa o dicionario Ordens, faz um percorrimento completo da estrutura adicionando `a vari´avel de retorno cada registro encontrado. Ap´os o percorrimento, o retorno ´e colocado no formato JSON e repassado ao usu´ario.

Caso a url https://<ip>/linha/<l>, onde l ´e uma linha de ˆonibus da cidade, seja acessada, o sistema buscar´a todas as ordens que atualmente possuam essa linha associada e retornar´a ao usu´ario as informa¸c˜oes no mesmo formato JSON j´a descrito. Para realizar essa consulta, primeiro ´e acessado o dicion´ario Linha passando l como chave, o que retorna como resultado todas as ordens associadas a l. Essas linhas s˜ao ent˜ao adicionadas a uma vari´avel tempor´aria de retorno. Em seguida, como o dicion´ario Linha apenas possui o n´umero das ordens, ´e necess´ario consultar o restante das informa¸c˜oes, entre elas a ´ultima posi¸c˜ao geogr´afica registrada. Esse complemento das informa¸c˜oes ´e feito atrav´es do acesso do dicion´ario Ordem, passando como chave cada uma das ordens. Conforme os dados v˜ao sendo obtidos, a vari´avel de retorno vai sendo atualizada. Tendo obtido todas as informa¸c˜oes necess´arias, resta ao sistema apenas format´a-las e retornar a requisi¸c˜ao.

(34)

Cap´ıtulo 4

Estudo de Caso

Para avaliar a qualidade das estimativas de linhas produzidas pelo sistema e testar o atendimento aos requisitos estabelecidos na Se¸c˜ao 1.2, foi realizada uma s´erie de testes. Nesse cap´ıtulo, ser˜ao descritos os resultados obtidos em trˆes casos de uso, respons´aveis por analisar pontos diferentes do projeto.

4.1

Precis˜

ao da estimativa das rotas

A ideia desse primeiro teste consiste em selecionar ordens cujas linhas tenham sido informadas pelo DataRio - ou seja, j´a conhecidas de antem˜ao - e solicitar que o sistema estime a quais linhas os ve´ıculos est˜ao servindo, baseado nas rotas produzidas pelo trabalho [Padilha 2017]. Tal proposta ´e interessante pois permite avaliar a confiabilidade da estimativa produzida pelo sistema. Quanto maior for o ´ındice de acertos em rela¸c˜ao ao valor informado pelo DataRio, mais confi´avel ´e o c´alculo realizado e mais ´util ´e o servi¸co oferecido pela aplica¸c˜ao proposta nesse trabalho.

Esse teste tamb´em nos permite analisar qual a sensibilidade do m´etodo em rela¸c˜ao aos parˆametros de tamanho de c´elula e de n´umero de pontos a serem analisados. Dessa forma, o mesmo teste foi executado com parˆametros diferentes, para que fosse poss´ıvel julgar qual configura¸c˜ao funciona melhor para a aplica¸c˜ao.

Para obtermos resultados consistentes, todas as execu¸c˜oes desse caso de teste fo-ram iniciadas `as 10:00 do dia 10/07/2017 e encerradas `as 12:00 do mesmo dia. Como o objetivo era observar o ´ındice m´edio de acertos das estimativas, a dura¸c˜ao de duas horas foi suficiente para obter uma amostragem satisfat´oria para a an´alise, processando uma

(35)

m´edia de 3000 ve´ıculos por linha. Assim, os parˆametros de configura¸c˜ao usados neste teste podem ser vistos na Tabela 4.1.

Atributo V alor

N´umero de pontos analisados 5,10 e 20

Tamanho de cada c´elula 1111x1111m2 e 111x111m2

Considerar trajet´orias de ida e volta False

Retornar mais de uma possibilidade False

Tabela 4.1: Configura¸c˜ao do caso de teste elaborado com a finalidade de verificar a qua-lidade das estimativas das linhas. Foram feitos testes com diferentes parˆametros.

Para que a execu¸c˜ao do teste fosse poss´ıvel, foi necess´ario fazer uma altera¸c˜ao no programa de modo que o m´odulo de inferˆencia de linhas recebesse, al´em dos pontos de trajet´oria da ordem, a informa¸c˜ao de linha informada pelo DataRio. Assim, caso a linha informada fosse uma das linhas conhecidas pelo sistema, ele armazenaria o resultado obtido pelo m´odulo, gravando em um arquivo com a pontua¸c˜ao obtida pela linha e um indicador de sucesso da estimativa (ou seja, armazena se o sistema foi capaz ou n˜ao de acertar a inferˆencia da linha).

4.1.1

Resultados obtidos

No fim da execu¸c˜ao dos testes, os dados armazenados foram agrupados e o resultado pode ser observado nos gr´aficos das Figuras 4.1, 4.2 e 4.3 comparando as porcentagens de acerto da estimativa para cada linha conhecida.

Na Figura 4.1, apresentamos os resultados obtidos utilizando os parˆametros de 5 pontos anteriores de trajet´oria e tamanho de c´elula como sendo 1111x1111m2e 111x111m2.

Observamos que ´ındice de acerto foi superior a 75% para as linhas 326, 778 e 908 em am-bos os casos. Contudo, para as linhas 455 e 864, os resultados mostram um baixo ´ındice de acerto com c´elulas menores. Analisando os dados, percebemos que, com o aumento da c´elula, a acur´acia m´edia aumenta. No entanto, linhas como a 422 e a 326 tiveram seu ´ındice de acerto diminu´ıdo com essa altera¸c˜ao.

Fenˆomeno semelhante pode ser observado na Figura 4.2, onde s˜ao utilizados os parˆametros de 10 pontos anteriores e c´elulas de 1111x1111m2 e 111x111m2. Como

(36)

23

Figura 4.1: Resultado da estimativa das linhas. Foram analisados os 5 ´ultimos pontos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2 (imagem da esquerda)

e 111x111m2 (imagem da direita).

mas as linhas 422 e 326 n˜ao acompanharam a tendˆencia e novamente perderam acur´acia com c´elulas maiores.

A Figura 4.3, que representa os ´ındices de acerto com parˆametros de 20 pontos anteriores e c´elulas de 1111x1111m2 e 111x111m2 confirma o crescimento no ´ındice de acur´acia com o aumento de c´elula. No entanto, ao compararmos os gr´aficos presentes nas 3 figuras, ´e poss´ıvel observar que, conforme o n´umero de pontos analisados aumenta, menor ´e o ganho em precis˜ao que se tem ao aumentar a ´area coberta pela c´elula. Tal observa¸c˜ao pode ser confirmada observando a Tabela 4.2, que permite uma an´alise quantitativa dos resultados.

Como a an´alise visual dos gr´aficos nem sempre possibilita uma avalia¸c˜ao quanti-tativa dos valores exibidos, para definir o conjunto de parˆametros com melhor resultado no teste, foi calculada a m´edia entre as porcentagens de acerto para cada um deles. O resultado pode ser observado na tabela 4.2, onde ´e poss´ıvel perceber uma melhora na

Figura 4.2: Resultado da estimativa das linhas. Foram analisados os 10 ´ultimos pontos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2 (imagem da esquerda) e 111x111m2 (imagem da direita).

(37)

Figura 4.3: Resultado da estimativa das linhas. Foram analisados os 20 ´ultimos pontos da trajet´oria de cada ve´ıculo, com c´elulas de tamanhos 1111x1111m2 (imagem da esquerda)

e 111x111m2 (imagem da direita).

acur´acia da estimativa conforme o n´umero de pontos analisados e o tamanho de c´elula aumentam. O resultado era esperado no sentido em que os dois parˆametros influenciam diretamente na quantidade de informa¸c˜ao passada ao m´odulo de inferˆencia de linhas. Em outras palavras, com o aumento do n´umero de pontos de trajet´oria analisados e do ta-manho de c´elula, mais insumos s˜ao passados ao m´odulo de inferˆencia e consequentemente melhor ´e a qualidade do resultado. ´E importante frisar que o aumento desses parˆametros acarreta em um maior consumo de recursos de mem´oria e processamento, devendo assim seu ajuste ser feito com cautela.

N´umero de pontos Tamanho de C´elula Porcentagem m´edia de acerto

5 111x111m2 72.72% 5 1111x1111m2 81.37% 10 111x111m2 78.21% 10 1111x1111m2 83.54% 20 111x111m2 83.96% 20 1111x1111m2 87.82%

Tabela 4.2: Rela¸c˜ao parˆametros x Porcentagem m´edia de acerto.

Assim, ´e poss´ıvel concluir que a efic´acia do m´odulo de inferˆencia de linhas est´a diretamente atrelada aos parˆametros passados a ele. No entanto, em todas as combina¸c˜oes de parˆametros utilizadas, foram obtidos ´ındices de acerto m´edio acima de 70%. Para que essa m´etrica possa ser melhorada, um pr´oximo passo ´e buscar entender que fatores al´em da parametriza¸c˜ao influenciam a porcentagem de acertos.

(38)

25

4.2

Origem dos erros

O segundo caso de teste surgiu como uma tentativa de entender os motivos pe-los quais algumas estimativas de linha do caso de teste apresentado na se¸c˜ao anterior apresentaram baixa precis˜ao. Isto ´e, apesar de a precis˜ao geral da estimativa ser relati-vamente satisfat´oria, seria interessante descobrir as raz˜oes que a fizeram ser mais baixa para algumas linhas para entender se a estimativa poderia ser melhorada.

Um acontecimento que chamou a aten¸c˜ao durante o primeiro caso de teste foi a presen¸ca de pontua¸c˜oes zeradas atribu´ıdas `a linha conhecida em algumas estimativas. De acordo com o nosso algoritmo, neste caso, nenhum dos N ´ultimos pontos conhecidos da ordem em quest˜ao compartilhou c´elula do dicion´ario Grid com pontos da trajet´oria correta. Esse evento ´e altamente improv´avel, mas aconteceu com certa frequˆencia durante as an´alises. Para entender o problema, decidimos gerar uma visualiza¸c˜ao dos pontos das rotas e dos registros desses ˆonibus.

Figura 4.4: Trajet´oria da linha 455 (azul) e pontos de ordens cuja linha informada pelo DataRio era 455, mas que receberam pontua¸c˜ao zerada para tal linha na estimativa (ver-melho). Os pontos em vermelho foram obtidos no Caso de Teste 1, com 20 pontos ante-riores e c´elulas de 1111 x 1111m2.

Observe a Figura 4.4, que compara pontos da rota da linha 455 (em azul) com pontos de trajet´oria de ordens cuja linha informada pelo DataRio era a pr´opria 455 (em vermelho). Em rela¸c˜ao aos testes realizados, o que difere os pontos em vermelho dos outros registros analisados para esta rota ´e que a pontua¸c˜ao final da linha 455 atribu´ıda

(39)

a eles foi zero. Isso indica que h´a alguma inconsistˆencia no teste realizado ou no dado fornecido pelo DataRio. A Figura deixa claro que as ordens, representadas pelos pontos em vermelho, n˜ao seguem a rota da linha informada pelo portal.

A primeira hip´otese que justificaria tal fato ´e a de que a trajet´oria oficial da linha 455 tenha mudado recentemente. Como as rotas de linhas conhecidas foram calculadas utilizando dados de 2016 e essa an´alise foi realizada em 2017, ano de profundas altera¸c˜oes nas linhas do Rio de Janeiro, ´e poss´ıvel que as linhas utilizadas por nosso sistema tamb´em tenham passado por mudan¸cas. Contudo, de acordo com site [Onilinhas - Itinerarios], a linha 455 permanece com a mesma trajet´oria aqui utilizada. N˜ao ´e descartada a hip´otese de o site em quest˜ao tamb´em estar desatualizado.

Figura 4.5: Trajet´oria da linha 422 (azul) e pontos de ordens cuja linha informada pelo DataRio era tamb´em a 422, mas que receberam pontua¸c˜ao zerada para tal linha na estima-tiva (vermelho). Diferente da figura anterior, os pontos em vermelho ficaram concentrados em uma ´area pequena. Os resultados foram obtidos em teste realizado no final da tarde do dia 08/07/2017.

Uma outra possibilidade que pode ter gerado o que vimos na figura 4.4 est´a re-lacionada ao fato de o m´odulo de inferˆencia de linhas sempre considerar a ´ultima linha informada de uma ordem. Assim, caso uma ordem tivesse sua trajet´oria alterada, ela ainda assim carregaria consigo no dicion´ario Ordem os N - 1 pontos da trajet´oria ante-rior, que seriam considerados na estimativa. No entanto, tal evento n˜ao deveria acontecer

(40)

27 com tanta frequˆencia em um per´ıodo de duas horas, dura¸c˜ao do primeiro teste realizado. Tamb´em ´e plaus´ıvel supor que o DataRio tenha fornecido informa¸c˜oes incorretas, informando uma linha quando na verdade a ordem pertence a outra, ou que os ve´ıculos tenham sido for¸cados, por algum motivo, a alterar sua trajet´oria no per´ıodo do teste. A realiza¸c˜ao de obras na cidade ou quest˜oes de seguran¸ca podem ter motivado tais desvios.

Figura 4.6: Mesma compara¸c˜ao da figura 4.5, mas com o teste tendo sido realizado na parte da manh˜a do dia 10/07/2017.

Comparando os resultados das figuras 4.5 e 4.6, onde os pontos em vermelho tam-b´em representam a trajet´oria de ordens cuja linha informada pelo DataRio n˜ao obteve pontua¸c˜ao durante os testes, ´e poss´ıvel formular mais uma teoria que explique o fenˆomeno. Na figura 4.5, representa¸c˜ao de um teste realizado no final da tarde, ´e poss´ıvel perceber claramente que os pontos vermelhos est˜ao concentrados em uma regi˜ao, que poderia ser de garagem. A tese ´e refor¸cada pela figura 4.6, visualiza¸c˜ao do mesmo teste, mas realizado pela manh˜a, onde ainda se podem ver muitos pontos concentrados na mesma poss´ıvel regi˜ao de garagem, mas com outros pontos formando um percurso que liga a garagem `a verdadeira trajet´oria da linha.

De fato, n˜ao ´e poss´ıvel afirmar com certeza o que causou o desvio de algumas ordens em rela¸c˜ao `a sua linha informada. No entanto, tal an´alise ´e importante para entender os motivos que influenciam a acur´acia das estimativas realizadas por nosso sistema. Caso esses pontos de desvio (onde a pontua¸c˜ao final da linha informada foi igual a zero) fossem removidos, a acur´acia do sistema melhoraria bastante. Isso ´e observado na tabela 4.3.

(41)

N´umero de pontos Tamanho de C´elula Acerto Acerto (sem pontua¸c˜oes zeradas) 5 111x111m2 72.72% 86.29% 5 1111x1111m2 81.37% 86.94% 10 111x111m2 78.21% 87.50% 10 1111x1111m2 83.54% 89.15% 20 111x111m2 83.96% 90.71% 20 1111x1111m2 87.82% 93.52%

Tabela 4.3: Rela¸c˜ao parˆametros x Porcentagens m´edias de acerto, com e sem a elimina¸c˜ao de ordens que tiveram pontua¸c˜ao zero para a linha correta.

4.3

Integra¸

ao com outros sistemas

Diferente dos outros, esse caso de teste objetiva verificar a capacidade de integra-¸c˜ao desse sistema com outros. Para isso, foi selecionado o aplicativo Trackbus, descrito no trabalho [Rocha e Amaral 2016]. Como uma das funcionalidades do aplicativo ´e justa-mente exibir, em tempo real, posi¸c˜oes e linhas de ˆonibus cujas informa¸c˜oes s˜ao oferecidas pelo DataRio, o teste pˆode ser feito apenas realizando altera¸c˜oes pontuais no c´odigo fonte do aplicativo. A Figura 4.7 mostra uma tela do aplicativo TrackBus, que exibe dados fornecidos pelo sistema proposto nessa monografia.

Figura 4.7: Exemplo de exibi¸c˜ao dos dados fornecidos pelos sistema desenvolvido nesta monografia no Trackbus. ´Icones de cores iguais representam logs de mesma linha.

Tendo em vista que o foco do teste era analisar a comunica¸c˜ao entre as duas aplica¸c˜oes, os parˆametros utilizados n˜ao tinham tanta relevˆancia para o que se desejava

(42)

29 observar, com exce¸c˜ao da configura¸c˜ao do n´umero de resultados retornados por linha.

Diferente dos outros testes, n˜ao est´avamos interessados em analisar a precis˜ao da estimativa, mas sim na capacidade do sistema em disponibilizar os resultados obtidos. Para que a integra¸c˜ao funcionasse, era necess´ario que as informa¸c˜oes fornecidas estivessem exatamente no mesmo formato disponibilizado pelo DataRio. Sendo assim, a configura¸c˜ao utilizada para este teste est´a listada na Tabela 4.4.

Atributo V alor

N´umero de pontos analisados 5 Tamanho de cada c´elula 111m2

Considerar trajet´orias de ida e volta True Retornar mais de uma possibilidade False

Tabela 4.4: Configura¸c˜ao do sistema no teste de integra¸c˜ao com o sistema TrackBus proposto em [Rocha e Amaral 2016].

Para executar o teste, foi necess´ario alterar dois pontos no c´odigo do aplicativo Trackbus: o trecho de c´odigo que acessava informa¸c˜oes de uma linha espec´ıfica e o que bus-cava o ´ultimo log de todas as linhas presentes na base. Para isso, bastou alterar as URLs utilizadas pelo aplicativo para https://<Endere¸co IP do do sistema>/linha/<N´umero da linha> e https://<Endere¸co IP do sistema>/linhas, respectivamente.

4.3.1

Resultados obtidos

Inicialmente, verificou-se que a integra¸c˜ao n˜ao fora bem sucedida devido a um problema no formato disponibilizado pelo sistema. Ap´os alterar tal formato do arquivo de texto para JSON, o teste correu como esperado e foi poss´ıvel observar em tempo real as linhas que j´a eram informadas pelo DataRio com a adi¸c˜ao das linhas inferidas pelo sistema que desenvolvemos neste trabalho.

Foi tamb´em poss´ıvel observar que o processo de filtragem por n´umero de linha e execu¸c˜ao de outras funcionalidades do aplicativo permaneceram sem altera¸c˜oes no que diz respeito a seu funcionamento. Dessa forma, foi poss´ıvel concluir que o sistema atingiu seu objetivo de servir como fornecedor de dados para aplica¸c˜oes externas.

(43)

Cap´ıtulo 5

Conclus˜

oes

Neste trabalho propusemos um sistema de enriquecimento dos dados fornecidos pelo portal de Dados Abertos DataRio, que tem como principal objetivo estimar a infor-ma¸c˜ao das linhas dos ˆonibus em servi¸co na cidade do Rio de Janeiro, quando a mesma n˜ao ´e fornecida pelo sistema.

O sistema desenvolvido pode assim obter, transformar e distribuir os dados do DataRio ou fazer consultas de linha individualmente, e pode ser utilizado por outras aplica¸c˜oes que dependam dos dados fornecidos pelo DataRio como um componente inter-medi´ario entre a aplica¸c˜ao e o portal de dados, o que garante maior qualidade dos dados. O c´odigo completo desenvolvido durante esse estudo est´a dispon´ıvel a quem tiver interesse no reposit´orio de link https://github.com/nataliapipas/bus.

Os resultados apresentados mostram que a qualidade das estimativas ´e acima de 90% nos casos em que os ˆonibus sem informa¸c˜ao de linha est˜ao seguindo a rota de alguma linha conhecida. Tamb´em foi apresentado um estudo dos casos em que o sistema n˜ao consegue estimar corretamente as linhas e um estudo de caso do uso do sistema por uma aplica¸c˜ao de celular baseada nos dados do DataRio.

Nos pr´oximos par´agrafos discutiremos algumas limita¸c˜oes do sistema e apontare-mos dire¸c˜oes de trabalhos futuros.

(44)

31

5.1

Limita¸

oes

5.1.1

Escalabilidade

Atualmente, o projeto consegue obter, processar e disponibilizar os dados dentro da janela de tempo estabelecida como limite. Contudo, n˜ao est˜ao descartadas as possibilida-des de crescimento da frota de ˆonibus, aumento no layout das informa¸c˜oes disponibilizadas ou at´e mesmo adi¸c˜ao de novas funcionalidades `a aplica¸c˜ao. Dessa forma, n˜ao h´a garantia de que a performance do programa se manter´a aceit´avel.

Uma solu¸c˜ao para amenizar tal problema seria distribuir o processamento da apli-ca¸c˜ao para que, no caso da necessidade de aumento dos recursos dispon´ıveis, seja poss´ıvel aumentar o n´umero de n´os do cluster ao inv´es de migrar o processamento para uma m´aquina mais potente, o que seria razoavelmente mais caro. Contudo, tal alternativa demandaria uma reestrutura¸c˜ao da solu¸c˜ao para acomodar a computa¸c˜ao paralela.

5.1.2

Cobertura da cidade

Infelizmente, o baixo n´umero de linhas conhecidas pelo sistema resultou em an´alises em apenas uma pequena ´area da cidade. Assim, em um universo de 462 ˆonibus sem linha do Rio de Janeiro, uma pequena parcela de apenas 7% (ou seja 32 ordens) conseguiu ser classificada, como mostra a figura 5.1.

Figura 5.1: Propor¸c˜ao de ordens classificadas

Por outro lado, foi poss´ıvel observar nessa an´alise uma relativamente boa distribui-¸c˜ao das linhas presentes nas classifica¸c˜oes, havendo uma ligeira predominˆancia das linhas 326 (ida) e 455 (volta), como mostra a figura 5.2.

(45)

Observamos no entanto, que essa limita¸c˜ao ´e causada pela indisponibilidade da informa¸c˜ao das rotas de ˆonibus da cidade do Rio de Janeiro. Como discutido durante o texto, para contornar esse problema, utilizamos como dado de entrada do sistema as rotas estimadas pelo trabalho de [Padilha 2017] que nos forneceu apenas um subconjunto das rotas das linhas de ˆonibus da cidade para a execu¸c˜ao do projeto.

Figura 5.2: Classifica¸c˜ao realizada dos ˆonibus sem linha

5.2

Trabalhos futuros

Talvez o mais relevante trabalho futuro esteja relacionado `a adi¸c˜ao de novas rotas conhecidas ao sistema, aumentando a confiabilidade dos resultados obtidos, bem como o volume de linhas inferidas. Tal melhoramento necessitaria da gera¸c˜ao de novas linhas por parte do trabalho mencionado na se¸c˜ao 1.1 ou ent˜ao a obten¸c˜ao manual de tais linhas.

Tamb´em ´e poss´ıvel a elabora¸c˜ao de novos filtros e tratamentos para a base de dados, tais como os filtros de velocidade, inicialmente descontinuados por esse projeto, ou filtros de localiza¸c˜ao que exibissem apenas ordens pr´oximas ao usu´ario.

Como esse ´e um sistema que trabalha com a posi¸c˜ao de todos os ˆonibus da cidade em tempo real, seria tamb´em interessante pensar em algoritmos preditivos capazes de estimar tempos de deslocamento, bem como diagnosticar ´areas que n˜ao estejam sendo suficientemente cobertas, especialmente no que diz respeito ao fluxo de ˆonibus.

(46)

33

5.3

Considera¸

oes finais

A realiza¸c˜ao desse estudo mostrou ser poss´ıvel, em posse de recursos limitados, analisar uma base de dados relativamente grande e dar respostas em tempo real. Assim, ´e confirmada a possibilidade de que o sistema atue como fornecedor dos dados do DataRio de forma enriquecida, sem perda de integridade. Havendo disponibilidade de recursos, seria at´e mesmo poss´ıvel amenizar a quest˜ao de indisponibilidade do servi¸co atualmente ofertado pelo DataRio.

A integra¸c˜ao com o TrackBus permitiu uma abordagem mais pr´atica do estudo, possibilitando uma valida¸c˜ao em tempo real dos resultados, ainda que em um ambiente controlado. Tal integra¸c˜ao foi altamente relevante para o projeto pois confirma que alte-ra¸c˜oes m´ınimas s˜ao necess´arias no sistema consumidor para que o sistema fonte passe a ser o descrito aqui e que n˜ao h´a perda de consistˆencia nessa transi¸c˜ao.

Com a chegada de novos trajetos de linha conhecidos, ser´a poss´ıvel obter um re-sultado ainda mais relevante, visto que uma maior ´area da cidade ser´a coberta. Isso resultar´a tamb´em em maior acur´acia dos resultados obtidos, visto que minimiza a chance de o sistema retornar uma linha errada pelo motivo de a linha certa ainda n˜ao ter sido cadastrada.

(47)

Referˆ

encias Bibliogr´

aficas

[Barbosa et al. 2014]BARBOSA, L. et al. Vistradas: Visual analytics for urban trajectory data. In: GeoInfo. [S.l.: s.n.], 2014. p. 174–179.

[Bessa et al. 2016]BESSA, A. et al. Riobusdata: Outlier detection in bus routes of rio de janeiro. arXiv preprint arXiv:1601.06128, 2016.

[Chen, Guo e Wang 2015]CHEN, W.; GUO, F.; WANG, F.-Y. A survey of traffic data visualization. IEEE Transactions on Intelligent Transportation Systems, IEEE, v. 16, n. 6, p. 2970–2984, 2015.

[Doraiswamy et al. 2014]DORAISWAMY, H. et al. Using topological analysis to support event-guided exploration in urban data. IEEE transactions on visualization and computer graphics, IEEE, v. 20, n. 12, p. 2634–2643, 2014.

[Ferreira et al. 2013]FERREIRA, N. et al. Visual exploration of big spatio-temporal urban data: A study of new york city taxi trips. IEEE Transactions on Visualization and Computer Graphics, IEEE, v. 19, n. 12, p. 2149–2158, 2013.

[Freire et al. 2014]FREIRE, J. et al. Riding from urban data to insight using new york city taxis. IEEE Data Eng. Bull., v. 37, n. 4, p. 43–55, 2014.

[IBGE 2016]IBGE. CENSO Demogr´afico 2010. ´Ultimo Acesso: Abril 2016. http://goo. gl/NPvw6L.

[Onilinhas - Itinerarios]ONILINHAS - Itinerarios. https://www.onilinhas.com.br/ rio-de-janeiro/itinerario/linha-455/. ´Ultimo acesso em 11/07/2017.

[Padilha 2017]PADILHA, D. Informa¸c˜oes sobre linhas de ˆonibus usando hist´oricos de gps. 2017.

(48)

35 [Raymond e Imamichi 2016]RAYMOND, R.; IMAMICHI, T. Bus trajectory identifica-tion by map-matching. In: IEEE. Pattern Recogniidentifica-tion (ICPR), 2016 23rd Internaidentifica-tional Conference on. [S.l.], 2016. p. 1618–1623.

[Rocha e Amaral 2016]ROCHA, M. V. Cunha da; AMARAL, R. P. Trackbus: Um apli-cativo de apoio aos usu´arios de ˆonibus ba cidade do rio de janeiro. 2016.

[Schettino 2016]SCHETTINO, B. de P. An infrastructure for bus data analyses applied to the rio de janeiro city. 2016.

[Wang et al. 2014]WANG, Z. et al. Visual exploration of sparse traffic trajectory data. IEEE transactions on visualization and computer graphics, IEEE, v. 20, n. 12, p. 1813– 1822, 2014.

Referências

Documentos relacionados

Por fim, na terceira parte, o artigo se propõe a apresentar uma perspectiva para o ensino de agroecologia, com aporte no marco teórico e epistemológico da abordagem

como enfoque o processo da reforma educativa em curso em Angola. Para isso, será realizada a análise à percepção dos professores e directores de escola face à

[r]

O Plano de Metas Compromisso Todos pela Educação, de 2007, e a Política Nacional de Formação de Profissionais do Magistério da Educação Básica, instituída em 2009 foram a base

Ressalta-se que mesmo que haja uma padronização (determinada por lei) e unidades com estrutura física ideal (física, material e humana), com base nos resultados da

A etapa de sensibilização da equipe escolar se desdobrará em duas ações: apresentação do Programa e de seus resultados à comunidade escolar: A etapa de reconstrução

Na apropriação do PROEB em três anos consecutivos na Escola Estadual JF, foi possível notar que o trabalho ora realizado naquele local foi mais voltado à

O Documento Orientador da CGEB de 2014 ressalta a importância do Professor Coordenador e sua atuação como forma- dor dos professores e que, para isso, o tempo e