Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

marcio150972
Contributor

Calculo distância percorrida entre Clientes

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_clientedta_rotanro_latitudenro_longitudeDistancia Planejada
Clientes 12014-12-15        -23,5561577-46,6585063200 m
Clientes 22014-12-15        -23,5603345-46,6534898500 m
Clientes 32014-12-15        -23,45354-46,60179371000 m
Clientes 42014-12-15        -23,4943821-46,64605750
Clientes 52014-12-15        -23,5433046-46,6544670

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_eventodta_gpsvlr_latvlr_londes_obs
2014-12-15 08:38:562014-12-15 10:38:55-23,4554-46,6028Leitura GPS
2014-12-15 08:41:502014-12-15 10:39:15-23,4557-46,6023VEND - SUPERMERCADO 1
2014-12-15 08:43:232014-12-15 10:39:15-23,4557-46,6023Leitura GPS
2014-12-15 08:50:002014-12-15 10:50:00-23,4556-46,6016Leitura GPS
2014-12-15 08:55:012014-12-15 10:55:00-23,4643-46,6045VEND - SUPERMERCADO 2
2014-12-15 09:00:262014-12-15 11:00:25-23,4737-46,6139Leitura GPS
2014-12-15 09:05:302014-12-15 11:05:29-23,4784-46,6213Leitura GPS
2014-12-15 09:10:342014-12-15 11:10:34-23,483-46,6353VEND - SUPERMERCADO 3
2014-12-15 09:15:352014-12-15 11:15:35-23,4916-46,6496Leitura GPS
2014-12-15 09:21:152014-12-15 11:21:15-23,4946-46,6461Leitura GPS

No documento tenho que apresentar da seguinte forma:


Agradeço se puderem ajudar com dicas e sugestões.

1 Solution

Accepted Solutions
juliana_campagn
Contributor

Re: Calculo distância percorrida entre Clientes

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.

15 Replies
cesaraccardi
Valued Contributor

Re: Calculo distância percorrida entre Clientes

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

marcio150972
Contributor

Re: Calculo distância percorrida entre Clientes

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)

Re: Calculo distância percorrida entre Clientes

Teoricamente a solução deve se conectar em algum sistema de georeferencia e calcular a distância entre dois pontos?

Highlighted
cesaraccardi
Valued Contributor

Re: Calculo distância percorrida entre Clientes

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.

marcio150972
Contributor

Re: Calculo distância percorrida entre Clientes

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];

marcio150972
Contributor

Re: Calculo distância percorrida entre Clientes

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.

juliana_campagn
Contributor

Re: Calculo distância percorrida entre Clientes

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.

marcio150972
Contributor

Re: Calculo distância percorrida entre Clientes

Olá Juliana,

Muito obrigado pela ajuda, vou testar essa também, assim que obtiver o retorno coloco aqui.

valeu!

juliana_campagn
Contributor

Re: Calculo distância percorrida entre Clientes