Geolocalização
Realtime
Gustavo Castro
Josué Lino Bragagnolo
XI Semana Acadêmica de Sistemas de Informação - ULBRA - Carazinho - RS (2019)
Autores
Gustavo Castro
Tecnólogo em Sistemas para Internet
Especializando em Ciência de Dados
Desenvolvedor PHP
Github: github.com/debgustavocastro
Linkedin: linkedin.com/in/gustavocastro78
SlideShare: slideshare.net/GustavoCastro35
E-mail: deb.gustavocastro@gmail.com
2
Autores
Josué Lino Bragagnolo
Cientista da Computação
Analista de Redes / SysAdmin
Linkedin: linkedin.com/josuebragagnolo
E-mail: josue@atua.com.br
3
Um estudo de caso de monitoramento e rastreamento
frota
Geolocalização
Realtime
4
O problema
● Cliente precisa controlar a frota de veículos
○ Projeção de rotas e estimativa de tempo do percurso
○ Necessidade de saber o posicionamento e situação dos
veículos
○ Dados atualizados em tempo real
5
Arquitetura Existente
● Rastreadora
○ Disponibiliza os dados via Webservice
● Processo Atualização
○ Consome os dados do Webservice da rastreadora
○ Persiste os dados no BD
● Cliente
○ Realiza requisições frentes ao servidor
○ Monta uma tabela com os dados obtidos
6
Arquitetura Existente
7
Fonte: Dos Autores
Aplicação cliente
8
Fonte: Dos Autores
Problemas - Arquitetura existente
● Requisições frequentes
○ Várias ou nenhuma atualização
○ Processo lento (consulta no BD)
● Pouca usabilidade
○ Muitos dados na tela
9
Objetivos projeto
● Facilitar a visualização dos dados gerais
● Possibilitar visualização dos acontecimentos e realizar
previsões
○ Exibir a situação e a posição dos veículos
○ Criar uma estimativa de tempo de trajeto baseado na rota
● Manter os dados sempre atualizados
○ Ajustar a arquitetura existente para entregar os dados mais próximos
da realidade de tempo
● Realizar os itens acima de maneira mais performática
10
Solução - Dados em tempo real
● Arquitetura Cliente/Servidor
○ Sempre inicia no cliente
■ Cliente pergunta
■ Servidor responde
○ Canal unidirecional
11
Fonte: https://medium.com
Solução - Dados em tempo real
● Téc. de realtime
○ Polling
○ Streaming SIMD
Extensions
○ Websocket
12
Fonte: https://hpbn.co/websocket/
Solução - Dados em tempo real
● Websocket
○ Abre uma única comunicação bidirecional
○ PHP - Ratchet
■ Fácil controle sobre múltiplas conexões simultâneas
■ Escalável
■ Performático
13
Solução - Arquitetura - Back-end
● Atualização na aplicação
cliente e persistência de
dados na mesma requisição
● Atualização apenas de
dados necessários
● BD mais performático
● Dados em “tempo real”
14
Fonte: Dos Autores
Solução - Arquitetura - Front-end
● Repassa os dados da rastreadora
para API’s do Google
○ Google Maps
■ Tráfego na região
■ Trajeto
■ Plota mapa no cliente
○ Matrix API
■ Distância
■ Estimativa de tempo do trajeto
15
Fonte: Dos Autores
Problema - Custos
Vl. request Qt. Itens
request
Qt. exec. p/ dia Qt. request p/
dia
Vl. diário Vl. mensal
(CONVERTIDO)
U$0,005 950* 144 136800 U$ 684 R$ 97.470,00
16
Fonte: Dos Autores
Requisitos para alternativa
● Financeiramente viável
● Cálculos de trajetórias
○ Roteirização
○ Distância
○ Tempo
● Apresentação dados para usuário
○ Mapa
17
18
Fonte: Dos Autores
Fonte: https://leafletjs.com/
Fonte: http://project-osrm.org
Fonte: https://nominatim.org/
Soluções utilizadas
● Funcionalidades
○ Construção de rotas
○ Distância entre pontos
○ Estimativa de tempo entre
os pontos
● Prós
○ Open Source
○ Self Hosted
● Contras
○ Resolve apenas coordenadas
(latitude, longitude)
19
Fonte: http://project-osrm.org/
Exemplo Request / Response
20
Fonte: Dos Autores
Soluções utilizadas
● Funcionalidades
○ Resolve endereços em
coordenadas e vice-versa
● Prós
○ Open Source
○ Self Hosted
○ Performático
○ PHP / PostgreSQL / PostGIS
● Contra
○ Base de dados diferente do OSRM
21
Fonte: https://nominatim.org/
Nominatim
22
Fonte: Dos Autores
Exemplo Request / Response
23
Fonte: Dos Autores
Soluções utilizadas
● GeoRoutes API
○ Desenvolvido internamente
○ Servidor REST - Node.js
○ Centralizador
■ OSRM/Nominatim
○ Calcula velocidade
24
Fonte: Dos Autores
Soluções utilizadas
● OpenStreetMap
○ Mapa, tile
● Leaflet
○ Framework
○ Interatividade com o mapa
● Prós
○ Open Source
25
Fonte: https://leafletjs.com/
Resultados
✓ Interface amigável
○ Visualização dos principais dados de forma organizada
✓ Aplicação performática
✓ Baixo custo em relação em relação a outras ferramentas
~ Dados em tempo real
○ Impasse com as rastreadoras que não oferecem webhooks
26
F
27
Fonte: Dos Autores
Dúvidas?
● Websocket
● Geolocation
● Frameworks
● PHP
● PostgreSQL
● Linux / Infra
● ...
28
29
www.atua.com.br
Referências
http://project-osrm.org/
https://medium.com/system-design-blog/long-polling-vs-websockets-vs-server-sent-events-c43ba96df7c1
https://nominatim.org/
https://hpbn.co/websocket/
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-osrm-server-on-ubuntu-14-04
http://download.geofabrik.de/
https://leafletjs.com/
https://www.openstreetmap.org
https://postgis.net/
30

Geolocalização Realtime - Um estudo de caso de um sistema de monitoramento em tempo real