Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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?

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