Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
Estou tentando resolver uma situação e gostaria de saber se alguém já passou por isso ou algo semelhante.
Preciso mostrar em uma tabela a distância percorrida entre os Clientes, isso seria uma monitoração dos representantes comerciais, na verdade eu teria 2 situações:
1) Distância planejada: No caso eu tenho uma tabela aonde e lançada a rota dos representantes que ele deve visitar por data conforme segue abaixo exemplo, preciso calcular a distancia entre eles, no caso inicio 0 m ate cliente 1 200 m, do cliente 1 ate cliente 2 tem 500 m, do cliente 2 ate o 3 1000 m e assim por diante.
des_cliente | dta_rota | nro_latitude | nro_longitude | Distancia Planejada |
Clientes 1 | 2014-12-15 | -23,5561577 | -46,6585063 | 200 m |
Clientes 2 | 2014-12-15 | -23,5603345 | -46,6534898 | 500 m |
Clientes 3 | 2014-12-15 | -23,45354 | -46,6017937 | 1000 m |
Clientes 4 | 2014-12-15 | -23,4943821 | -46,6460575 | 0 |
Clientes 5 | 2014-12-15 | -23,5433046 | -46,654467 | 0 |
2) Distância percorrida: no caso eu tenho uma tabela aonde é lançada pontos de captura de GPS, eu teria que fazer algo parecido com a situação de cima, mas pegando os pontos aonde ele foi percorrendo, pois assim teremos o cruzamento entre rota planejada e realmente percorrida para ver se o representante não esta saindo muito da rota dele. eu teria que somar a leitura do primeiro ponto ate a chegada ao cliente e depois entre clientes, fora esses campos eu tenho o identificador do usuário e do cliente e no campo des_obs eu tenho o registro de chegada no Cliente, entao teria que pegar a distância ponto 0 ate VEND - SUPERMERCADO 1 300 m, do VEND - SUPERMERCADO 1 ate VEND - SUPERMERCADO 3 800 m,e assim por diante
exemplo:
dta_evento | dta_gps | vlr_lat | vlr_lon | des_obs |
2014-12-15 08:38:56 | 2014-12-15 10:38:55 | -23,4554 | -46,6028 | Leitura GPS |
2014-12-15 08:41:50 | 2014-12-15 10:39:15 | -23,4557 | -46,6023 | VEND - SUPERMERCADO 1 |
2014-12-15 08:43:23 | 2014-12-15 10:39:15 | -23,4557 | -46,6023 | Leitura GPS |
2014-12-15 08:50:00 | 2014-12-15 10:50:00 | -23,4556 | -46,6016 | Leitura GPS |
2014-12-15 08:55:01 | 2014-12-15 10:55:00 | -23,4643 | -46,6045 | VEND - SUPERMERCADO 2 |
2014-12-15 09:00:26 | 2014-12-15 11:00:25 | -23,4737 | -46,6139 | Leitura GPS |
2014-12-15 09:05:30 | 2014-12-15 11:05:29 | -23,4784 | -46,6213 | Leitura GPS |
2014-12-15 09:10:34 | 2014-12-15 11:10:34 | -23,483 | -46,6353 | VEND - SUPERMERCADO 3 |
2014-12-15 09:15:35 | 2014-12-15 11:15:35 | -23,4916 | -46,6496 | Leitura GPS |
2014-12-15 09:21:15 | 2014-12-15 11:21:15 | -23,4946 | -46,6461 | Leitura GPS |
No documento tenho que apresentar da seguinte forma:
Agradeço se puderem ajudar com dicas e sugestões.
Olá Márcio,
não sei se te ajuda, mas esses tempos precisei fazer cálculos de distância... a distância geodésica entre dois pontos (linha reta), pode ser calculada no próprio Qlikview. A fórmula que eu usei foi a seguinte:
6372.795477598 * acos((sin(Latitude_Vendedor) * sin(Latitude_Cliente)) + (cos(Latitude_Vendedor) * cos(Latitude_Cliente) * cos(Longitude_Cliente - Longitude_Vendedor)))
Espero que ajude.
Ola Marcio,
Voce esta usando qual base de dados? Eu pergunto isso porque se for SQL Server e dependendo da versao existe um tipo de dados especial 'geography' que tem varias funcoes envolvendo coordernadas geograficas.
Abracos,
Cesar
Tudo bem Cesar!!
Muito obrigado pelo auxílio.
A versão é
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Teoricamente a solução deve se conectar em algum sistema de georeferencia e calcular a distância entre dois pontos?
Sem problemas Marcio,
Otimo, entao se possivel eu te aconselho a calcular as distancias na base de dados. Isso pode ser feito utilizando uma trigger 'on insert/update' por exemplo, o codigo abaixo e' um exemplo de uso do recurso do SQL Server:
DECLARE @myPoint geography;
SET @myPoint = geography::STGeomFromText('POINT(28.8801844444445 41.0299561111109)',4326);
SELECT TOP 8 id,
@myPoint.STDistance(geom.ToString()) as dist
FROM MY_DB
ORDER BY dist
Se caso nao for possivel ai tera que calcular no QlikView mesmo.
Olá Yuri, tudo bem!
Pois é, estou com dúvidas quanto a isso, pois eu gostaria de fazer direto no Qlik, como tenho os campos de latitude e longitude passaria esses valores, mas fico pensando em como pegar o calculo entre clientes ou entre os pontos que coleto do GPS.
Hoje já tenho um campo calculado que pega a distância aonde foi feito o pedido de venda ou justificativa de não venda, mas esse calculo é simples porque pego as latitudes de rota e de visita, vou colocar a abaixo e assim monitoramos se ele realmente esta no cliente ou de casa ou longe, só que agora para fechar essa monitoração, preciso saber o que esta programado e o que realmente ele percorreu, não sei se fui bem claro.
LOAD
[%Chave GPSxRotas],
(6371*ACOS(COS(PI()*(90-[Latitude visitação])/180)*COS((90-[Latitude Rotas])*PI()/180)+
SIN((90-[Latitude visitação])*PI()/180)*
SIN((90-[Latitude Rotas])*PI()/180)*COS(([Longitude Rotas]-[Longitude visitação])*PI()/180))) * 1000 as Distância
resident [Gps tmp];
Cesar,
Vou testar a tua sugestão, vou ver bem como funciona isso no SQL Server.
Assim que testar coloco aqui, muito obrigado por enquanto meu amigo.
Olá Márcio,
não sei se te ajuda, mas esses tempos precisei fazer cálculos de distância... a distância geodésica entre dois pontos (linha reta), pode ser calculada no próprio Qlikview. A fórmula que eu usei foi a seguinte:
6372.795477598 * acos((sin(Latitude_Vendedor) * sin(Latitude_Cliente)) + (cos(Latitude_Vendedor) * cos(Latitude_Cliente) * cos(Longitude_Cliente - Longitude_Vendedor)))
Espero que ajude.
Olá Juliana,
Muito obrigado pela ajuda, vou testar essa também, assim que obtiver o retorno coloco aqui.
valeu!
Dê uma olhadinha nisso também...
A API da Matriz de distâncias do Google - Serviços da Web da API do Google Maps — Google Developers