DEV Community

Cover image for Tutorial: Geolocalização utilizando Bing Maps e Geocoder (Python)
pip install pygineer 🦄
pip install pygineer 🦄

Posted on

Tutorial: Geolocalização utilizando Bing Maps e Geocoder (Python)

Neste tutorial, você vai aprender como encontrar as coordenadas (latitude e longitude) de um endereço a partir do valor de CEP em poucas linhas de código, utilizando a API do Bing Maps e a biblioteca Python Geocoder.

A ideia do tutorial surgiu quando tive que implementar uma solução parecida em um projeto na minha equipe, e passei um bom tempo tentando encontrar a melhor solução para endereços brasileiros.

Para que possamos utilizar dados anonimizados, vamos nos basear no dataset do projeto open source OpenAddresses, que fornece endereços em diferentes países ao redor do mundo, e, neste caso, olhando especificamente para a América do Sul.

No entanto, para nosso caso em específico, preparei um dataset que será utilizado neste tutorial: address.csv


API Bing Maps

Como a API fornecida pelo Google Maps possui limitações para o plano gratuito, decidi optar pela API da Bing Maps, que além de ser gratuita, tem uma forma muito intuitiva para a criação de chaves de acesso.

No site, basta fazer o cadastro de usuário, caso ainda não possua uma conta registrada. Seremos então redirecionados para o portal Dev Center. Lá, basta selecionar My account > My keys.

Image description

No menu das chaves de acesso, clique para criar uma nova chave:

Image description

Para a criação da chave, você pode fornecer um nome associado à sua aplicação, bem como a URL de acesso (que não usaremos neste tutorial), o tipo de chave e o tipo de aplicação.

Image description

Após criada, a chave de acesso ficará disponível no menu My keys para que possa ser utilizada nas suas aplicações.

Image description


Colocando a mão na massa com Geocoder

Tendo o valor da chave de acesso, podemos colocar a mão na massa. Para este tutorial, foi utilizado o Google Colab, porém, você pode utilizar o Jupyter Notebook ou o seu editor de texto/IDE preferidos.

Começaremos com a transformação do dataset em um DataFrame pandas:

import pandas as pd

df_address = pd.read_csv('address.csv')
Enter fullscreen mode Exit fullscreen mode

Faremos a instalação da biblioteca utilizando o pacote Pip:

!pip install geocoder
Enter fullscreen mode Exit fullscreen mode

Por fim, utilizaremos o Geocoder para criar duas novas colunas no nosso DataFrame para popular os valores das coordenadas naquele determinado CEP. A solução será iterar cada registro utilizando o método iterrows() do pandas:

import geocoder

MY_KEY = '<put_api_access_key_here>'

df_address['latitude'] = ""
df_address['longitude'] = ""

for index, row in df_address.iterrows():
  g = geocoder.bing(location = (row['postcode']).replace('-', ''), 
                                postalCode = (row['postcode']).replace('-', ''), 
                                locality = row['city'], 
                                adminDistrict = row['state'], 
                                countryRegion = 'BRA', 
                                key = MY_KEY)

  df_address['latitude'].iloc[index] = g.lat
  df_address['longitude'].iloc[index] = g.lng
Enter fullscreen mode Exit fullscreen mode

Com isso, o resultado final será a informação completa sobre cada endereço contido no DataFrame. Informações sobre coordenadas podem nos auxiliar para cálculo de distância entre endereços, como por exemplo.

Caso você queira exportar novamente para o formato CSV, basta utilizar o método do pandas to_csv(), também sendo possível aplicar o to_excel() para gerar uma planilha eletrônica com a extensão “.xlsx”.

df_address.to_csv('complete_address.csv', index=False)
Enter fullscreen mode Exit fullscreen mode

Pronto! Muito simples, não é? :)

Após algumas tentativas com diversas bibliotecas Python voltadas para geolocalização, a Geocoder foi a que funcionou melhor para o meu projeto, visto que é bem completa e possibilita a utilização de diversos provedores existentes por aí.

Espero que tenham gostado do tutorial e que possa auxiliá-los em projetos futuros. Nos vemos por aí! 💜


Para ler a documentação completa do Geocoder, acesse o link a seguir:

Caso você queira o código completo, segue o link do notebook no GitHub: Bing_Maps_and_Geocoder_Tutorial.ipynb

Top comments (0)