Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como identificar a loja mais próxima do cliente (ou a distância entre 2 locais) a partir do CEP (sem API)

Visualizações: 2.288 views
Tempo de Leitura: 22 minutos

Fala pessoal!

Nesse artigo bem interessante, vou compartilhar com vocês uma solução bem criativa para identificar a loja mais próxima do cliente a partir do CEP desse cliente, sem utilizar API. Toda a “mágica” está no fato de que o código do CEP parece ser calculado conforme a distância daquele local e por causa disso, encontrar a loja mais próxima pode ser algo absurdamente simples e eficaz. E quem compartilhou comigo que isso funcionava foi o Lucas Galon, uns 4 anos atrás.

O que iremos aprender a fazer nesse post:

Por quê isso funciona?

Segundo a documentação oficial dos Correios sobre o CEP, cada número do CEP corresponde a uma Região, Sub-região, Setor, Subsetor e Divisor de Subsetor, conforme imagem abaixo:

Então existe uma lógica por trás desses números sim, e isso também reflete em o quanto um CEP é fisicamente próximo do outro baseado no número do CEP.

Importante: O CEP ele é atribuído como se fosse um círculo, então se você tiver muitas lojas próximas do CEP que você está buscando, na mesma área, pode ser que retorne uma loja bem próxima, mas essa loja pode não ser a mais próxima possível, conforme vou demonstrar nos exemplos abaixo.

Para retornar a informação exata, aí teria que usar a latitude e longitude ou alguma API para calcular a distância, mas além de demorar bem mais para processar isso para várias lojas, o código ainda seria bem mais complexo.

Se você precisa de calcular a distância exata, sem margem para erro, você pode tentar algumas dessas abordagens:

Criação da base de testes

Para a criação de uma base de dados para demonstração e ser o mais próximo possível de uma base real para ajudar a pensar em como aplicar no seu cenário e no seu dia a dia. Para isso, usei a base real das lojas do Carrefour, que extraí do site https://www.carrefour.com.br/localizador-de-lojas, desmarquei todas as opções de filtros e cliquei no botão “Mostrar mais lojas” até que todas as lojas estejam aparecendo na página.

Após isso, executei o script jQuery abaixo:

Depois eu copiei o resultado e colei num arquivo CSV e depois importei esse arquivo no SQL Server.

Script de importação da base:

Como identificar a loja mais próxima do cliente a partir do CEP

E agora, vamos colocar em prática esse cálculo, que é basicamente, transformar os 2 CEP’s (o das lojas e o que será buscado) para o tipo inteiro, calcular a diferença numérica entre os CEP’s das lojas e o cep que será buscado e exigir a loja que tiver a menor diferença. Simples assim.

Exemplo utilizando um CEP do Espírito Santo:

E a loja Carrefour mais próxima é a:

Muito legal, né? Vamos fazer outro teste. Se eu estiver na Universidade Anhembi Morumbi – Câmpus Vila Olímpia (CEP 04546-001), a loja Carrefour mais próxima é a:

E será que é verdade?

Funcionou! Que legal! Mas nem tudo são flores.. Infelizmente, essa cálculo é bem aproximado mas não é exato! Existem algumas situações que não trazem a loja mais próxima possível (embora retorne sempre uma loja relativamente próxima)

Exemplo: Farol Santander (CEP 01014-900)

Para esse CEP, a consulta retornou a loja Express Senador Queirós, que não está longe do Farol Santander, mas não é a loja mais perto possível, conforme consulta ao Google Maps:

Para facilitar a utilização desse cálculo, podemos criar uma função para isso:

E agora vamos utilizar essa função para o CEP 20921-060 (Estádio São Januário):

Conferindo o resultado:

E sucesso também 🙂

Bom pessoal, espero que tenham gostado dessa dica, que permite oferecer uma solução rápida, simples e performática para calcular a loja mais próxima do cliente a partir do CEP, sem utilizar API e retornar dados bem aproximados.

Um grande abraço e até o próximo post.