DEV Community

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

Posted on

4

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

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay